From 62e0dffffeee9dc5362e03ab4cb4c1895be80f1b Mon Sep 17 00:00:00 2001 From: Benjamin Sherman Date: Wed, 9 Aug 2023 14:38:53 -0500 Subject: [PATCH] install ZFS from ucore-kmods (#60) In addition to removing the ZFS RPM build from this repo to consume ZFS RPMs from `ucore-kmods` image, this PR starts building a stock `fedora-coreos` image with only ZFS added. --- .github/workflows/build.yml | 250 +++++++++++++---------- .github/workflows/reusable-zfs-build.yml | 160 --------------- README.md | 4 + fedora-coreos-zfs/Containerfile | 25 +++ main/Containerfile | 4 +- zfs/Containerfile | 58 ------ 6 files changed, 173 insertions(+), 328 deletions(-) delete mode 100644 .github/workflows/reusable-zfs-build.yml create mode 100644 fedora-coreos-zfs/Containerfile delete mode 100644 zfs/Containerfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c408e79..d999086 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,7 @@ on: - '**.md' - '**.txt' schedule: - - cron: '20 23 * * *' # 11:20PM UTC everyday (approx 1 hour after coreos images publish) + - cron: '45 23 * * *' # 11:45PM UTC everyday (approx 1.5 hours after coreos images publish) push: branches: - main @@ -68,118 +68,158 @@ jobs: echo "${{ toJSON(steps.stable.outputs) }}" echo "${{ toJSON(steps.testing.outputs) }}" - zfs_versions: - name: Get ZFS versions - runs-on: ubuntu-latest - outputs: - latest: ${{ steps.latest.outputs.version }} - previous: ${{ steps.previous.outputs.version }} + build_fcos_zfs: + name: Build CoreOS ZFS + runs-on: ubuntu-22.04 + if: always() && !cancelled() + needs: [ build_info, coreos_versions] + permissions: + contents: read + packages: write + id-token: write + strategy: + fail-fast: false + matrix: + image_name: + - fedora-coreos-zfs + coreos_version: + - stable + - testing + pr_prefix: + - ${{ needs.build_info.outputs.pr_prefix }} + include: + - coreos_version: stable + image_version: ${{ needs.coreos_versions.outputs.stable_version }} + - coreos_version: testing + image_version: ${{ needs.coreos_versions.outputs.testing_version }} steps: - # Use cURL to fetch the given URL, saving the response to `data.json` - - name: Fetch zfs versions - run: curl "https://api.github.com/repos/openzfs/zfs/releases" -o data.json - - name: Get latest zfs version - id: latest - run: echo "version=$(jq -r '[ .[] | select(.prerelease==false and .draft==false) ][0].name' data.json|cut -f2- -d-)" >> $GITHUB_OUTPUT - - name: Get previous zfs version - id: previous - run: echo "version=$(jq -r '[ .[] | select(.prerelease==false and .draft==false) ][1].name' data.json|cut -f2- -d-)" >> $GITHUB_OUTPUT - - name: Echo outputs - run: | - echo "${{ toJSON(steps.latest.outputs) }}" - echo "${{ toJSON(steps.previous.outputs) }}" + # Checkout push-to-registry action GitHub repository + - name: Checkout Push to Registry action + uses: actions/checkout@v3 - zfs_rpms_required: - name: Is zfs build required - runs-on: ubuntu-latest - needs: [build_info, coreos_versions, zfs_versions] - outputs: - build_stable: ${{ steps.stable.outputs.build }} - build_testing: ${{ steps.testing.outputs.build }} - steps: - # check if existing ucore-zfs-rpm images match requested kernel/zfs/stream combination - - name: Check stable ucore-zfs-rpm images - id: stable - continue-on-error: true + - name: Generate tags + id: generate-tags + shell: bash run: | - BUILD_IT=true - TAG="${{ needs.build_info.outputs.pr_prefix }}stable" - LINUX=${{ needs.coreos_versions.outputs.stable_linux }} - VERSION=${{ needs.coreos_versions.outputs.stable_version }} - ZFS=${{ needs.zfs_versions.outputs.latest }} - - skopeo inspect docker://ghcr.io/ublue-os/ucore-zfs-rpm:$TAG > inspect.json || echo "ucore-zfs-rpm:$TAG does not exist" - if [ -n "$(cat inspect.json)" ]; then - set -x - OLD_LINUX=$(jq -r '.["Labels"]["ostree.linux"]' inspect.json) - OLD_VERSION=$(jq -r '.["Labels"]["version"]' inspect.json) - OLD_ZFS=$(jq -r '.["Labels"]["zfs.version"]' inspect.json) - if [ "$OLD_LINUX" = "$LINUX" ] && [ "$OLD_VERSION" = "$VERSION" ] && [ "$OLD_ZFS" = "$ZFS" ]; then - BUILD_IT=false - fi - set +x + # Generate a timestamp for creating an image version history + TIMESTAMP="$(date +%Y%m%d)" + COREOS_VERSION="${{ matrix.coreos_version }}" + + COMMIT_TAGS=() + BUILD_TAGS=() + + # Have tags for tracking builds during pull request + SHA_SHORT="${GITHUB_SHA::7}" + COMMIT_TAGS+=("pr-${{ github.event.number }}-${COREOS_VERSION}") + COMMIT_TAGS+=("${SHA_SHORT}-${COREOS_VERSION}") + + BUILD_TAGS=("${COREOS_VERSION}" "${COREOS_VERSION}-${TIMESTAMP}") + + if [[ "${{ github.event_name }}" == "pull_request" ]]; then + echo "Generated the following commit tags: " + for TAG in "${COMMIT_TAGS[@]}"; do + echo "${TAG}" + done + + alias_tags=("${COMMIT_TAGS[@]}") + else + alias_tags=("${BUILD_TAGS[@]}") fi - echo "build=$BUILD_IT" >> $GITHUB_OUTPUT - - name: Check testing ucore-zfs-rpm images - id: testing - continue-on-error: true + + echo "Generated the following build tags: " + for TAG in "${BUILD_TAGS[@]}"; do + echo "${TAG}" + done + + echo "alias_tags=${alias_tags[*]}" >> $GITHUB_OUTPUT + + # Build metadata + - name: Image Metadata + uses: docker/metadata-action@v4 + id: meta + with: + images: | + ${{ matrix.image_name }} + labels: | + io.artifacthub.package.logo-url=https://avatars.githubusercontent.com/u/120078124?s=200&v=4 + io.artifacthub.package.readme-url=https://raw.githubusercontent.com/ublue-os/ucore/main/README.md + org.opencontainers.image.description=An OCI image of Fedora CoreOS with ZFS pre-installed + org.opencontainers.image.title=${{ matrix.image_name }} + org.opencontainers.image.version=${{ matrix.image_version }} + + # Build image using Buildah action + - name: Build Image + id: build_image + uses: redhat-actions/buildah-build@v2 + with: + containerfiles: | + ./main/Containerfile + context: ./main + image: ${{ matrix.image_name }} + tags: | + ${{ steps.generate-tags.outputs.alias_tags }} + build-args: | + COREOS_VERSION=${{ matrix.coreos_version }} + PR_PREFIX=${{ matrix.pr_prefix }} + labels: ${{ steps.meta.outputs.labels }} + oci: false + + # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. + # https://github.com/macbre/push-to-ghcr/issues/12 + - name: Lowercase Registry + id: registry_case + uses: ASzc/change-string-case-action@v5 + with: + string: ${{ env.IMAGE_REGISTRY }} + + # Push the image to GHCR (Image Registry) + - name: Push To GHCR + uses: redhat-actions/push-to-registry@v2 + id: push + #if: github.event_name != 'pull_request' + env: + REGISTRY_USER: ${{ github.actor }} + REGISTRY_PASSWORD: ${{ github.token }} + with: + image: ${{ steps.build_image.outputs.image }} + tags: ${{ steps.build_image.outputs.tags }} + registry: ${{ steps.registry_case.outputs.lowercase }} + username: ${{ env.REGISTRY_USER }} + password: ${{ env.REGISTRY_PASSWORD }} + extra-args: | + --disable-content-trust + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + if: github.event_name != 'pull_request' + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Sign container + - uses: sigstore/cosign-installer@v3.1.1 + if: github.event_name != 'pull_request' + + - name: Sign container image + if: github.event_name != 'pull_request' run: | - BUILD_IT=true - TAG="${{ needs.build_info.outputs.pr_prefix }}testing" - LINUX=${{ needs.coreos_versions.outputs.testing_linux }} - VERSION=${{ needs.coreos_versions.outputs.testing_version }} - ZFS=${{ needs.zfs_versions.outputs.latest }} - - skopeo inspect docker://ghcr.io/ublue-os/ucore-zfs-rpm:$TAG > inspect.json || echo "ucore-zfs-rpm:$TAG does not exist" - if [ -n "$(cat inspect.json)" ]; then - set -x - OLD_LINUX=$(jq -r '.["Labels"]["ostree.linux"]' inspect.json) - OLD_VERSION=$(jq -r '.["Labels"]["version"]' inspect.json) - OLD_ZFS=$(jq -r '.["Labels"]["zfs.version"]' inspect.json) - if [ "$OLD_LINUX" = "$LINUX" ] && [ "$OLD_VERSION" = "$VERSION" ] && [ "$OLD_ZFS" = "$ZFS" ]; then - BUILD_IT=false - fi - set +x - fi - echo "build=$BUILD_IT" >> $GITHUB_OUTPUT + cosign sign -y --key env://COSIGN_PRIVATE_KEY ${{ steps.registry_case.outputs.lowercase }}/${{ steps.build_image.outputs.image }}@${TAGS} + env: + TAGS: ${{ steps.push.outputs.digest }} + COSIGN_EXPERIMENTAL: false + COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} + - name: Echo outputs + #if: github.event_name != 'pull_request' run: | - echo "${{ toJSON(steps.stable.outputs) }}" - echo "${{ toJSON(steps.testing.outputs) }}" - - build_zfs: - name: Build ZFS - needs: [coreos_versions, zfs_versions, zfs_rpms_required] - strategy: - matrix: - build_config: - - coreos_version: stable - zfs_version: ${{ needs.zfs_versions.outputs.latest }} - image_linux: ${{ needs.coreos_versions.outputs.stable_linux }} - image_version: ${{ needs.coreos_versions.outputs.stable_version }} - image_name: ucore-zfs-rpm - build: ${{ needs.zfs_rpms_required.outputs.build_stable }} - - coreos_version: testing - zfs_version: ${{ needs.zfs_versions.outputs.latest }} - image_linux: ${{ needs.coreos_versions.outputs.testing_linux }} - image_version: ${{ needs.coreos_versions.outputs.testing_version }} - image_name: ucore-zfs-rpm - build: ${{ needs.zfs_rpms_required.outputs.build_testing }} - uses: ./.github/workflows/reusable-zfs-build.yml - with: - if_build: ${{ matrix.build_config.build }} - coreos_version: ${{ matrix.build_config.coreos_version }} - image_linux: ${{ matrix.build_config.image_linux }} - image_name: ${{ matrix.build_config.image_name }} - image_version: ${{ matrix.build_config.image_version }} - zfs_version: ${{ matrix.build_config.zfs_version }} - secrets: inherit + echo "${{ toJSON(steps.push.outputs) }}" build_main: name: Build uCore runs-on: ubuntu-22.04 if: always() && !cancelled() - needs: [ build_info, build_zfs, coreos_versions, zfs_versions] + needs: [ build_info, coreos_versions] permissions: contents: read packages: write @@ -194,8 +234,6 @@ jobs: - testing pr_prefix: - ${{ needs.build_info.outputs.pr_prefix }} - zfs_version: - - ${{ needs.zfs_versions.outputs.latest }} include: - coreos_version: stable image_version: ${{ needs.coreos_versions.outputs.stable_version }} @@ -255,7 +293,6 @@ jobs: org.opencontainers.image.description=An OCI image of Fedora CoreOS with batteries included org.opencontainers.image.title=${{ matrix.image_name }} org.opencontainers.image.version=${{ matrix.image_version }} - zfs.version=${{ matrix.zfs_version }} # Build image using Buildah action - name: Build Image @@ -329,7 +366,7 @@ jobs: name: Build HCI runs-on: ubuntu-22.04 if: always() && !cancelled() - needs: [ build_info, build_main, coreos_versions, zfs_versions] + needs: [ build_info, build_main, coreos_versions] permissions: contents: read packages: write @@ -344,8 +381,6 @@ jobs: - testing pr_prefix: - ${{ needs.build_info.outputs.pr_prefix }} - zfs_version: - - ${{ needs.zfs_versions.outputs.latest }} include: - coreos_version: stable image_version: ${{ needs.coreos_versions.outputs.stable_version }} @@ -405,7 +440,6 @@ jobs: org.opencontainers.image.description=A hyper-converged infrastructure Fedora CoreOS OCI with batteries included org.opencontainers.image.title=${{ format('{0}-hci', matrix.image_name) }} org.opencontainers.image.version=${{ matrix.image_version }} - zfs.version=${{ matrix.zfs_version }} # Build image using Buildah action - name: Build Image diff --git a/.github/workflows/reusable-zfs-build.yml b/.github/workflows/reusable-zfs-build.yml deleted file mode 100644 index dd5ff6a..0000000 --- a/.github/workflows/reusable-zfs-build.yml +++ /dev/null @@ -1,160 +0,0 @@ -on: - workflow_call: - inputs: - if_build: - description: 'Whether to run this job' - required: false - default: 'true' - type: string - coreos_version: - required: true - type: string - image_linux: - required: true - type: string - image_name: - required: true - type: string - image_version: - required: true - type: string - zfs_version: - required: true - type: string -env: - IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} - -jobs: - build_zfs: - if: ${{ inputs.if_build == 'true' }} - name: Build ZFS RPMs - runs-on: ubuntu-22.04 - permissions: - contents: read - packages: write - id-token: write - steps: - # Checkout push-to-registry action GitHub repository - - name: Checkout Push to Registry action - uses: actions/checkout@v3 - - - name: Generate tags - id: generate-tags - shell: bash - run: | - # Generate a timestamp for creating an image version history - TIMESTAMP="$(date +%Y%m%d)" - COREOS_VERSION="${{ inputs.coreos_version }}" - - COMMIT_TAGS=() - BUILD_TAGS=() - - # Have tags for tracking builds during pull request - SHA_SHORT="${GITHUB_SHA::7}" - COMMIT_TAGS+=("pr-${{ github.event.number }}-${COREOS_VERSION}") - COMMIT_TAGS+=("${SHA_SHORT}-${COREOS_VERSION}") - - BUILD_TAGS=("${COREOS_VERSION}" "${COREOS_VERSION}-${TIMESTAMP}") - - if [[ "${{ github.event_name }}" == "pull_request" ]]; then - echo "Generated the following commit tags: " - for TAG in "${COMMIT_TAGS[@]}"; do - echo "${TAG}" - done - - alias_tags=("${COMMIT_TAGS[@]}") - else - alias_tags=("${BUILD_TAGS[@]}") - fi - - echo "Generated the following build tags: " - for TAG in "${BUILD_TAGS[@]}"; do - echo "${TAG}" - done - - echo "alias_tags=${alias_tags[*]}" >> $GITHUB_OUTPUT - - # Build metadata - - name: Image Metadata - uses: docker/metadata-action@v4 - id: meta - with: - images: | - ${{ inputs.image_name }} - labels: | - fedora-coreos.stream=${{ inputs.coreos_version }} - io.artifacthub.package.readme-url=https://raw.githubusercontent.com/ublue-os/ucore/main/README.md - org.opencontainers.image.description=A layer with ZFS RPMs for CoreOS - org.opencontainers.image.title=${{ inputs.image_name }} - org.opencontainers.image.version=${{ inputs.image_version }} - ostree.linux=${{ inputs.image_linux }} - version=${{ inputs.image_version }} - zfs.version=${{ inputs.zfs_version }} - - # Build image using Buildah action - - name: Build Image - id: build_image - uses: redhat-actions/buildah-build@v2 - with: - containerfiles: | - ./zfs/Containerfile - context: ./zfs - image: ${{ inputs.image_name }} - tags: | - ${{ steps.generate-tags.outputs.alias_tags }} - build-args: | - COREOS_VERSION=${{ inputs.coreos_version }} - ZFS_VERSION=${{ inputs.zfs_version }} - labels: ${{ steps.meta.outputs.labels }} - oci: false - - # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. - # https://github.com/macbre/push-to-ghcr/issues/12 - - name: Lowercase Registry - id: registry_case - uses: ASzc/change-string-case-action@v5 - with: - string: ${{ env.IMAGE_REGISTRY }} - - # Push the image to GHCR (Image Registry) - - name: Push To GHCR - uses: redhat-actions/push-to-registry@v2 - id: push - #if: github.event_name != 'pull_request' - env: - REGISTRY_USER: ${{ github.actor }} - REGISTRY_PASSWORD: ${{ github.token }} - with: - image: ${{ steps.build_image.outputs.image }} - tags: ${{ steps.build_image.outputs.tags }} - registry: ${{ steps.registry_case.outputs.lowercase }} - username: ${{ env.REGISTRY_USER }} - password: ${{ env.REGISTRY_PASSWORD }} - extra-args: | - --disable-content-trust - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - if: github.event_name != 'pull_request' - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Sign container - - uses: sigstore/cosign-installer@v3.1.1 - if: github.event_name != 'pull_request' - - - name: Sign container image - if: github.event_name != 'pull_request' - run: | - cosign sign -y --key env://COSIGN_PRIVATE_KEY ${{ steps.registry_case.outputs.lowercase }}/${{ steps.build_image.outputs.image }}@${TAGS} - env: - TAGS: ${{ steps.push.outputs.digest }} - COSIGN_EXPERIMENTAL: false - COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} - - - name: Echo outputs - #if: github.event_name != 'pull_request' - run: | - echo "${{ toJSON(steps.push.outputs) }}" diff --git a/README.md b/README.md index 8326626..cd90149 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,10 @@ Note: per [cockpit instructions](https://cockpit-project.org/running.html#coreos Note: Fedora now uses `DefaultTimeoutStop=45s` for systemd services which could cause `libvirtd` to quit before shutting down slow VMs. Consider adding `TimeoutStopSec=120s` as an override for `libvirtd.service` if needed. +`fedora-coreos-zfs` image: +- A generic [Fedora CoreOS image](https://quay.io/repository/fedora/fedora-coreos?tab=tags) image +- Add only [ZFS](https://openzfs.github.io/openzfs-docs/Getting%20Started/Fedora/index.html) from the [ucore-kmods image](https://github.com/ublue-os/ucore-kmods) + ## Tips and Tricks ### Immutability and Podman diff --git a/fedora-coreos-zfs/Containerfile b/fedora-coreos-zfs/Containerfile new file mode 100644 index 0000000..dee2c7d --- /dev/null +++ b/fedora-coreos-zfs/Containerfile @@ -0,0 +1,25 @@ +ARG COREOS_VERSION="${COREOS_VERSION:-stable}" + +FROM quay.io/fedora/fedora-coreos:${COREOS_VERSION} + +ARG COREOS_VERSION="${COREOS_VERSION:-stable}" + +COPY --from=ghcr.io/ublue-os/ucore-kmods:${COREOS_VERSION} /rpms/ /tmp/rpms + +# enable testing repos if not enabled on testing stream +RUN if [[ "testing" == "${COREOS_VERSION}" ]]; then \ +for REPO in $(ls /etc/yum.repos.d/fedora-updates-testing{,-modular}.repo); do \ + if [[ "$(grep enabled=1 ${REPO} > /dev/null; echo $?)" == "1" ]]; then \ + echo "enabling $REPO" &&\ + sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' ${REPO}; \ + fi; \ +done; \ +fi + +# install locally prepared RPMs (ZFS, etc) +RUN rpm-ostree install /tmp/rpms/kmods/zfs/*.rpm && \ + rpm-ostree cleanup -m && \ + rm -rf /tmp/* /var/* && \ + ostree container commit && \ + mkdir -p /var/tmp && \ + chmod -R 1777 /var/tmp \ No newline at end of file diff --git a/main/Containerfile b/main/Containerfile index 7a807cc..b2d17f5 100644 --- a/main/Containerfile +++ b/main/Containerfile @@ -12,7 +12,7 @@ ADD packages.json /tmp/packages.json ARG PR_PREFIX="${PR_PREFIX}" -COPY --from=ghcr.io/ublue-os/ucore-zfs-rpm:${PR_PREFIX}${COREOS_VERSION} / /tmp/rpms +COPY --from=ghcr.io/ublue-os/ucore-kmods:${COREOS_VERSION} /rpms/ /tmp/rpms COPY etc /etc COPY usr /usr @@ -27,7 +27,7 @@ done; \ fi # install locally prepared RPMs (ZFS, etc) -RUN rpm-ostree install /tmp/rpms/*.rpm +RUN rpm-ostree install /tmp/rpms/kmods/zfs/*.rpm RUN /tmp/github-release-install.sh trapexit/mergerfs x86_64.rpm fc RUN /tmp/build.sh RUN /tmp/post-install.sh diff --git a/zfs/Containerfile b/zfs/Containerfile deleted file mode 100644 index df38210..0000000 --- a/zfs/Containerfile +++ /dev/null @@ -1,58 +0,0 @@ -ARG COREOS_VERSION="${COREOS_VERSION}" - -FROM quay.io/fedora/fedora-coreos:${COREOS_VERSION} as builder - -ARG COREOS_VERSION="${COREOS_VERSION}" -ARG ZFS_VERSION="${ZFS_VERSION}" - -WORKDIR /tmp - -#We can't use the `uname -r` as it will pick up the host kernel version -RUN rpm -qa kernel --queryformat '%{VERSION}-%{RELEASE}.%{ARCH}' > /kernel-version.txt - -# work around to allow alternatives to configure in RPM post-install scripts -RUN mkdir -p /var/lib/alternatives - -# enable testing repos if not enabled on testing stream -RUN if [[ "testing" == "${COREOS_VERSION}" ]]; then \ -for REPO in $(ls /etc/yum.repos.d/fedora-updates-testing{,-modular}.repo); do \ - if [[ "$(grep enabled=1 ${REPO} > /dev/null; echo $?)" == "1" ]]; then \ - echo "enabling $REPO" &&\ - sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' ${REPO}; \ - fi; \ -done; \ -fi - -RUN rpm-ostree install -y jq dkms gcc make autoconf automake libtool rpm-build libtirpc-devel libblkid-devel \ - libuuid-devel libudev-devel openssl-devel zlib-devel libaio-devel libattr-devel elfutils-libelf-devel \ - kernel-$(cat /kernel-version.txt) kernel-modules-$(cat /kernel-version.txt) kernel-devel-$(cat /kernel-version.txt) \ - python3 python3-devel python3-setuptools python3-cffi libffi-devel git ncompress libcurl-devel - -RUN echo "getting zfs-${ZFS_VERSION}.tar.gz" && \ - curl -L -O https://github.com/openzfs/zfs/releases/download/zfs-${ZFS_VERSION}/zfs-${ZFS_VERSION}.tar.gz \ - && tar xzf zfs-${ZFS_VERSION}.tar.gz - -WORKDIR /tmp/zfs-${ZFS_VERSION} - -# build -RUN ./configure \ - -with-linux=/usr/src/kernels/$(cat /kernel-version.txt)/ \ - -with-linux-obj=/usr/src/kernels/$(cat /kernel-version.txt)/ \ - && make -j 1 rpm-utils rpm-kmod \ - || (cat config.log && exit 1) - -# sort into directories for easier install later -RUN mkdir -p /tmp/rpms/{debug,devel,other,src} \ - && mv *src.rpm /tmp/rpms/src/ \ - && mv *devel*.rpm /tmp/rpms/devel/ \ - && mv *debug*.rpm /tmp/rpms/debug/ \ - && mv zfs-dracut*.rpm /tmp/rpms/other/ \ - && mv zfs-test*.rpm /tmp/rpms/other/ \ - && mv *.rpm /tmp/rpms/ -RUN find /tmp/rpms | sort - - -FROM scratch - -# Copy build RPMs -COPY --from=builder /tmp/rpms/ /