Skip to content

Tracking pull request to merge release-1.63.0 to master #44

Tracking pull request to merge release-1.63.0 to master

Tracking pull request to merge release-1.63.0 to master #44

Workflow file for this run

name: Zeva new-pipeline Dev CI
on:
pull_request:
# Trigger only on PRs targeting the master branch
branches:
- master
types: [opened, synchronize, reopened]
env:
GIT_URL: https://github.com/bcgov/zeva.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:
verify-pr:
name: Verify pull request title started with Tracking
runs-on: ubuntu-latest
steps:
- name: Check PR Title
id: check_pr_title
run: |
pr_title="${{ github.event.pull_request.title }}"
echo "Pull Request Title: $pr_title"
# Check if the title starts with "Tracking"
if [[ "$pr_title" != Tracking* ]]; then
echo "PR title does not start with 'Tracking'. Exiting..."
exit 1
fi
set-pre-release:
name: Calculate pre-release number
runs-on: ubuntu-latest
needs: verify-pr
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
get-version:
name: Get the version
runs-on: ubuntu-latest
needs: verify-pr
outputs:
output1: ${{ steps.get-version.outputs.VERSION }}
steps:
- id: get-version
run: |
echo "VERSION=$(echo "${{ github.event.pull_request.head.ref }}" | grep -oP '\d+\.\d+\.\d+')" >> $GITHUB_OUTPUT
verify-build-suffix:
name: Verify-build-suffix
runs-on: ubuntu-latest
needs: [set-pre-release,get-version]
env:
BUILD_SUFFIX: ${{ needs.get-version.outputs.output1 }}-${{ needs.set-pre-release.outputs.output1 }}
steps:
- id: verify-build-suffix
run: |
echo "Validating ${{ env.BUILD_SUFFIX }}"
if [[ "${{ env.BUILD_SUFFIX }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+-[0-9]{14}$ ]]; then
echo "Build suffix ${{ env.BUILD_SUFFIX }} format is valid."
else
echo "Error: Build suffix ${{ env.BUILD_SUFFIX }} format is invalid!"
exit 1
fi
build-backend:
name: Build Zeva Backend
runs-on: ubuntu-latest
needs: [set-pre-release,get-version,verify-build-suffix]
timeout-minutes: 60
env:
PRE_RELEASE: ${{ needs.set-pre-release.outputs.output1 }}
VERSION: ${{ needs.get-version.outputs.output1 }}
steps:
- name: Check out repository
uses: actions/[email protected]
- name: Log in to Openshift
uses: redhat-actions/[email protected]
with:
openshift_server_url: ${{ secrets.OPENSHIFT_SERVER }}
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
insecure_skip_tls_verify: true
namespace: ${{ env.TOOLS_NAMESPACE }}
- name: Build Zeva Backend
run: |
echo ${{ env.PRE_RELEASE }}
echo ${{ env.VERSION }}
cd openshift/templates/backend
oc process -f ./backend-bc-docker.yaml NAME=zeva 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 2s
for build in $(oc -n ${{ env.TOOLS_NAMESPACE }} get builds -l buildconfig=zeva-backend-${{ env.VERSION }}-${{ env.PRE_RELEASE }} -o jsonpath='{.items[?(@.status.phase=="Running")].metadata.name}'); do
echo "canceling $build"
oc -n ${{ env.TOOLS_NAMESPACE }} cancel-build $build
done
sleep 2s
oc -n ${{ env.TOOLS_NAMESPACE }} start-build zeva-backend-${{ env.VERSION }}-${{ env.PRE_RELEASE }} --wait=true
sleep 2s
oc tag ${{ env.TOOLS_NAMESPACE }}/zeva-backend:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/zeva-backend:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
build-frontend:
name: Build Zeva Frontend
runs-on: ubuntu-latest
needs: [set-pre-release,get-version,verify-build-suffix]
timeout-minutes: 60
env:
PRE_RELEASE: ${{ needs.set-pre-release.outputs.output1 }}
VERSION: ${{ needs.get-version.outputs.output1 }}
steps:
- name: Check out repository
uses: actions/[email protected]
- name: Log in to Openshift
uses: redhat-actions/[email protected]
with:
openshift_server_url: ${{ secrets.OPENSHIFT_SERVER }}
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
insecure_skip_tls_verify: true
namespace: ${{ env.TOOLS_NAMESPACE }}
- name: Build ZEVA Frontend
run: |
cd openshift/templates/frontend
oc process -f ./frontend-bc-docker.yaml NAME=zeva 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 2s
for build in $(oc -n ${{ env.TOOLS_NAMESPACE }} get builds -l buildconfig=zeva-frontend-${{ env.VERSION }}-${{ env.PRE_RELEASE }} -o jsonpath='{.items[?(@.status.phase=="Running")].metadata.name}'); do
echo "canceling $build"
oc -n ${{ env.TOOLS_NAMESPACE }} cancel-build $build
done
sleep 2s
oc -n ${{ env.TOOLS_NAMESPACE }} start-build zeva-frontend-${{ env.VERSION }}-${{ env.PRE_RELEASE }} --wait=true
sleep 2s
oc tag ${{ env.TOOLS_NAMESPACE }}/zeva-frontend:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/zeva-frontend:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
deploy:
name: Deploy Zeva on Dev
runs-on: ubuntu-latest
timeout-minutes: 60
needs: [build-backend, build-frontend]
env:
PRE_RELEASE: ${{ needs.set-pre-release.outputs.output1 }}
VERSION: ${{ needs.get-version.outputs.output1 }}
steps:
- name: Checkout Manifest repository
uses: actions/[email protected]
with:
repository: bcgov-c/tenant-gitops-e52f12
ref: main
ssh-key: ${{ secrets.MANIFEST_REPO_DEPLOY_KEY }}
- name: Update tags
uses: mikefarah/[email protected]
with:
cmd: |
yq -i '.frontend.image.tag = "${{ env.VERSION }}-${{ env.PRE_RELEASE }}"' zeva/values-dev.yaml
yq -i '.backend.image.tag = "${{ env.VERSION }}-${{ env.PRE_RELEASE }}"' zeva/values-dev.yaml
- name: GitHub Commit & Push
shell: bash {0}
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Actions"
git add zeva/values-dev.yaml
git commit -m "Update the image tag to ${{ env.VERSION }}-${{ env.PRE_RELEASE }} on Dev"
git push
- name: Log in to Openshift
uses: redhat-actions/[email protected]
with:
openshift_server_url: ${{ secrets.OPENSHIFT_SERVER }}
openshift_token: ${{ secrets.OPENSHIFT_TOKEN }}
insecure_skip_tls_verify: true
namespace: ${{ env.TOOLS_NAMESPACE }}
- name: Tag and deploy to Dev
run: |
helm -n ${{ env.DEV_NAMESPACE }} list
oc tag ${{ env.TOOLS_NAMESPACE }}/zeva-backend:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/zeva-backend:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
oc tag ${{ env.TOOLS_NAMESPACE }}/zeva-frontend:${{ env.VERSION }}-${{ env.PRE_RELEASE }} ${{ env.DEV_NAMESPACE }}/zeva-frontend:${{ env.VERSION }}-${{ env.PRE_RELEASE }}
cd zeva
helm -n ${{ env.DEV_NAMESPACE }} -f ./values-dev.yaml upgrade --install zeva-dev .