Build images #687
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', 'Linux', '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', 'Linux' ] | |
- lang: java17-slim | |
runner: [ 'self-hosted', 'Linux' ] | |
# - 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 }} |