Skip to content

Commit

Permalink
feat(vadc): update to org GitHub action
Browse files Browse the repository at this point in the history
  • Loading branch information
m0nhawk authored Feb 29, 2024
1 parent 49706d6 commit 9e87f15
Showing 1 changed file with 13 additions and 106 deletions.
119 changes: 13 additions & 106 deletions .github/workflows/build_vadc_notebook_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,109 +7,16 @@ on:
- .github/workflows/build_vadc_notebook_image.yml

jobs:
push-image:
runs-on: ubuntu-latest
steps:
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 30000
swap-size-mb: 1024
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'

- name: clean
run: sudo apt clean

- name: Extract branch name
shell: bash
run: echo "branch=$(echo $(echo ${GITHUB_REF#refs/heads/} | tr / _))" >> $GITHUB_OUTPUT
id: extract_branch

- name: Checkout repo
uses: actions/checkout@v2

- name: Get changed files
id: get_changed_files
uses: jitterbit/get-changed-files@v1
with:
format: 'json'

- name: Determine image to build
id: parse_image
shell: python
env:
CHANGES: ${{ steps.get_changed_files.outputs.added_modified }}
run: |
import os, json, re
notebook_dir = "jupyter-vadc"
changed_vadc_notebook_files = json.loads(os.environ['CHANGES'])
print(f"Changed files {changed_vadc_notebook_files}")
# build an image for every subdir of jupyter-vadc with a changed file
subdirs = list(
filter(
lambda d: os.path.isdir(f"{os.environ['GITHUB_WORKSPACE']}/{notebook_dir}/{d}"),
os.listdir(notebook_dir)
)
)
print(f"Scanning subdirs for changed files: {subdirs}")
buildable_images = list(
filter(
lambda subdir: any(
changed_file.startswith(f"{notebook_dir}/{subdir}")
for changed_file in changed_vadc_notebook_files
),
subdirs
)
)
if not len(buildable_images):
print(f"None of {changed_vadc_notebook_files} triggers a build for any of {subdirs}. Done.")
exit(0)
elif len(buildable_images) > 1:
print("Found multiple notebook directories with changes: {buildable_images}")
print("Only one image can be built at a time. Exiting.")
exit(1)
build_target = buildable_images[0]
print(f"Will trigger build for: {build_target}")
with open(os.environ['GITHUB_OUTPUT'], 'a') as fh:
print(f'build_target={build_target}', file=fh)
- if: ${{ steps.parse_image.outputs.build_target }}
name: Sanitize image name
id: sanitize_name
run: |
IMAGE_NAME=$( sed 's/[^[:alnum:]]/_/g' <<< ${{ steps.parse_image.outputs.build_target }} );
echo "image_name=$IMAGE_NAME" >> $GITHUB_OUTPUT
- if: ${{ steps.parse_image.outputs.build_target }}
name: Build image
id: build-image
uses: redhat-actions/buildah-build@v2
with:
image: jupyter-vadc
context: ./jupyter-vadc/
tags:
${{ steps.sanitize_name.outputs.image_name }}__${{ steps.extract_branch.outputs.branch }}
${{ steps.sanitize_name.outputs.image_name }}__${{ github.sha }}
${{ steps.sanitize_name.outputs.image_name }}__latest
dockerfiles: ./jupyter-vadc/Dockerfile
build-args:
NOTEBOOK_DIR=jupyter-vadc/${{ steps.parse_image.outputs.build_target }}

- if: ${{ steps.parse_image.outputs.build_target }}
name: Push To quay.io
id: push-to-quay
uses: redhat-actions/push-to-registry@v2
with:
image: ${{ steps.build-image.outputs.image }}
tags: ${{ steps.build-image.outputs.tags }}
registry: quay.io/cdis
username: ${{ secrets.QUAY_SERVICE_ACCOUNT_USER }}
password: ${{ secrets.QUAY_SERVICE_ACCOUNT_PASSWORD }}
jupyter-vadc:
name: Build and Push jupyter-vadc
uses: uc-cdis/.github/.github/workflows/image_build_push.yaml@master
with:
DOCKERFILE_LOCATION: "./jupyter-vadc/Dockerfile"
DOCKERFILE_BUILD_CONTEXT: "./jupyter-vadc"
OVERRIDE_REPO_NAME: "jupyter-vadc"
OVERRIDE_TAG_NAME: "vadc-$(echo ${GITHUB_REF#refs/*/} | tr / _)"
secrets:
ECR_AWS_ACCESS_KEY_ID: ${{ secrets.ECR_AWS_ACCESS_KEY_ID }}
ECR_AWS_SECRET_ACCESS_KEY: ${{ secrets.ECR_AWS_SECRET_ACCESS_KEY }}
QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }}
QUAY_ROBOT_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }}

0 comments on commit 9e87f15

Please sign in to comment.