Merge pull request #709 from bcgov/BCPSDEMS-2119 #84
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: diam-webapi | |
on: | |
push: | |
branches: [develop,test,main] | |
paths: | |
- "backend/webapi/**" | |
- "backend/common/**" | |
- ".github/workflows/build-push-webapi.yml" | |
workflow_dispatch: | |
env: | |
IMAGE_NAME: diam-webapi | |
WORKING_DIRECTORY: ./backend | |
BRANCH_NAME: develop | |
VALUES_FILE: dev | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set environment for branch | |
run: | | |
if [[ ${{ github.ref_name }} == 'main' ]]; then | |
echo "BRANCH_NAME=main" >> "$GITHUB_ENV" | |
echo "VALUES_FILE=prod" >> "$GITHUB_ENV" | |
fi | |
if [[ ${{ github.ref_name }} == 'test' ]]; then | |
echo "BRANCH_NAME=test" >> "$GITHUB_ENV" | |
echo "VALUES_FILE=test" >> "$GITHUB_ENV" | |
fi | |
if [[ ${{ github.ref_name }} == 'develop' ]]; then | |
echo "BRANCH_NAME=develop" >> "$GITHUB_ENV" | |
echo "VALUES_FILE=dev" >> "$GITHUB_ENV" | |
fi | |
- name: Extract branch name | |
shell: bash | |
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT | |
id: extract_branch | |
- name: Branch name | |
run: echo running on branch ${GITHUB_REF##*/} | |
- name: Login to Artifactory | |
uses: docker/login-action@v1 | |
with: | |
registry: artifacts.developer.gov.bc.ca | |
username: ${{ secrets.ARTIFACTORY_USERNAME }} | |
password: ${{ secrets.ARTIFACTORY_PASSWORD }} | |
- name: Build Image | |
working-directory: ${{env.WORKING_DIRECTORY}} | |
run: | | |
docker build -t artifacts.developer.gov.bc.ca/de27-general-docker/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} -f Dockerfile.WebApi . | |
- name: Docker Push to Artifactory | |
id: publish | |
run: | | |
docker push artifacts.developer.gov.bc.ca/de27-general-docker/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} | |
- name: Checkout ArgoCD Repo | |
id: gitops | |
if: steps.publish.outcome == 'success' | |
uses: actions/checkout@v4 | |
with: | |
repository: bcgov-c/tenant-gitops-e27db1 | |
ref: ${{ env.BRANCH_NAME }} | |
token: ${{ secrets.ARGO_PAT }} # access token | |
path: gitops | |
- name: Get short SHA | |
id: short_sha | |
run: | | |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
echo "Short SHA: $SHORT_SHA" | |
- name: Update Helm Values and Commit | |
id: helm | |
if: steps.gitops.outcome == 'success' # Only run if the previous step (publish) was successful | |
run: | | |
echo "Updating ${{ env.BRANCH_NAME }} helm values to trigger ArgoCD deployment " | |
# Navigate to the directory containing your Helm values file for the environment develop -> DEV, test -> test | |
cd gitops/charts | |
# Update the Helm values file with the new image tag and version | |
DATETIME=$(date +'%Y-%m-%d %H:%M:%S') # Get current date and time | |
echo "Updating tag apitag: to ${{ steps.short_sha.outputs.SHORT_SHA }}" | |
sed -i "s/apitag: .*/apitag: ${{ env.VALUES_FILE }}-${{ steps.short_sha.outputs.SHORT_SHA }} # Image Updated on $DATETIME/" ../deploy/${{ env.VALUES_FILE }}_values.yaml | |
sed -i "s/apitag: .*/apitag: ${{ env.VALUES_FILE }}-${{ steps.short_sha.outputs.SHORT_SHA }} # Image Updated on $DATETIME/" webapi/values.yaml | |
# Commit and push the changes | |
git config --global user.email "[email protected]" | |
git config --global user.name "GitHub Actions" | |
git add . | |
git add ../deploy/${{ env.VALUES_FILE }}_values.yaml | |
# Repackage Helm Chart | |
cd webapi | |
helm dependency build | |
git add . | |
git commit -m "Update ${{ env.BRANCH_NAME }} API image tag" | |
# pull any changes | |
git pull origin ${{ env.BRANCH_NAME }} | |
git push origin ${{ env.BRANCH_NAME }} # Update the branch name as needed | |