Skip to content

fix: Beta = #11 ,Make more logs #10 ,Limit Auto Delete #7 ,JSON camel… #3

fix: Beta = #11 ,Make more logs #10 ,Limit Auto Delete #7 ,JSON camel…

fix: Beta = #11 ,Make more logs #10 ,Limit Auto Delete #7 ,JSON camel… #3

Workflow file for this run

name: Ci Cd Production Environment
on:
push:
branches: [ main ]
jobs:
test:
environment:
name: production
runs-on: ubuntu-latest
# because we cannot use env directly when using docker run
env:
GOOGLE_CLOUD_STORAGE_SERVICE_ACCOUNT: ${{secrets.GOOGLE_CLOUD_STORAGE_SERVICE_ACCOUNT}}
GOOGLE_CLOUD_STORAGE_BUCKET: ${{secrets.GOOGLE_CLOUD_STORAGE_BUCKET}}
SERVER_URI: ${{secrets.SERVER_URI}}
GOOGLE_OAUTH2_REFRESH_TOKEN_TEST: ${{secrets.GOOGLE_OAUTH2_REFRESH_TOKEN_TEST}}
APP_ENV: ${{secrets.APP_ENV}}
GOOGLE_OAUTH2_CLIENT_ID_TEST: ${{secrets.GOOGLE_OAUTH2_CLIENT_ID_TEST}}
GOOGLE_OAUTH2_CLIENT_SECRET_TEST: ${{secrets.GOOGLE_OAUTH2_CLIENT_SECRET_TEST}}
PORT: ${{secrets.PORT}}
steps:
- name: Clone Repository
uses: actions/checkout@v4
- name: Unit testing # Using staging environment
run: |
docker build -t ${{github.event.repository.name}} -f build/Dockerfile.test .
docker run --rm --name ${{github.event.repository.owner.login}} --add-host=host.docker.internal:host-gateway -e GOOGLE_CLOUD_STORAGE_SERVICE_ACCOUNT -e GOOGLE_CLOUD_STORAGE_BUCKET -e SERVER_URI -e GOOGLE_OAUTH2_REFRESH_TOKEN_TEST -e APP_ENV -e PORT -e GOOGLE_OAUTH2_CLIENT_ID_TEST -e GOOGLE_OAUTH2_CLIENT_SECRET_TEST ${{github.event.repository.name}} go test -v --cover -ldflags '-w -s' ./...
- name: Clean up
if: always()
run: |
docker rmi ${{github.event.repository.name}}
deploy:
needs: [ test ]
runs-on: ubuntu-latest
environment:
name: production
url: ${{github.event.repository.homepage}}
env:
REGISTRY: ghcr.io
IMAGE_NAME: ghcr.io/${{github.repository_owner}}/${{github.event.repository.name}}
permissions:
packages: write
steps:
- name: Clone Repository
uses: actions/checkout@v4
- name: Login to container registry
uses: docker/login-action@v3
with:
registry: ${{env.REGISTRY}}
username: ${{github.repository_owner}}
password: ${{secrets.GITHUB_TOKEN}}
- name: Build Image & Push to Registry
run: |
docker build -t ${{env.IMAGE_NAME}}:${{github.sha}} -f build/Dockerfile . && docker push ${{env.IMAGE_NAME}}:${{github.sha}}
docker tag ${{env.IMAGE_NAME}}:${{github.sha}} ${{env.IMAGE_NAME}} && docker rmi ${{env.IMAGE_NAME}}:${{github.sha}}
docker push ${{env.IMAGE_NAME}} && docker rmi ${{env.IMAGE_NAME}}
- name: Clean up image
if: failure()
continue-on-error: true
run: |
docker rmi ${{env.IMAGE_NAME}}
docker rmi ${{env.IMAGE_NAME}}:${{github.sha}}
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Container Apps
uses: azure/container-apps-deploy-action@v2
with:
registryUrl: ${{env.REGISTRY}}
containerAppName: ${{github.event.repository.name}}
resourceGroup: ${{secrets.AZURE_RESOURCE_GROUP}}
imageToDeploy: ${{env.IMAGE_NAME}}:${{github.sha}}
targetPort: ${{secrets.PORT}}
- name: Job Successful Feedback
if: ${{ success() }}
run: |
cat >> $GITHUB_STEP_SUMMARY <<MD
# Successful CI & CD production environment
**This test include:**
- [x] Tidy
- [x] Formatting
- [x] Unit Test
**App Published to:** ${{github.event.repository.homepage}}
MD