Removed logs from DB provider #111
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: audio-guide-bot-main-workflow | |
on: [push, workflow_dispatch] | |
jobs: | |
build-api: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./api | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.21 | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
working-directory: ./api | |
- name: Build | |
run: go build -v ./... | |
build-ui: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./ui | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up React | |
run: npm ci | |
- name: Lint | |
run: npm run lint | |
- name: Build | |
run: npm run build | |
test-migrations: | |
runs-on: ubuntu-latest | |
container: migrate/migrate | |
services: | |
postgres-db: | |
image: postgres | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: guide-system | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Migrate Up | |
run: migrate -path=./api/provider/db/migrations/postgres/ -database postgres://postgres:postgres@postgres-db:5432/guide-system?sslmode=disable up | |
- name: Migrate Down | |
run: migrate -path=./api/provider/db/migrations/postgres/ -database postgres://postgres:postgres@postgres-db:5432/guide-system?sslmode=disable down -all | |
push-ui-container: | |
needs: [build-ui] | |
if: ${{ github.ref == 'refs/heads/main' }} | |
env: | |
PROJECT_ID: ${{ vars.GCP_PROJECT_ID }} | |
PROJECT_REGION: ${{ vars.GCP_PROJECT_REGION }} | |
SERVICE_ACCOUNT: ${{ vars.GCP_SA_EMAIL }} | |
UI_IMAGE: ${{ vars.GCP_PROJECT_REGION }}-docker.pkg.dev/${{ vars.GCP_PROJECT_ID }}/${{ vars.GCP_ARTIFACT_REGISTRY }}/${{ vars.GCP_SERVICE_UI_NAME }}:${{ github.sha }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Authenticate Cloud CLI | |
uses: 'google-github-actions/auth@v1' | |
with: | |
credentials_json: '${{ secrets.GCP_SA_KEY }}' | |
- name: Setup Cloud CLI | |
uses: google-github-actions/setup-gcloud@v1 | |
- name: Authorize Docker push | |
run: gcloud auth configure-docker ${{ env.PROJECT_REGION }}-docker.pkg.dev | |
- name: Build and Push UI Container | |
run: |- | |
docker build -t ${{ env.UI_IMAGE }} ./ui -f ./ui/prod.dockerfile | |
docker push ${{ env.UI_IMAGE }} | |
push-api-container: | |
needs: [build-api, test-migrations] | |
if: ${{ github.ref == 'refs/heads/main' }} | |
env: | |
PROJECT_ID: ${{ vars.GCP_PROJECT_ID }} | |
PROJECT_REGION: ${{ vars.GCP_PROJECT_REGION }} | |
SERVICE_ACCOUNT: ${{ vars.GCP_SA_EMAIL }} | |
API_IMAGE: ${{ vars.GCP_PROJECT_REGION }}-docker.pkg.dev/${{ vars.GCP_PROJECT_ID }}/${{ vars.GCP_ARTIFACT_REGISTRY }}/${{ vars.GCP_SERVICE_API_NAME }}:${{ github.sha }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Authenticate Cloud CLI | |
uses: 'google-github-actions/auth@v1' | |
with: | |
credentials_json: '${{ secrets.GCP_SA_KEY }}' | |
- name: Setup Cloud CLI | |
uses: google-github-actions/setup-gcloud@v1 | |
- name: Authorize Docker push | |
run: gcloud auth configure-docker ${{ env.PROJECT_REGION }}-docker.pkg.dev | |
- name: Build and Push API Container | |
run: |- | |
docker build -t ${{ env.API_IMAGE }} ./api | |
docker push ${{ env.API_IMAGE }} | |
deploy-migrator: | |
needs: [push-api-container] | |
if: ${{ github.ref == 'refs/heads/main' }} | |
env: | |
PROJECT_ID: ${{ vars.GCP_PROJECT_ID }} | |
PROJECT_REGION: ${{ vars.GCP_PROJECT_REGION }} | |
SERVICE_ACCOUNT: ${{ vars.GCP_SA_EMAIL }} | |
MIGRATOR_SERVICE: ${{ vars.GCP_SERVICE_MIGRATOR_NAME }} | |
API_IMAGE: ${{ vars.GCP_PROJECT_REGION }}-docker.pkg.dev/${{ vars.GCP_PROJECT_ID }}/${{ vars.GCP_ARTIFACT_REGISTRY }}/${{ vars.GCP_SERVICE_API_NAME }}:${{ github.sha }} | |
SQL_INSTANCE_NAME: ${{ vars.GCP_SQL_INSTANCE_CONNECTION_NAME }} | |
DB_URL_SECRET: ${{ vars.GCP_SECRET_DB_URL }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Authenticate Cloud CLI | |
uses: 'google-github-actions/auth@v1' | |
with: | |
credentials_json: '${{ secrets.GCP_SA_KEY }}' | |
- name: Setup Cloud CLI | |
uses: google-github-actions/setup-gcloud@v1 | |
- name: Deploy migration job to Cloud Run | |
run: |- | |
gcloud --quiet run jobs deploy ${{ env.MIGRATOR_SERVICE }} \ | |
--image=${{ env.API_IMAGE }} \ | |
--region=${{ env.PROJECT_REGION }} \ | |
--service-account=${{ env.SERVICE_ACCOUNT }} \ | |
--set-cloudsql-instances=${{ env.SQL_INSTANCE_NAME }} \ | |
--set-secrets=DB_CONNECTION_STRING=${{ env.DB_URL_SECRET }}:latest \ | |
--args=--migrate \ | |
--max-retries=3 \ | |
--execute-now \ | |
--wait | |
deploy-services: | |
needs: [deploy-migrator, push-ui-container] | |
if: ${{ github.ref == 'refs/heads/main' }} | |
env: | |
PROJECT_ID: ${{ vars.GCP_PROJECT_ID }} | |
PROJECT_REGION: ${{ vars.GCP_PROJECT_REGION }} | |
SERVICE_ACCOUNT: ${{ vars.GCP_SA_EMAIL }} | |
API_SERVICE: ${{ vars.GCP_SERVICE_API_NAME }} | |
API_MAX_INSTANCES: ${{ vars.GCP_SERVICE_API_MAX_INSTANCES }} | |
API_IMAGE: ${{ vars.GCP_PROJECT_REGION }}-docker.pkg.dev/${{ vars.GCP_PROJECT_ID }}/${{ vars.GCP_ARTIFACT_REGISTRY }}/${{ vars.GCP_SERVICE_API_NAME }}:${{ github.sha }} | |
UI_SERVICE: ${{ vars.GCP_SERVICE_UI_NAME }} | |
UI_MAX_INSTANCES: ${{ vars.GCP_SERVICE_UI_MAX_INSTANCES }} | |
UI_IMAGE: ${{ vars.GCP_PROJECT_REGION }}-docker.pkg.dev/${{ vars.GCP_PROJECT_ID }}/${{ vars.GCP_ARTIFACT_REGISTRY }}/${{ vars.GCP_SERVICE_UI_NAME }}:${{ github.sha }} | |
SQL_INSTANCE_NAME: ${{ vars.GCP_SQL_INSTANCE_CONNECTION_NAME }} | |
TG_TOKEN_SECRET: ${{ vars.GCP_SECRET_TG_BOT_TOKEN }} | |
TG_PAYMENTS_SECRET: ${{ vars.GCP_SECRET_TG_PAYMENTS_TOKEN }} | |
JWT_SECRET: ${{ vars.GCP_SECRET_JWT_SECRET }} | |
DB_URL_SECRET: ${{ vars.GCP_SECRET_DB_URL }} | |
S3_URL_SECRET: ${{ vars.GCP_SECRET_S3_URL }} | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./api | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Authenticate Cloud CLI | |
uses: 'google-github-actions/auth@v1' | |
with: | |
credentials_json: '${{ secrets.GCP_SA_KEY }}' | |
- name: Setup Cloud CLI | |
uses: google-github-actions/setup-gcloud@v1 | |
- name: Deploy API service to Cloud Run | |
run: |- | |
gcloud --quiet run deploy ${{ env.API_SERVICE }} \ | |
--image=${{ env.API_IMAGE }} \ | |
--region=${{ env.PROJECT_REGION }} \ | |
--service-account=${{ env.SERVICE_ACCOUNT }} \ | |
--set-cloudsql-instances=${{ env.SQL_INSTANCE_NAME }} \ | |
--max-instances=${{ env.API_MAX_INSTANCES }} \ | |
--set-secrets=TELEGRAM_BOT_TOKEN=${{ env.TG_TOKEN_SECRET }}:latest \ | |
--set-secrets=TELEGRAM_PAYMENTS_TOKEN=${{ env.TG_PAYMENTS_SECRET }}:latest \ | |
--set-secrets=JWT_SECRET=${{ env.JWT_SECRET }}:latest \ | |
--set-secrets=DB_CONNECTION_STRING=${{ env.DB_URL_SECRET }}:latest \ | |
--set-secrets=S3_CONNECTION_STRING=${{ env.S3_URL_SECRET }}:latest \ | |
--allow-unauthenticated | |
- name: Get API service URL | |
run: echo "API_URL=$(gcloud --quiet run services describe ${{ env.API_SERVICE }} --platform managed --region ${{ env.PROJECT_REGION }} --format 'value(status.url)')" >> $GITHUB_ENV | |
- name: Deploy UI service to Cloud Run | |
run: |- | |
gcloud --quiet run deploy ${{ env.UI_SERVICE }} \ | |
--image=${{ env.UI_IMAGE }} \ | |
--region=${{ env.PROJECT_REGION }} \ | |
--service-account=${{ env.SERVICE_ACCOUNT }} \ | |
--max-instances=${{ env.UI_MAX_INSTANCES }} \ | |
--set-env-vars=REACT_APP_BOT_API_URL=${{ env.API_URL }} \ | |
--allow-unauthenticated | |
- name: Get UI service URL | |
run: echo "UI_URL=$(gcloud --quiet run services describe ${{ env.UI_SERVICE }} --platform managed --region ${{ env.PROJECT_REGION }} --format 'value(status.url)')" >> $GITHUB_ENV | |
- name: Update API service UI URL | |
run: |- | |
gcloud --quiet run services update ${{ env.API_SERVICE }} \ | |
--region=${{ env.PROJECT_REGION }} \ | |
--service-account=${{ env.SERVICE_ACCOUNT }} \ | |
--update-env-vars=TELEGRAM_WEB_APP_URL=${{ env.UI_URL }} \ | |
--update-env-vars=CORS_ALLOWED_ORIGINS=${{ env.UI_URL }} |