diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 7e4e0ee8..2264cc70 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -7,7 +7,7 @@ body: id: bug-image attributes: label: Image and version of the image where the issue happens - placeholder: Ubuntu 22.04 + placeholder: AlmaLinux 9 validations: required: true diff --git a/.github/workflows/ubuntu.yaml b/.github/workflows/ubuntu.yaml deleted file mode 100644 index a637b3b1..00000000 --- a/.github/workflows/ubuntu.yaml +++ /dev/null @@ -1,123 +0,0 @@ -name: "Ubuntu: Build and push toolbx images" - -permissions: read-all - -on: - pull_request: - branches: - - main - paths: - - ubuntu/** - - .github/workflows/ubuntu.yaml - push: - branches: - - main - paths: - - ubuntu/** - - .github/workflows/ubuntu.yaml - schedule: - - cron: '0 0 * * MON' - -env: - distro: 'ubuntu' - distro_pretty: 'Ubuntu' - latest_release: '23.10' - platforms: 'linux/amd64, linux/arm64' - registry: 'quay.io/toolbx-images' - -# Prevent multiple workflow runs from racing to ensure that pushes are made -# sequentialy for the main branch. Also cancel in progress workflow runs for -# pull requests only. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - -jobs: - build-push-images: - strategy: - matrix: - release: ['16.04', '18.04', '20.04', '22.04', '23.04', '23.10'] - - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up QEMU for multi-arch builds - shell: bash - run: | - sudo apt update - sudo apt install qemu-user-static - - - name: Build container image - uses: redhat-actions/buildah-build@v2 - if: env.latest_release != matrix.release - with: - platforms: ${{ env.platforms }} - context: ${{ env.distro }}/${{ matrix.release }} - image: ${{ env.distro }}-toolbox - tags: ${{ matrix.release }} - containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile - layers: false - oci: true - - - name: Build container image (latest tag) - uses: redhat-actions/buildah-build@v2 - if: env.latest_release == matrix.release - with: - platforms: ${{ env.platforms }} - context: ${{ env.distro }}/${{ matrix.release }} - image: ${{ env.distro }}-toolbox - tags: ${{ matrix.release }} latest - containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile - layers: false - oci: true - - - name: Push to Container Registry - uses: redhat-actions/push-to-registry@v2 - id: push - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release - with: - username: ${{ secrets.BOT_USERNAME }} - password: ${{ secrets.BOT_SECRET }} - image: ${{ env.distro }}-toolbox - registry: ${{ env.registry }} - tags: ${{ matrix.release }} - - - name: Push to Container Registry (latest tag) - uses: redhat-actions/push-to-registry@v2 - id: push-latest - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release - with: - username: ${{ secrets.BOT_USERNAME }} - password: ${{ secrets.BOT_SECRET }} - image: ${{ env.distro }}-toolbox - registry: ${{ env.registry }} - tags: ${{ matrix.release }} latest - - - name: Login to Container Registry - uses: redhat-actions/podman-login@v1 - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' - with: - registry: ${{ env.registry }} - username: ${{ secrets.BOT_USERNAME }} - password: ${{ secrets.BOT_SECRET }} - - - uses: sigstore/cosign-installer@v3.3.0 - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' - - - name: Sign container image - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release - run: | - cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} - env: - COSIGN_EXPERIMENTAL: false - COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} - - - name: Sign container image (latest) - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release - run: | - cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} - env: - COSIGN_EXPERIMENTAL: false - COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} diff --git a/README.md b/README.md index fd06bfc8..2ff48ad1 100644 --- a/README.md +++ b/README.md @@ -122,24 +122,46 @@ directly use the commands below: $ toolbox enter rockylinux-toolbox-8 ``` -- [Ubuntu]: +- [Ubuntu]: The images are now maintained as part of [Toolbx] ([GitHub]) ([repo + on Quay.io](https://quay.io/repository/toolbx/ubuntu-toolbox)). Usage: ``` - $ toolbox create --image quay.io/toolbx-images/ubuntu-toolbox:23.10 + $ toolbox create --distro ubuntu --release 23.10 $ toolbox enter ubuntu-toolbox-23.10 - $ toolbox create --image quay.io/toolbx-images/ubuntu-toolbox:23.04 + $ toolbox create --distro ubuntu --release 23.04 $ toolbox enter ubuntu-toolbox-23.04 - $ toolbox create --image quay.io/toolbx-images/ubuntu-toolbox:22.04 + $ toolbox create --distro ubuntu --release 22.04 $ toolbox enter ubuntu-toolbox-22.04 - $ toolbox create --image quay.io/toolbx-images/ubuntu-toolbox:20.04 + $ toolbox create --distro ubuntu --release 20.04 $ toolbox enter ubuntu-toolbox-20.04 - $ toolbox create --image quay.io/toolbx-images/ubuntu-toolbox:18.04 + $ toolbox create --distro ubuntu --release 18.04 $ toolbox enter ubuntu-toolbox-18.04 - $ toolbox create --image quay.io/toolbx-images/ubuntu-toolbox:16.04 + $ toolbox create --distro ubuntu --release 16.04 + $ toolbox enter ubuntu-toolbox-16.04 + ``` + + Or, alternatively: + ``` + $ toolbox create --image quay.io/toolbx/ubuntu-toolbox:23.10 + $ toolbox enter ubuntu-toolbox-23.10 + + $ toolbox create --image quay.io/toolbx/ubuntu-toolbox:23.04 + $ toolbox enter ubuntu-toolbox-23.04 + + $ toolbox create --image quay.io/toolbx/ubuntu-toolbox:22.04 + $ toolbox enter ubuntu-toolbox-22.04 + + $ toolbox create --image quay.io/toolbx/ubuntu-toolbox:20.04 + $ toolbox enter ubuntu-toolbox-20.04 + + $ toolbox create --image quay.io/toolbx/ubuntu-toolbox:18.04 + $ toolbox enter ubuntu-toolbox-18.04 + + $ toolbox create --image quay.io/toolbx/ubuntu-toolbox:16.04 $ toolbox enter ubuntu-toolbox-16.04 ``` diff --git a/ubuntu/16.04/Containerfile b/ubuntu/16.04/Containerfile deleted file mode 100644 index 3da776a9..00000000 --- a/ubuntu/16.04/Containerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM docker.io/library/ubuntu:16.04 - -LABEL com.github.containers.toolbox="true" \ - name="ubuntu-toolbox" \ - version="16.04" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Ubuntu toolbox containers" \ - maintainer="Ievgen Popovych " - -# Remove apt configuration optimized for containers -# Remove docker-gzip-indexes to help with "command-not-found" -RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages - -# Enable myhostname nss plugin for clean hostname resolution without patching -# hosts (at least for sudo), add it right after 'files' entry. We expect that -# this entry is not present yet. Do this early so that package postinst (which -# adds it too late in the order) skips this step -RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf - -# Install ubuntu-minimal & ubuntu-standard -# Ask resolvconf maintainer script not to touch resolve.conf file -# Install extra packages as well as libnss-myhostname -COPY extra-packages / -RUN apt-get update && \ - echo "resolvconf resolvconf/linkify-resolvconf boolean false" | debconf-set-selections && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - ubuntu-minimal ubuntu-standard \ - libnss-myhostname \ - $(cat extra-packages | xargs) && \ - rm -rd /var/lib/apt/lists/* -RUN rm /extra-packages - -# Allow authentication with empty password, promptless -RUN sed -i '/^auth.*pam_unix.so/s/nullok_secure/try_first_pass nullok/' /etc/pam.d/common-auth - -# Fix empty bind-mount to clear selinuxfs (see #337) -RUN mkdir /usr/share/empty diff --git a/ubuntu/16.04/extra-packages b/ubuntu/16.04/extra-packages deleted file mode 100644 index 5e917e85..00000000 --- a/ubuntu/16.04/extra-packages +++ /dev/null @@ -1,8 +0,0 @@ -curl -git -gnupg2 -keyutils -tree -unzip -zip -zsh diff --git a/ubuntu/18.04/Containerfile b/ubuntu/18.04/Containerfile deleted file mode 100644 index 21e7f442..00000000 --- a/ubuntu/18.04/Containerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM docker.io/library/ubuntu:18.04 - -LABEL com.github.containers.toolbox="true" \ - name="ubuntu-toolbox" \ - version="18.04" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Ubuntu toolbox containers" \ - maintainer="Ievgen Popovych " - -# Remove apt configuration optimized for containers -# Remove docker-gzip-indexes to help with "command-not-found" -RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages - -# Enable myhostname nss plugin for clean hostname resolution without patching -# hosts (at least for sudo), add it right after 'files' entry. We expect that -# this entry is not present yet. Do this early so that package postinst (which -# adds it too late in the order) skips this step -RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf - -# Restore documentation but do not upgrade all packages -# Install extra packages as well as libnss-myhostname -COPY extra-packages / -RUN sed -Ei '/apt-get (update|upgrade)/s/^/#/' /usr/local/sbin/unminimize && \ - apt-get update && \ - yes | /usr/local/sbin/unminimize && \ - DEBIAN_FRONTEND=noninteractive apt-get -y install \ - ubuntu-minimal ubuntu-standard \ - libnss-myhostname \ - $(cat extra-packages | xargs) && \ - rm -rd /var/lib/apt/lists/* -RUN rm /extra-packages - -# Allow authentication with empty password, promptless -RUN sed -i '/^auth.*pam_unix.so/s/nullok_secure/try_first_pass nullok/' /etc/pam.d/common-auth - -# Fix empty bind-mount to clear selinuxfs (see #337) -RUN mkdir /usr/share/empty diff --git a/ubuntu/18.04/extra-packages b/ubuntu/18.04/extra-packages deleted file mode 100644 index 5e917e85..00000000 --- a/ubuntu/18.04/extra-packages +++ /dev/null @@ -1,8 +0,0 @@ -curl -git -gnupg2 -keyutils -tree -unzip -zip -zsh diff --git a/ubuntu/20.04/Containerfile b/ubuntu/20.04/Containerfile deleted file mode 100644 index 90605128..00000000 --- a/ubuntu/20.04/Containerfile +++ /dev/null @@ -1,41 +0,0 @@ -FROM docker.io/library/ubuntu:20.04 - -LABEL com.github.containers.toolbox="true" \ - name="ubuntu-toolbox" \ - version="20.04" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Ubuntu toolbox containers" \ - maintainer="Ievgen Popovych " - -# Remove apt configuration optimized for containers -# Remove docker-gzip-indexes to help with "command-not-found" -RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages - -# Enable myhostname nss plugin for clean hostname resolution without patching -# hosts (at least for sudo), add it right after 'files' entry. We expect that -# this entry is not present yet. Do this early so that package postinst (which -# adds it too late in the order) skips this step -RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf - -# Restore documentation but do not upgrade all packages -# Install ubuntu-minimal & ubuntu-standard -# Install extra packages as well as libnss-myhostname -COPY extra-packages / -RUN sed -Ei '/apt-get (update|upgrade)/s/^/#/' /usr/local/sbin/unminimize && \ - apt-get update && \ - yes | /usr/local/sbin/unminimize && \ - DEBIAN_FRONTEND=noninteractive apt-get -y install \ - ubuntu-minimal ubuntu-standard \ - libnss-myhostname \ - $(cat extra-packages | xargs) && \ - rm -rd /var/lib/apt/lists/* -RUN rm /extra-packages - -# Allow authentication with empty password, promptless -RUN sed -i '/^auth.*pam_unix.so/s/nullok_secure/try_first_pass nullok/' /etc/pam.d/common-auth - -# Fix empty bind-mount to clear selinuxfs (see #337) -RUN mkdir /usr/share/empty - -# Add flatpak-spawn to /usr/bin -RUN ln -s /usr/libexec/flatpak-xdg-utils/flatpak-spawn /usr/bin/ diff --git a/ubuntu/20.04/extra-packages b/ubuntu/20.04/extra-packages deleted file mode 100644 index 1c47c1e0..00000000 --- a/ubuntu/20.04/extra-packages +++ /dev/null @@ -1,9 +0,0 @@ -curl -flatpak-xdg-utils -git -gnupg2 -keyutils -tree -unzip -zip -zsh diff --git a/ubuntu/22.04/Containerfile b/ubuntu/22.04/Containerfile deleted file mode 100644 index 94af4298..00000000 --- a/ubuntu/22.04/Containerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM docker.io/library/ubuntu:22.04 - -LABEL com.github.containers.toolbox="true" \ - name="ubuntu-toolbox" \ - version="22.04" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Ubuntu toolbox containers" \ - maintainer="Ievgen Popovych " - -# Remove apt configuration optimized for containers -# Remove docker-gzip-indexes to help with "command-not-found" -RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages - -# Enable myhostname nss plugin for clean hostname resolution without patching -# hosts (at least for sudo), add it right after 'files' entry. We expect that -# this entry is not present yet. Do this early so that package postinst (which -# adds it too late in the order) skips this step -RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf - -# Restore documentation but do not upgrade all packages -# Install ubuntu-minimal & ubuntu-standard -# Install extra packages as well as libnss-myhostname -COPY extra-packages / -RUN sed -Ei '/apt-get (update|upgrade)/s/^/#/' /usr/local/sbin/unminimize && \ - apt-get update && \ - yes | /usr/local/sbin/unminimize && \ - DEBIAN_FRONTEND=noninteractive apt-get -y install \ - ubuntu-minimal ubuntu-standard \ - libnss-myhostname \ - $(cat extra-packages | xargs) && \ - rm -rd /var/lib/apt/lists/* -RUN rm /extra-packages - -# Fix empty bind-mount to clear selinuxfs (see #337) -RUN mkdir /usr/share/empty - -# Add flatpak-spawn to /usr/bin -RUN ln -s /usr/libexec/flatpak-xdg-utils/flatpak-spawn /usr/bin/ diff --git a/ubuntu/22.04/extra-packages b/ubuntu/22.04/extra-packages deleted file mode 100644 index 1c47c1e0..00000000 --- a/ubuntu/22.04/extra-packages +++ /dev/null @@ -1,9 +0,0 @@ -curl -flatpak-xdg-utils -git -gnupg2 -keyutils -tree -unzip -zip -zsh diff --git a/ubuntu/23.04/Containerfile b/ubuntu/23.04/Containerfile deleted file mode 100644 index 78493c76..00000000 --- a/ubuntu/23.04/Containerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM docker.io/library/ubuntu:23.04 - -LABEL com.github.containers.toolbox="true" \ - name="ubuntu-toolbox" \ - version="23.04" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Ubuntu toolbox containers" \ - maintainer="Ievgen Popovych " - -# Remove apt configuration optimized for containers -# Remove docker-gzip-indexes to help with "command-not-found" -RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages - -# Enable myhostname nss plugin for clean hostname resolution without patching -# hosts (at least for sudo), add it right after 'files' entry. We expect that -# this entry is not present yet. Do this early so that package postinst (which -# adds it too late in the order) skips this step -RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf - -# Restore documentation but do not upgrade all packages -# Install ubuntu-minimal & ubuntu-standard -# Install extra packages as well as libnss-myhostname -COPY extra-packages / -RUN sed -Ei '/apt-get (update|upgrade)/s/^/#/' /usr/local/sbin/unminimize && \ - apt-get update && \ - yes | /usr/local/sbin/unminimize && \ - DEBIAN_FRONTEND=noninteractive apt-get -y install \ - ubuntu-minimal ubuntu-standard \ - libnss-myhostname \ - $(cat extra-packages | xargs) && \ - rm -rd /var/lib/apt/lists/* -RUN rm /extra-packages - -# Fix empty bind-mount to clear selinuxfs (see #337) -RUN mkdir /usr/share/empty - -# Add flatpak-spawn to /usr/bin -RUN ln -s /usr/libexec/flatpak-xdg-utils/flatpak-spawn /usr/bin/ diff --git a/ubuntu/23.04/extra-packages b/ubuntu/23.04/extra-packages deleted file mode 100644 index 1c47c1e0..00000000 --- a/ubuntu/23.04/extra-packages +++ /dev/null @@ -1,9 +0,0 @@ -curl -flatpak-xdg-utils -git -gnupg2 -keyutils -tree -unzip -zip -zsh diff --git a/ubuntu/23.10/Containerfile b/ubuntu/23.10/Containerfile deleted file mode 100644 index 8134e933..00000000 --- a/ubuntu/23.10/Containerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM docker.io/library/ubuntu:23.10 - -LABEL com.github.containers.toolbox="true" \ - name="ubuntu-toolbox" \ - version="23.10" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Ubuntu toolbox containers" \ - maintainer="Ievgen Popovych " - -# Remove apt configuration optimized for containers -# Remove docker-gzip-indexes to help with "command-not-found" -RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages - -# Enable myhostname nss plugin for clean hostname resolution without patching -# hosts (at least for sudo), add it right after 'files' entry. We expect that -# this entry is not present yet. Do this early so that package postinst (which -# adds it too late in the order) skips this step -RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf - -# Restore documentation but do not upgrade all packages -# Install ubuntu-minimal & ubuntu-standard -# Install extra packages as well as libnss-myhostname -COPY extra-packages / -RUN sed -Ei '/apt-get (update|upgrade)/s/^/#/' /usr/local/sbin/unminimize && \ - apt-get update && \ - yes | /usr/local/sbin/unminimize && \ - DEBIAN_FRONTEND=noninteractive apt-get -y install \ - ubuntu-minimal ubuntu-standard \ - libnss-myhostname \ - $(cat extra-packages | xargs) && \ - rm -rd /var/lib/apt/lists/* -RUN rm /extra-packages - -# Fix empty bind-mount to clear selinuxfs (see #337) -RUN mkdir /usr/share/empty - -# Add flatpak-spawn to /usr/bin -RUN ln -s /usr/libexec/flatpak-xdg-utils/flatpak-spawn /usr/bin/ diff --git a/ubuntu/23.10/extra-packages b/ubuntu/23.10/extra-packages deleted file mode 100644 index 1c47c1e0..00000000 --- a/ubuntu/23.10/extra-packages +++ /dev/null @@ -1,9 +0,0 @@ -curl -flatpak-xdg-utils -git -gnupg2 -keyutils -tree -unzip -zip -zsh