chore(deps): update github actions all dependencies (major) #78
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: PR Open | |
on: | |
# used on push for testing / development | |
# --------------------------------------------------------- | |
# push: | |
# branches: ['master', 'main', 'feat/5-deploy-frontend'] | |
pull_request: | |
# debug: remove the dev,putting build action on non existent branches for debug | |
branches: ['main'] | |
types: ['opened', 'reopened', 'edited', 'synchronize'] | |
paths-ignore: | |
- .vscode/** | |
- .gitignore | |
- LICENSE | |
- readme.md | |
- code_of_conduct.md | |
- cicd/** | |
- scripts/** | |
- .flake8 | |
- COMPLIANCE.yaml | |
workflow_dispatch: | |
jobs: | |
# calculate the image tag / used to tag image and then for the | |
# deployment | |
CalculateImageTags: | |
defaults: | |
run: | |
shell: bash | |
name: calculateImageTag | |
runs-on: ubuntu-24.04 | |
outputs: | |
imagetag: ${{ steps.CalculateImageTagstep.outputs.IMAGE_TAG}} | |
steps: | |
- name: Calculate Image Tag | |
id: CalculateImageTagstep | |
shell: bash | |
run: | | |
DATESTAMP=$(date +%Y%m%d-%H%M) | |
echo datestamp is $DATESTAMP | |
echo event number: ${{ github.event.number }} | |
# TEMP_IMAGE_TAG=20230425-2337 | |
# echo hard coding image tag as $TEMP_IMAGE_TAG | |
# echo "IMAGE_TAG=${TEMP_IMAGE_TAG}" >> "$GITHUB_OUTPUT" | |
echo "IMAGE_TAG=${DATESTAMP}" >> "$GITHUB_OUTPUT" | |
TestGetImageTag: | |
# test output of image tag, and verify its been calculated correctly | |
defaults: | |
run: | |
shell: bash | |
needs: CalculateImageTags | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: GET Image Tag | |
id: getImageTag | |
shell: bash | |
env: | |
IMAGE_TAG: ${{ needs.CalculateImageTags.outputs.imagetag }} | |
run: | | |
echo image tag is: $IMAGE_TAG | |
echo event number is: ${{ github.event.number }} | |
BuildContainerImage: | |
defaults: | |
run: | |
shell: bash | |
needs: CalculateImageTags | |
name: 'Build Streamlit Container Image' | |
runs-on: ubuntu-24.04 | |
env: | |
DEBUG_DEPLOY: false | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v4 | |
id: checkout | |
# with: | |
# fetch-depth: 0 | |
- name: Verify tag | |
id: CalculateImageTagstep | |
shell: bash | |
env: | |
IMAGE_TAG: ${{ needs.CalculateImageTags.outputs.imagetag }} | |
run: | | |
echo image tag is $IMAGE_TAG ${{ env.IMAGE_TAG }} | |
echo event number is: ${{ github.event.number }} | |
- name: Log in to GitHub Docker Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and Push Client Docker Image | |
uses: docker/build-push-action@v6 | |
env: | |
IMAGE_TAG: ${{ needs.CalculateImageTags.outputs.imagetag }} | |
with: | |
push: true # Will only build if this is not here | |
tags: | | |
ghcr.io/${{ github.repository_owner }}/streamlit_frontend:latest | |
ghcr.io/${{ github.repository_owner }}/streamlit_frontend:${{ env.IMAGE_TAG }} | |
ghcr.io/${{ github.repository_owner }}/streamlit_frontend:pr-${{ github.event.number }} | |
# This workflow contains a single job called "build" | |
DeployJob: | |
defaults: | |
run: | |
shell: bash | |
needs: [CalculateImageTags, BuildContainerImage] | |
name: 'Deploy Streamlit Image' | |
runs-on: ubuntu-24.04 | |
environment: dev | |
steps: | |
- uses: actions/checkout@v4 | |
id: checkout | |
with: | |
# fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.sha }} | |
# TODO: fix once complete | |
# ref: ${{ github.event.push.head.sha }} | |
- name: Log in and set context | |
uses: redhat-actions/oc-login@v1 | |
with: | |
openshift_server_url: ${{ vars.OC_SERVER }} | |
openshift_token: ${{ secrets.OC_TOKEN }} | |
namespace: ${{ vars.OC_NAMESPACE }} | |
- name: Calculate Zone | |
id: calculateZone | |
shell: bash | |
run: | | |
event_num=${{ github.event.number }} | |
if [[ -z "${event_num// }" ]]; then | |
zone=pr-testing | |
else | |
zone=pr-$event_num | |
fi | |
echo zone: $zone | |
echo "ZONE=$zone" >> $GITHUB_ENV | |
- name: Run Helm Chart | |
id: runHelmChart | |
shell: bash | |
env: | |
IMAGE_TAG: ${{ needs.CalculateImageTags.outputs.imagetag }} | |
run: | | |
cd cicd | |
ls -la | |
helm upgrade --install snowpack-frontend-${{ env.ZONE }} snowpack-frontend \ | |
--set ostore_secrets.bucket=${{ vars.OBJ_STORE_BUCKET }} \ | |
--set ostore_secrets.secret=${{ secrets.OBJ_STORE_SECRET }} \ | |
--set ostore_secrets.user=${{ secrets.OBJ_STORE_USER }} \ | |
--set ostore_secrets.host=${{ vars.OBJ_STORE_HOST }} \ | |
--set image.image_tag=${{ env.IMAGE_TAG }} \ | |
--set image.promote=bcgov/streamlit_frontend:${{ env.IMAGE_TAG }} \ | |
--set app.zone=${{ env.ZONE }} | |
- name: Get Route URL | |
id: getRouteUrl | |
shell: bash | |
run: | | |
# retrieve the route url | |
# --------------------------------------------------------- | |
app_name=$(cat ./cicd/snowpack-frontend/values.yaml | yq e '.app.name') | |
app_comp=$(cat ./cicd/snowpack-frontend/values.yaml | yq e '.app.component') | |
route_name=$app_name-${{ env.ZONE }}-$app_comp | |
route_path=$(oc get route $route_name -o json | jq .spec.host | tr -d '"' ) | |
echo "OC_ROUTE=https://$route_path" >> $GITHUB_ENV | |
- name: Comment PR | |
uses: thollander/actions-comment-pull-request@v3 | |
with: | |
message: | | |
Route to deployed app is: ${{ env.OC_ROUTE }} |