Remove --skip-unavailable from EL9 #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Push | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '13 4 * * *' | |
| permissions: | |
| contents: read | |
| packages: write | |
| env: | |
| CACHE_URL: ghcr.io/${{ github.repository }}/cache | |
| jobs: | |
| generate-matrices: | |
| name: generate-matrices | |
| runs-on: ubuntu-latest | |
| outputs: | |
| build_matrix: ${{ steps.write.outputs.build_matrix }} | |
| manifest_matrix: ${{ steps.write.outputs.manifest_matrix }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Generate matrices | |
| run: | | |
| pip install pyyaml | |
| python3 gen-cicd.py --out-dir .github/matrices | |
| - name: Set matrix outputs | |
| id: write | |
| run: | | |
| echo "build_matrix<<ENDOFBUILDMATRIX" >> "$GITHUB_OUTPUT" | |
| cat .github/matrices/build-matrix.json >> "$GITHUB_OUTPUT" | |
| echo "" >> "$GITHUB_OUTPUT" | |
| echo "ENDOFBUILDMATRIX" >> "$GITHUB_OUTPUT" | |
| echo "manifest_matrix<<ENDOFMANIFESTMATRIX" >> "$GITHUB_OUTPUT" | |
| cat .github/matrices/manifest-matrix.json >> "$GITHUB_OUTPUT" | |
| echo "" >> "$GITHUB_OUTPUT" | |
| echo "ENDOFMANIFESTMATRIX" >> "$GITHUB_OUTPUT" | |
| build-and-push: | |
| name: b-${{ matrix.containerfile }}-${{ matrix.from_tag }}-${{ matrix.arch }} | |
| runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} | |
| needs: generate-matrices | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJSON(needs.generate-matrices.outputs.build_matrix) }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Buildah | |
| run: | | |
| sudo apt-get -qq update | |
| sudo apt-get -qq install -y buildah | |
| - name: Login to container registry | |
| env: | |
| REPO_USERNAME: ${{ secrets.REPO_USERNAME }} | |
| REPO_PASSWORD: ${{ secrets.REPO_PASSWORD }} | |
| run: | | |
| if [ -n "$REPO_USERNAME" ] && [ -n "$REPO_PASSWORD" ]; then | |
| echo "$REPO_PASSWORD" | buildah login -u "$REPO_USERNAME" --password-stdin quay.io | |
| else | |
| echo "No registry credentials; push may fail" | |
| fi | |
| - name: Login to ghcr.io | |
| env: | |
| CACHE_USERNAME: ${{ github.actor }} | |
| CACHE_PASSWORD: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| echo "$CACHE_PASSWORD" | buildah login -u "$CACHE_USERNAME" --password-stdin ghcr.io | |
| - name: Build and push image | |
| env: | |
| TO_IMAGE: ${{ matrix.to_image }} | |
| CACHE_URL: ${{ env.CACHE_URL }} | |
| TO_TAG: ${{ matrix.to_tag }} | |
| ARCH: ${{ matrix.arch }} | |
| CONTAINERFILE: ${{ matrix.containerfile }} | |
| FROM_IMAGE: ${{ matrix.from_image }} | |
| FROM_TAG: ${{ matrix.from_tag }} | |
| run: | | |
| IMAGE="$TO_IMAGE:$TO_TAG-$ARCH" | |
| CACHE_IMAGE="$CACHE_URL:$TO_TAG-$ARCH" | |
| buildah pull "$CACHE_IMAGE" 2>/dev/null || true | |
| buildah rmi "$IMAGE" 2>/dev/null || true | |
| buildah build --layers --arch="$ARCH" \ | |
| --build-arg CONTAINERFILE="Containerfile.$CONTAINERFILE" \ | |
| --from "$FROM_IMAGE:$FROM_TAG" \ | |
| -f "Containerfile.$CONTAINERFILE" \ | |
| -t "$IMAGE" . | |
| buildah push "$IMAGE" | |
| buildah push "$IMAGE" "$CACHE_IMAGE" | |
| generate-manifests: | |
| name: mf-${{ matrix.tag }} | |
| runs-on: ubuntu-latest | |
| needs: [generate-matrices, build-and-push] | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJSON(needs.generate-matrices.outputs.manifest_matrix) }} | |
| steps: | |
| - name: Install Buildah | |
| run: | | |
| sudo apt-get -qq update | |
| sudo apt-get -qq install -y buildah | |
| - name: Login to container registry | |
| env: | |
| REPO_USERNAME: ${{ secrets.REPO_USERNAME }} | |
| REPO_PASSWORD: ${{ secrets.REPO_PASSWORD }} | |
| run: | | |
| if [ -n "$REPO_USERNAME" ] && [ -n "$REPO_PASSWORD" ]; then | |
| echo "$REPO_PASSWORD" | buildah login -u "$REPO_USERNAME" --password-stdin quay.io | |
| else | |
| echo "No registry credentials; push may fail" | |
| fi | |
| - name: Login to ghcr.io | |
| env: | |
| CACHE_USERNAME: ${{ github.actor }} | |
| CACHE_PASSWORD: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| echo "$CACHE_PASSWORD" | buildah login -u "$CACHE_USERNAME" --password-stdin ghcr.io | |
| - name: Create and push multi-arch manifest | |
| env: | |
| IMAGE: ${{ matrix.image }} | |
| TAG: ${{ matrix.tag }} | |
| ARCHES: ${{ matrix.arches }} | |
| CACHE_URL: ${{ env.CACHE_URL }} | |
| run: | | |
| echo "Creating manifest for $IMAGE:$TAG" | |
| buildah manifest rm "$IMAGE:$TAG" 2>/dev/null || true | |
| buildah manifest create "$IMAGE:$TAG" | |
| for arch in $ARCHES; do | |
| buildah manifest add "$IMAGE:$TAG" "docker://$CACHE_URL:$TAG-$arch" | |
| done | |
| buildah manifest push --all "$IMAGE:$TAG" "docker://$IMAGE:$TAG" |