Skip to content

Publish and deploy image #23

Publish and deploy image

Publish and deploy image #23

Workflow file for this run

name: Publish and deploy image
on:
workflow_dispatch:
env:
REGISTRY_URL: ${{ secrets.HARBOR_URL }}
jobs:
build-push:
runs-on: gha-runners-smartweb
strategy:
matrix:
include:
- dockerfile: Dockerfile.backend
image_name: web/appquiz-backend
- dockerfile: Dockerfile.frontend
image_name: web/appquiz-frontend
steps:
- name: Build tags
run: |
SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)
{
echo 'IMAGE_TAGS<<EOF'
echo '${{ env.REGISTRY_URL }}/${{ matrix.image_name }}:latest'
echo '${{ env.REGISTRY_URL }}/${{ matrix.image_name }}:'$SHORT_SHA
echo EOF
} >> $GITHUB_ENV
- name: Build push and notify
uses: IMIO/gha/build-push-notify@v5
with:
DOCKERFILE: ${{ matrix.dockerfile }}
IMAGE_NAME: ${{ matrix.image_name }}
IMAGE_TAGS: ${{ env.IMAGE_TAGS }}
REGISTRY_URL: ${{ env.REGISTRY_URL}}
REGISTRY_USERNAME: ${{ secrets.SMARTWEB_HARBOR_USERNAME }}
REGISTRY_PASSWORD: ${{ secrets.SMARTWEB_HARBOR_PASSWORD }}
PRE_BUILD_COMMANDS: |
echo "Setting up production environment"
sed -i "s|apiUrl: 'http://localhost:3000/api'|apiUrl: '${{ secrets.BACKEND_URL }}'|g" src/environments/environment.prod.ts
echo "Updated environment.prod.ts with BACKEND_URL: ${{ secrets.BACKEND_URL }}"
sed -i "s|https://frontendurl|${{ secrets.FRONTEND_URL }}|g" server.js
sed -i "s|https://backendurl|${{ secrets.BACKEND_URL }}|g" server.js
echo "Updated server.js with FRONTEND_URL: ${{ secrets.FRONTEND_URL }} and BACKEND_URL: ${{ secrets.BACKEND_URL }}"
deploy:
needs: build-push
environment: staging
runs-on: gha-runners-smartweb
strategy:
max-parallel: 1
matrix:
include:
- values_file_path: staging/appquiz/values-backend.yaml
- values_file_path: staging/appquiz/values-frontend.yaml
steps:
- name: Build short SHA
run: echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7)" >> $GITHUB_ENV
- name: Update Kubernetes tag
uses: IMIO/gha/k8s-update-tag@v5
with:
TAG: ${{ env.SHORT_SHA }}
REPO_TOKEN_NAME: ${{ secrets.INFRA_CHARTS_TOKEN_NAME }}
REPO_ACCESS_TOKEN: ${{ secrets.INFRA_CHARTS_ACCESS_TOKEN }}
REPO_URL: ${{ secrets.INFRA_CHARTS_REPOSITORY_URL }}
TARGET_BRANCH: main
VALUES_FILE_PATH: ${{ matrix.values_file_path }}