Skip to content

Build images

Build images #638

Workflow file for this run

name: Build images
# This workflow builds all cdxgen images.
#
# In this file we define all the images, the actual building is done in
# `image-build.yml`.
#
# An image definition looks like this:
#
# lang: Language+version the image will be built for -- mandatory
# distro: Distribution the image is based on -- default: 'bci' (defined in `image-build.yml`)
# fix-qemu: Fix the QEMU installation on the build-server -- default: false
# runner: Hint/name of the server to run the build on -- default: 'ubuntu-24.04' (defined in `image-build.yml`)
# skip-arm: Do not build an ARM64-version of this image -- default: false
# base-image: Configuration specific to the base-image -- optional
# additional-image: Additional name for the base-image -- optional
# lang: Override the lang for just the base-image -- historical, should not be used for new images
# name: Override the distro for just the base-image -- historical, should not be used for new images
# cdxgen-image: Configuration specific to the cdxgen-image -- optional
# additional-image: Additional name for the cdxgen-image -- optional
# additional-image2: As above -- optional
# additional-image3: As above -- optional
#
# The actual names of the images are then constructed from the above parameters
# like this (plus any and all defined additional-names):
#
# base-image: ${ base-image.name || distro }-${ base-image.lang || lang }:${ 'master' || 'vX.X.X' }
# cdxgen-image: cdxgen${ -distro }-${ lang }:${ image-build.yml#TAG || 'vX.X.X' }
#
# The above configurations are also used to lookup the location of the
# 'Dockerfile' for the images:
#
# ci/images/${ distro }/Dockerfile.${ lang }
on:
push:
tags:
- 'v*'
schedule:
- cron: "0 4 * * *"
workflow_dispatch:
inputs:
latest:
description: Tag the images as 'latest' on top of the given tags
required: true
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token
permissions: {}
jobs:
images:
permissions:
packages: write # needed for publishing images on GH package registry
if: github.repository == 'CycloneDX/cdxgen'
strategy:
fail-fast: false
matrix:
image:
# - lang: dotnet6
# distro: debian
#
# - lang: dotnet7
# skip-arm: true
#
# - lang: dotnet8
# skip-arm: true
#
# - lang: dotnet8
# distro: debian
# runner: macos-hosted
#
# - lang: dotnet9
# skip-arm: true
#
# - lang: dotnet9
# distro: alpine
#
# - lang: dotnet9
# distro: debian
# runner: macos-hosted
#
# - lang: dotnet10
# distro: ubuntu
# runner: macos-hosted
- lang: golang1.23
distro: alpine
- lang: golang1.23
distro: debian
- lang: golang1.24
distro: alpine
base-image:
additional-image: alpine-golang
cdxgen-image:
additional-image: cdxgen-alpine-golang
- lang: golang1.24
distro: debian
base-image:
additional-image: debian-golang
cdxgen-image:
additional-image: cdxgen-golang
additional-image2: cdxgen-debian-golang
# - lang: java8
# distro: temurin
#
# - lang: java11
# runner: macos-hosted
# base-image:
# additional-image: java11-slim
# cdxgen-image:
# additional-image: cdxgen-java
# additional-image2: cdxgen-java11-slim
# additional-image3: cdxgen-java-slim
#
# - lang: java17
#
# - lang: java17-slim
#
# - lang: java21
# distro: alpine
#
# - lang: java21
# distro: temurin
#
# - lang: java24
# distro: alpine
#
# - lang: java24
# distro: temurin
#
# - lang: node20
# cdxgen-image:
# additional-image: cdxgen-node
#
# - lang: node20
# distro: alpine
#
# - lang: node24
# distro: alpine
#
# - lang: php8.3
# distro: debian
# runner: macos-hosted
#
# - lang: php8.4
# distro: alpine
#
# - lang: php8.4
# distro: debian
# runner: macos-hosted
#
# - lang: python3.6
#
# - lang: python3.9
# distro: opensuse
# runner: macos-hosted
# cdxgen-image:
# additional-image: cdxgen-python39
#
# - lang: python3.10
# distro: opensuse
# runner: macos-hosted
# cdxgen-image:
# additional-image: cdxgen-python310
#
# - lang: python3.11
#
# - lang: python3.12
# base-image:
# lang: lang
# cdxgen-image:
# additional-image: cdxgen-python
#
# - lang: python3.13
#
# - lang: python3.13
# distro: alpine
#
# - lang: ruby.25
# fix-qemu: true
# skip-arm: true
# base-image:
# name: sle
#
# - lang: ruby.26
# distro: debian
# skip-arm: true
#
# - lang: ruby3.3
# distro: debian
# runner: macos-hosted
#
# - lang: ruby3.4
# distro: debian
#
# - lang: ruby3.4
# distro: alpine
#
# - lang: rust1
# distro: alpine
#
# - lang: rust1
# distro: debian
# base-image:
# additional-image: debian-rust
# cdxgen-image:
# additional-image: cdxgen-debian-rust
#
# - lang: swift6
# distro: debian
# base-image:
# additional-image: debian-swift
# cdxgen-image:
# additional-image: cdxgen-debian-swift
uses: ./.github/workflows/image-build.yml
secrets: inherit
with:
image: ${{ toJSON(matrix.image) }}
latest: ${{ inputs.latest || startsWith(github.ref, 'refs/tags/') }}
retry:
needs: images
if: failure() && fromJSON(github.run_attempt) < 3
runs-on: ubuntu-latest
steps:
- run: gh workflow run rerun-workflow.yml -F run_id=${{ github.run_id }}
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}