gwms-factory: Move el7 pyyaml install to its own RUN section #658
Workflow file for this run
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: Build and push container images | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
repository_dispatch: | |
types: [dispatch-build] | |
jobs: | |
make-date-tag: | |
runs-on: ubuntu-latest | |
outputs: | |
dtag: ${{ steps.mkdatetag.outputs.dtag }} | |
steps: | |
- name: make date tag | |
id: mkdatetag | |
run: echo "::set-output name=dtag::$(date +%Y%m%d-%H%M)" | |
build-image-list: | |
runs-on: ubuntu-latest | |
outputs: | |
images: ${{ steps.image-list.outputs.json }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- id: image-list | |
run: | | |
ORG_DIR=opensciencegrid | |
# Get the list of files changed based on the type of event | |
# kicking off the GHA: | |
# 1. For the main branch, diff the previous state of main vs | |
# the current commit | |
# 2. For other branches (i.e., on someone's fork), diff main | |
# vs the current commit | |
# 3. For PRs, diff the base ref vs the current commit | |
# 4. For everything else (e.g., dispatches), build all images | |
if [[ $GITHUB_EVENT_NAME == 'pull_request' ]] || | |
[[ $GITHUB_EVENT_NAME == 'push' ]]; then | |
if [[ $GITHUB_EVENT_NAME == 'pull_request' ]]; then | |
BASE=$(git merge-base origin/$GITHUB_BASE_REF HEAD) | |
elif [[ $GITHUB_REF == 'refs/heads/main' ]]; then | |
BASE=${{github.event.before}} | |
else | |
BASE=origin/main | |
fi | |
# List image root dirs where files have changed and the | |
# root dir exists. Example value: | |
# "opensciencegrid/vo-frontend opensciencegrid/ospool-cm" | |
images=$(git diff --name-only \ | |
"$BASE" \ | |
"$GITHUB_SHA" | | |
egrep "^$ORG_DIR/" | | |
cut -d/ -f -2 | | |
sort | | |
uniq | | |
xargs -I {} find . -type d \ | |
-wholename ./{} \ | |
-printf "%P\n") | |
else | |
# List all image root dirs. Example value: | |
# "opensciencegrid/vo-frontend opensciencegrid/ospool-cm" | |
images=$(find $ORG_DIR -mindepth 1 \ | |
-maxdepth 1 \ | |
-type d \ | |
-printf "$ORG_DIR/%P\n") | |
fi | |
# Ensure that the generated JSON array has a member, | |
# otherwise GHA will throw an error about an empty matrix | |
# vector in subsequent steps | |
image_json=$(echo -n "${images:-dummy}" | jq -Rcs '.|split("\n")') | |
echo "::set-output name=json::$image_json" | |
build: | |
runs-on: ubuntu-latest | |
needs: build-image-list | |
if: needs.build-image-list.outputs.images != '["dummy"]' | |
# Prevent a single build failure from killing the workflow. | |
# This is safe since subsequent pushes should fail on cache load | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
image: ${{ fromJson(needs.build-image-list.outputs.images) }} | |
yum_repo: ['development', 'testing', 'release'] | |
series: | |
- name: '3.6' | |
os: 'el7' | |
- name: '23' | |
os: 'el9' | |
# FIXME: reenable osg-23 development when available | |
exclude: | |
- yum_repo: 'development' | |
series: {name: '23', os: 'el9'} | |
steps: | |
- name: Build ${{ matrix.image }}:${{ matrix.series }}-${{ matrix.yum_repo }} | |
continue-on-error: ${{ matrix.yum_repo == 'development' }} | |
uses: opensciencegrid/[email protected] | |
with: | |
osg_series: ${{ matrix.series.name }} | |
osg_repo: ${{ matrix.yum_repo }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
push: | |
runs-on: ubuntu-latest | |
if: >- | |
github.ref == 'refs/heads/main' && | |
github.event_name != 'pull_request' && | |
github.repository_owner == 'opensciencegrid' && | |
needs.build-image-list.outputs.images != '["dummy"]' | |
needs: [make-date-tag, build-image-list, build] | |
strategy: | |
fail-fast: false | |
matrix: | |
image: ${{ fromJson(needs.build-image-list.outputs.images) }} | |
series: | |
- name: '3.6' | |
os: 'el7' | |
- name: '23' | |
os: 'el9' | |
steps: | |
- name: Push to Harbor (${{ matrix.series }}-development) | |
# FIXME: reenable for OSG 23 development when available | |
if: matrix.series.name != '23' | |
uses: opensciencegrid/push-container-action@main | |
with: | |
repo: development | |
osg_series: ${{ matrix.series.name }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
registry_url: hub.opensciencegrid.org | |
registry_user: ${{ secrets.OSG_HARBOR_ROBOT_USER }} | |
registry_pass: ${{ secrets.OSG_HARBOR_ROBOT_PASSWORD }} | |
- name: Push to Harbor (${{ matrix.series.name }}-testing) | |
if: always() | |
uses: opensciencegrid/push-container-action@main | |
with: | |
repo: testing | |
osg_series: ${{ matrix.series.name }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
registry_url: hub.opensciencegrid.org | |
registry_user: ${{ secrets.OSG_HARBOR_ROBOT_USER }} | |
registry_pass: ${{ secrets.OSG_HARBOR_ROBOT_PASSWORD }} | |
- name: Push to Harbor (${{ matrix.series.name }}-release) | |
if: always() | |
uses: opensciencegrid/push-container-action@main | |
with: | |
repo: release | |
osg_series: ${{ matrix.series.name }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
registry_url: hub.opensciencegrid.org | |
registry_user: ${{ secrets.OSG_HARBOR_ROBOT_USER }} | |
registry_pass: ${{ secrets.OSG_HARBOR_ROBOT_PASSWORD }} | |
- name: Push to Docker Hub (${{ matrix.series.name }}-development) | |
if: always() | |
uses: opensciencegrid/push-container-action@main | |
with: | |
repo: development | |
osg_series: ${{ matrix.series.name }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
registry_url: docker.io | |
registry_user: ${{ secrets.DOCKER_USERNAME }} | |
registry_pass: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Push to Docker Hub (${{ matrix.series.name }}-testing) | |
if: always() | |
uses: opensciencegrid/push-container-action@main | |
with: | |
repo: testing | |
osg_series: ${{ matrix.series.name }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
registry_url: docker.io | |
registry_user: ${{ secrets.DOCKER_USERNAME }} | |
registry_pass: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Push to Docker Hub (${{ matrix.series.name }}-release) | |
if: always() | |
uses: opensciencegrid/push-container-action@main | |
with: | |
repo: release | |
osg_series: ${{ matrix.series.name }} | |
context: ${{ matrix.image }} | |
base_os: ${{ matrix.series.os }} | |
registry_url: docker.io | |
registry_user: ${{ secrets.DOCKER_USERNAME }} | |
registry_pass: ${{ secrets.DOCKER_PASSWORD }} |