Build images #689
Workflow file for this run
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: Upload base images | |
| on: | |
| schedule: | |
| - cron: "0 8 * * *" | |
| push: | |
| branches: | |
| - master | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| env: | |
| REPO: ghcr.io | |
| TAG: v11 | |
| TEAM: cyclonedx | |
| jobs: | |
| images: | |
| if: github.repository == 'CycloneDX/cdxgen' | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| image: | |
| # - lang: dotnet6 | |
| # fix-qemu: true | |
| # skip-arm: true | |
| # base-image: | |
| # additional-image: bci-dotnet | |
| # cdxgen-image: | |
| # additional-image: cdxgen-dotnet | |
| # - lang: dotnet6 | |
| # distro: debian | |
| # | |
| # - lang: dotnet7 | |
| # skip-arm: true | |
| # | |
| # - lang: dotnet8 | |
| # skip-arm: true | |
| # | |
| # - lang: dotnet8 | |
| # distro: debian | |
| # | |
| # - lang: dotnet9 | |
| # skip-arm: true | |
| # | |
| # - lang: dotnet9 | |
| # distro: debian | |
| # | |
| # - lang: java8 | |
| # distro: temurin | |
| - lang: java11 | |
| runner: [ 'self-hosted', 'ARM64' ] | |
| base-image: | |
| additional-image: java11-slim | |
| cdxgen-image: | |
| additional-image: cdxgen-java | |
| additional-image2: cdxgen-java11-slim | |
| additional-image3: cdxgen-java-slim | |
| - lang: java17 | |
| runner: [ 'self-hosted', 'ARM64' ] | |
| - lang: java17-slim | |
| runner: [ 'self-hosted', 'ARM64' ] | |
| # - lang: java21 | |
| # distro: temurin | |
| # | |
| # - lang: node20 | |
| # cdxgen-image: | |
| # additional-image: cdxgen-node | |
| # | |
| # - lang: python36 | |
| # | |
| # - lang: python39 | |
| # distro: opensuse | |
| # | |
| # - lang: python310 | |
| # distro: opensuse | |
| # | |
| # - lang: python311 | |
| # | |
| # - lang: python312 | |
| # base-image: | |
| # lang: lang | |
| # cdxgen-image: | |
| # additional-image: cdxgen-python | |
| # | |
| # - lang: ruby25 | |
| # fix-qemu: true | |
| # skip-arm: true | |
| # base-image: | |
| # name: sle | |
| # | |
| # - lang: ruby26 | |
| # distro: debian | |
| # runner: macos-hosted | |
| # skip-arm: true | |
| # | |
| # - lang: ruby33 | |
| # distro: debian | |
| # runner: macos-hosted | |
| # | |
| # - lang: ruby34 | |
| # distro: debian | |
| # runner: macos-hosted | |
| # | |
| # - lang: swift6 | |
| # distro: debian | |
| # runner: macos-hosted | |
| # base-image: | |
| # additional-image: debian-swift | |
| # cdxgen-image: | |
| # additional-image: cdxgen-debian-swift | |
| # | |
| # - lang: rolling | |
| # distro: opensuse | |
| # base-image: | |
| # lang: lang | |
| # cdxgen-image: | |
| # skip-tags: true | |
| runs-on: ${{ matrix.image.runner || 'ubuntu-24.04' }} | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| if: ${{ ! matrix.image.runner }} | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Set up Docker Buildx | |
| if: ${{ ! matrix.image.runner }} | |
| uses: docker/setup-buildx-action@v3 | |
| - name: QEMU workaround | |
| if: matrix.image.fix-qemu | |
| run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes | |
| - name: Log in to the Container registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| # Base image | |
| - name: Extract metadata (tags, labels) for Docker base-image | |
| id: base-metadata | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: | | |
| ${{ env.REPO }}/${{ env.TEAM }}/${{ matrix.image.base-image.name || matrix.image.distro || 'bci' }}-${{ matrix.image.base-image.lang || matrix.image.lang }} | |
| ${{ matrix.image.base-image.additional-image && format('{0}/{1}/{2}', env.REPO, env.TEAM, matrix.image.base-image.additional-image) || '' }} | |
| - name: Build and push Docker base-image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| file: ci/base-images/${{ matrix.image.distro || 'sle' }}/Dockerfile.${{ matrix.image.lang }} | |
| platforms: linux/amd64${{ ! matrix.image.skip-arm && ',linux/arm64' || '' }} | |
| push: true | |
| tags: ${{ steps.base-metadata.outputs.tags }} | |
| labels: ${{ steps.base-metadata.outputs.labels }} | |
| # cdxgen image | |
| - name: Extract metadata (tags, labels) for Docker cdxgen-image | |
| id: cdxgen-metadata | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: | | |
| ${{ env.REPO }}/${{ env.TEAM }}/cdxgen${{ matrix.image.distro && format('-{0}', matrix.image.distro) }}-${{ matrix.image.lang }} | |
| ${{ matrix.image.cdxgen-image.additional-image && format('{0}/{1}/{2}', env.REPO, env.TEAM, matrix.image.cdxgen-image.additional-image) || '' }} | |
| ${{ matrix.image.cdxgen-image.additional-image2 && format('{0}/{1}/{2}', env.REPO, env.TEAM, matrix.image.cdxgen-image.additional-image2) || '' }} | |
| ${{ matrix.image.cdxgen-image.additional-image3 && format('{0}/{1}/{2}', env.REPO, env.TEAM, matrix.image.cdxgen-image.additional-image3) || '' }} | |
| - name: Build and push Docker cdxgen-image for master | |
| uses: docker/build-push-action@v5 | |
| if: github.ref == 'refs/heads/master' | |
| with: | |
| context: . | |
| file: ci/base-images/cdxgen/${{ matrix.image.distro }}/Dockerfile.${{ matrix.image.lang }} | |
| platforms: linux/amd64${{ ! matrix.image.skip-arm && ',linux/arm64' || '' }} | |
| push: true | |
| tags: | | |
| ${{ env.REPO }}/${{ env.TEAM }}/cdxgen${{ matrix.image.distro && format('-{0}', matrix.image.distro) }}-${{ matrix.image.lang }}:${{ env.TAG }} | |
| ${{ matrix.image.cdxgen-image.additional-image && format('{0}/{1}/{2}:{3}', env.REPO, env.TEAM, matrix.image.cdxgen-image.additional-image, env.TAG) }} | |
| ${{ matrix.image.cdxgen-image.additional-image2 && format('{0}/{1}/{2}:{3}', env.REPO, env.TEAM, matrix.image.cdxgen-image.additional-image2, env.TAG) }} | |
| ${{ matrix.image.cdxgen-image.additional-image3 && format('{0}/{1}/{2}:{3}', env.REPO, env.TEAM, matrix.image.cdxgen-image.additional-image3, env.TAG) }} | |
| labels: ${{ steps.cdxgen-metadata.outputs.labels }} | |
| - name: Build and push Docker cdxgen-image for tag | |
| uses: docker/build-push-action@v5 | |
| # if: ${{ startsWith(github.ref, 'refs/tags/') && ! matrix.image.cdxgen-image.skip-tags }} | |
| with: | |
| context: . | |
| file: ci/base-images/cdxgen/${{ matrix.image.distro }}/Dockerfile.${{ matrix.image.lang }} | |
| platforms: linux/amd64${{ ! matrix.image.skip-arm && ',linux/arm64' || '' }} | |
| push: true | |
| tags: ${{ steps.cdxgen-metadata.outputs.tags }} | |
| labels: ${{ steps.cdxgen-metadata.outputs.labels }} |