Skip to content

ubuntu: support for noble #43

ubuntu: support for noble

ubuntu: support for noble #43

name: Flux View Build Matrices
on:
workflow_dispatch:
pull_request: []
push:
branches:
- main
jobs:
generate:
name: Generate Build Matrix
runs-on: ubuntu-latest
outputs:
dockerbuild_matrix: ${{ steps.dockerbuild.outputs.dockerbuild_matrix }}
empty_matrix: ${{ steps.dockerbuild.outputs.dockerbuild_matrix_empty }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate Build Matrix
uses: vsoch/uptodate@main
id: dockerbuild
with:
root: .
parser: dockerbuild
flags: "--registry ghcr.io/converged-computing --all"
- name: View and Check Build Matrix Result
env:
result: ${{ steps.dockerbuild.outputs.dockerbuild_matrix }}
run: |
echo ${result}
if [[ "${result}" == "[]" ]]; then
printf "The matrix is empty, will not trigger next workflow.\n"
else
printf "The matrix is not empty, and we should continue on to the next workflow.\n"
fi
build:
needs: [generate]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
result: ${{ fromJson(needs.generate.outputs.dockerbuild_matrix) }}
arch: [linux/amd64]
if: ${{ needs.generate.outputs.empty_matrix == 'false' }}
name: Build ${{ matrix.result.container_name }} ${{ matrix.arch }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- uses: actions/setup-go@v3
- name: GHCR Login
if: (github.event_name != 'pull_request')
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# Uncomment if need more build space
# - name: Run Actions Cleaner
# uses: rse-ops/actions-cleaner/ubuntu@main
- name: Set Container name
env:
container: ${{ matrix.result.container_name }}
run: |
container_name=$(python .github/container_name.py "${container}" flux-view)
echo "Container name is ${container_name}"
echo "container_name=${container_name}" >> $GITHUB_ENV
echo "container_arch=x86_64" >> $GITHUB_ENV
- name: Pull Docker Layers
run: docker pull ghcr.io/converged-computing/${container_name} || exit 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Prepare ${{ env.container_name }}
id: builder
env:
prefix: ${{ matrix.result.command_prefix }}
filename: ${{ matrix.result.filename }}
run: |
basedir=$(dirname $filename)
printf "Base directory is ${basedir}\n"
printf "Building ${container_name}\n"
# Get relative path to PWD and generate dashed name from it
cd $basedir
echo "${prefix} -t ${container_name} ."
build_args="$(echo "${prefix#*--build-arg}")"
# Add build-arg for anaconda download
echo "dockerfile_dir=${basedir}" >> $GITHUB_ENV
echo "build_args=${build_args}" >> $GITHUB_ENV
echo "filename=${filename}" >> $GITHUB_ENV
- name: Build ${{ matrix.dockerfile[1] }}
uses: docker/build-push-action@v3
with:
context: ${{ env.dockerfile_dir }}
file: ${{ env.filename }}
platforms: ${{ matrix.arch }}
push: ${{ github.event_name != 'pull_request' }}
build-args: |
${{ env.build_args }}
tags: ${{ env.container_name }}