ubuntu: support for noble #40
This file contains 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: 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 }} |