Skip to content

debug push images to artifactory #156

debug push images to artifactory

debug push images to artifactory #156

Workflow file for this run

## For each release, the value of workflow name, branches and VERSION need to be adjusted accordingly
name: CTHUB 0.5.0 Dev CI
on:
push:
branches: [release-0.5.0]
# paths:
# - frontend/**
# - backend/**
workflow_dispatch:
env:
GIT_URL: https://github.com/bcgov/cthub.git
TOOLS_NAMESPACE: ${{ secrets.OPENSHIFT_NAMESPACE_PLATE }}-tools
DEV_NAMESPACE: ${{ secrets.OPENSHIFT_NAMESPACE_PLATE }}-dev
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
set-version:
name: Parse version from branch
runs-on: ubuntu-latest
outputs:
version: ${{ steps.set-version.outputs.VERSION }}
steps:
- id: set-version
run: |
version="${GITHUB_REF_NAME##*-}"
if [[ -z "$version" || "$version" == "$GITHUB_REF_NAME" ]]; then
echo "Invalid branch name '$GITHUB_REF_NAME'; expected pattern '*-<version>'." >&2
exit 1
fi
echo "VERSION=$version" >> "$GITHUB_OUTPUT"
install-oc:
runs-on: ubuntu-latest
needs: set-version
outputs:
cache-hit: ${{ steps.cache.outputs.cache-hit }}
steps:
- name: Check out repository
uses: actions/checkout@v4.1.1
- name: Set up cache for OpenShift CLI
id: cache
uses: actions/cache@v4.2.0
with:
path: /usr/local/bin/oc # Path where the `oc` binary will be installed
key: oc-cli-${{ runner.os }}
- name: Install OpenShift CLI (if not cached)
if: steps.cache.outputs.cache-hit != 'true'
run: |
curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/openshift-client-linux.tar.gz
tar -xvf openshift-client-linux.tar.gz
sudo mv oc /usr/local/bin/
oc version --client
- name: Confirm OpenShift CLI is Available
run: oc version --client
set-pre-release:
name: Calculate pre-release number
runs-on: ubuntu-latest
needs: [set-version, install-oc]
outputs:
output1: ${{ steps.set-pre-release.outputs.PRE_RELEASE }}
steps:
- id: set-pre-release
run: echo "PRE_RELEASE=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT
build:
name: Build CTHUB
runs-on: ubuntu-latest
needs: [set-version, set-pre-release]
timeout-minutes: 60
env:
VERSION: ${{ needs.set-version.outputs.version }}
PRE_RELEASE: ${{ needs.set-pre-release.outputs.output1 }}
steps:
- name: Check out repository
uses: actions/checkout@v4.1.1
- name: Restore oc command from Cache
uses: actions/cache@v4.2.0
with:
path: /usr/local/bin/oc
key: oc-cli-${{ runner.os }}
- name: Log in to Openshift
uses: redhat-actions/oc-login@v1.3
with:
openshift_server_url: ${{ secrets.OPENSHIFT_SERVER }}
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
insecure_skip_tls_verify: true
namespace: ${{ env.TOOLS_NAMESPACE }}
- name: Build CTHUB Backend
run: |
cd openshift/templates/backend
oc process -f ./backend-bc-docker.yaml NAME=cthub SUFFIX=-${{ env.VERSION }}-${{ env.PRE_RELEASE }} VERSION=${{ env.VERSION }}-${{ env.PRE_RELEASE }} GIT_URL=${{ env.GIT_URL }} GIT_REF=release-${{ env.VERSION }} | oc apply --wait=true -f - -n ${{ env.TOOLS_NAMESPACE }}
oc -n ${{ env.TOOLS_NAMESPACE }} start-build cthub-backend-${{ env.VERSION }}-${{ env.PRE_RELEASE }} --wait=true
oc tag ${{ env.TOOLS_NAMESPACE }}/cthub-backend:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/cthub-backend:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
- name: Build CTHUB Frontend
run: |
cd openshift/templates/frontend
oc process -f ./frontend-bc-docker.yaml NAME=cthub SUFFIX=-${{ env.VERSION }}-${{ env.PRE_RELEASE }} VERSION=${{ env.VERSION }}-${{ env.PRE_RELEASE }} GIT_URL=${{ env.GIT_URL }} GIT_REF=release-${{ env.VERSION }} | oc apply --wait=true -f - -n ${{ env.TOOLS_NAMESPACE }}
sleep 5s
oc -n ${{ env.TOOLS_NAMESPACE }} wait --for=condition=Complete --timeout=900s build/cthub-frontend-${{ env.VERSION }}-${{ env.PRE_RELEASE }}-1
oc tag ${{ env.TOOLS_NAMESPACE }}/cthub-frontend:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/cthub-frontend:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
- name: Build CTHUB Task Queue
run: |
cd openshift/templates/task-queue
oc process -f ./task-queue-bc.yaml NAME=cthub SUFFIX=-${{ env.VERSION }}-${{ env.PRE_RELEASE }} VERSION=${{ env.VERSION }}-${{ env.PRE_RELEASE }} GIT_URL=${{ env.GIT_URL }} GIT_REF=release-${{ env.VERSION }} | oc apply --wait=true -f - -n ${{ env.TOOLS_NAMESPACE }}
sleep 5s
oc -n ${{ env.TOOLS_NAMESPACE }} wait --for=condition=Complete --timeout=900s build/cthub-task-queue-${{ env.VERSION }}-${{ env.PRE_RELEASE }}-1
oc tag ${{ env.TOOLS_NAMESPACE }}/cthub-task-queue:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/cthub-task-queue:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
- name: Build CTHUB Vinpower
run: |
cd openshift/templates/vinpower
oc process -f ./vinpower-bc.yaml NAME=cthub SUFFIX=-${{ env.VERSION }}-${{ env.PRE_RELEASE }} VERSION=${{ env.VERSION }}-${{ env.PRE_RELEASE }} GIT_URL=${{ env.GIT_URL }} GIT_REF=release-${{ env.VERSION }} | oc apply --wait=true -f - -n ${{ env.TOOLS_NAMESPACE }}
sleep 5s
oc -n ${{ env.TOOLS_NAMESPACE }} wait --for=condition=Complete --timeout=900s build/cthub-vinpower-${{ env.VERSION }}-${{ env.PRE_RELEASE }}-1
oc tag ${{ env.TOOLS_NAMESPACE }}/cthub-vinpower:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/cthub-vinpower:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
deploy:
name: Deploy CTHUB on Dev
runs-on: ubuntu-latest
timeout-minutes: 60
needs: [set-version, set-pre-release, build]
env:
VERSION: ${{ needs.set-version.outputs.version }}
PRE_RELEASE: ${{ needs.set-pre-release.outputs.output1 }}
steps:
- name: Checkout Manifest repository
uses: actions/checkout@v4.1.1
with:
repository: bcgov-c/tenant-gitops-30b186
ref: main
ssh-key: ${{ secrets.MANIFEST_REPO_DEPLOY_KEY }}
- name: Update tags
uses: mikefarah/yq@v4.40.5
with:
cmd: |
yq -i '.frontend.image.tag = "${{ env.VERSION }}-${{ env.PRE_RELEASE }}"' cthub/values-dev.yaml
yq -i '.backend.image.tag = "${{ env.VERSION }}-${{ env.PRE_RELEASE }}"' cthub/values-dev.yaml
yq -i '.task-queue.image.tag = "${{ env.VERSION }}-${{ env.PRE_RELEASE }}"' cthub/values-dev.yaml
yq -i '.vinpower.image.tag = "${{ env.VERSION }}-${{ env.PRE_RELEASE }}"' cthub/values-dev.yaml
- name: GitHub Commit & Push
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
git add cthub/values-dev.yaml
git commit -m "Update the image tag to ${{ env.VERSION }}-${{ env.PRE_RELEASE }} on Dev"
git push
push-to-artifactory:
name: Push images to Artifactory (${{ matrix.image_stream }})
needs: [set-version, set-pre-release, deploy]
strategy:
matrix:
image_stream:
- cthub-backend
- cthub-frontend
uses: ./.github/workflows/push-images-to-artifactory.yaml
with:
env: dev
app_name: cthub
image_stream: ${{ matrix.image_stream }}
image_tag: ${{ needs.set-version.outputs.version }}-${{ needs.set-pre-release.outputs.output1 }}
secrets: inherit