Skip to content

copy build job from multi-platform matrix example #833

copy build job from multi-platform matrix example

copy build job from multi-platform matrix example #833

Workflow file for this run

name: Build and test container images
on:
push:
pull_request:
repository_dispatch:
types:
- dispatch-build
workflow_dispatch:
jobs:
build-images:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# os: ['el9', 'cuda_11_8_0']
os: ['el9']
osg_series: ['23']
# repo: ['development', 'testing', 'release']
repo: [ 'release' ]
platform: ['linux/amd64','linux/arm64']
exclude:
# cuda builds take a super long time; only do one of them
- os: cuda_11_8_0
repo: development
- os: cuda_11_8_0
repo: testing
steps:
- uses: actions/checkout@v3
- id: slash-escape-platform
run: |
platform=${{ matrix.platform }}
echo "platform=${platform//\//-}" >> ${GITHUB_OUTPUT}
- id: custom-image-name
env:
SERIES: ${{ matrix.osg_series }}
REPO: ${{ matrix.repo }}
OS: ${{ matrix.os }}
run: |
PREFIX="output_image=${GITHUB_REPOSITORY}:${SERIES}"
echo "${PREFIX}-${OS}-${REPO}" >> ${GITHUB_OUTPUT}
- id: build-image
uses: ./.github/actions/build-container-local
with:
osg_series: ${{ matrix.osg_series }}
osg_repo: ${{ matrix.repo }}
base_os: ${{ matrix.os }}
platform: ${{ matrix.platform }}
output_image: ${{ steps.custom-image-name.outputs.output_image }}
- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build-image.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ steps.custom-image-name.output.output_image }}-${{ steps.slash-escape-platform.output.platform }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
# - name: Prepare CVMFS
# if: ${{ matrix.platform == 'linux/amd64' }}
# run: |
# sudo ./tests/setup_cvmfs.sh
# - name: Docker + CVMFS bindmount
# if: ${{ matrix.platform == 'linux/amd64' }}
# id: test-docker-cvmfs
# env:
# CONTAINER_IMAGE: ${{ steps.build-image.outputs.timestamp-image }}
# run: |
# sudo ./tests/test_inside_gha.sh docker \
# bindmount \
# "$CONTAINER_IMAGE"
# - name: Docker + cvmfsexec
# if: ${{ matrix.platform == 'linux/amd64' }}
# id: test-docker-cvmfsexec
# env:
# CONTAINER_IMAGE: ${{ steps.build-image.outputs.timestamp-image }}
# run: |
# sudo ./tests/test_inside_gha.sh docker \
# cvmfsexec \
# "$CONTAINER_IMAGE"
# - name: Singularity + CVMFS bindmount
# if: ${{ matrix.platform == 'linux/amd64' }}
# id: test-singularity-cvmfs
# env:
# CONTAINER_IMAGE: ${{ steps.build-image.outputs.timestamp-image }}
# run: |
# if [[ $CONTAINER_IMAGE == *cuda* ]]; then
# echo >&2 "Skipping test: \$APPTAINER_TMPDIR (${APPTAINER_TMPDIR:-/tmp}) too small for cuda-based images"
# exit 0
# else
# sudo ./tests/test_inside_gha.sh singularity \
# bindmount \
# "$CONTAINER_IMAGE"
# fi
# - name: Harbor login
# if: >-
# github.ref == 'refs/heads/master' &&
# github.event_name != 'pull_request' &&
# github.repository_owner == 'opensciencegrid'
# uses: docker/login-action@v2
# with:
# registry: hub.opensciencegrid.org
# username: ${{ secrets.OSG_HARBOR_ROBOT_USER }}
# password: ${{ secrets.OSG_HARBOR_ROBOT_PASSWORD }}
# - name: Docker login
# if: >-
# github.ref == 'refs/heads/master' &&
# github.event_name != 'pull_request' &&
# github.repository_owner == 'opensciencegrid'
# uses: docker/login-action@v2
# with:
# registry: docker.io
# username: ${{ secrets.DOCKER_USERNAME }}
# password: ${{ secrets.DOCKER_PASSWORD }}
# - name: Push to OSG Harbor
# if: >-
# github.ref == 'refs/heads/master' &&
# github.event_name != 'pull_request' &&
# github.repository_owner == 'opensciencegrid'
# env:
# IMAGE_LIST: ${{ steps.build-image.outputs.image-list}}
# OSG_SERIES: ${{ matrix.osg_series }}
# run: |
# case $OSG_SERIES in
# '23' ) DEFAULT_OS=el9 ;;
# * ) exit ;;
# esac
# for registry in hub.opensciencegrid.org docker.io; do
# IFS=,
# for image in ${IMAGE_LIST}; do
# fqin=${registry}/${image}
# docker tag ${image} ${fqin}
# docker push ${fqin}
# # Also tag the image for the default OS as the OS-less tag
# # (i.e. 23-el9-release -> 23-release)
# image2=${image/-${DEFAULT_OS}-/-} # bash syntax for search-and-replace
# if [[ $image2 != $image ]]; then
# fqin2=${registry}/${image2}
# docker tag ${image} ${fqin2}
# docker push ${fqin2}
# fi
# done
# done