# Gitea Actions Workflow: Frontend CI/CD to Amazon ECR Public # Place at: .gitea/workflows/frontend.yaml (in repository root) name: Frontend CI/CD on: push: branches: [main] paths: - 'workspace/sprint_1_2/CODEBASE/frontend/implementation/**' workflow_dispatch: {} permissions: contents: read packages: write env: FRONTEND_DIR: workspace/sprint_1_2/CODEBASE/frontend/implementation ECR_REGISTRY: public.ecr.aws ECR_REPOSITORY: ${{ vars.ECR_PUBLIC_REGISTRY_ALIAS }}/msk_lumina_frontend jobs: build-and-push: runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Login to Amazon ECR Public id: login-ecr uses: aws-actions/amazon-ecr-login@v2 with: registry-type: public mask-password: 'true' - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: ${{ env.FRONTEND_DIR }}/package-lock.json - name: Install dependencies run: npm ci working-directory: ./${{ env.FRONTEND_DIR }} - name: Build frontend (verify) run: npm run build working-directory: ./${{ env.FRONTEND_DIR }} - name: Extract metadata for Docker id: meta uses: docker/metadata-action@v5 with: images: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }} tags: | type=ref,event=branch type=sha,prefix= type=raw,value=latest,enable={{is_default_branch}} labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ github.sha }} org.opencontainers.image.title=Lumina MSK Frontend - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: ./${{ env.FRONTEND_DIR }} file: ./${{ env.FRONTEND_DIR }}/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - name: Image digest run: echo "Pushed ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ steps.meta.outputs.tags }}" notify-deploy: needs: build-and-push if: success() && github.event_name == 'push' runs-on: ubuntu-latest steps: - name: Trigger Lightsail deployment webhook if: env.DEPLOY_WEBHOOK_URL != '' env: DEPLOY_WEBHOOK_URL: ${{ secrets.DEPLOY_WEBHOOK_URL }} WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }} run: | cat <