Skip to content

Implemented accessible buttons #102

Implemented accessible buttons

Implemented accessible buttons #102

Workflow file for this run

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.19
- 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 }}