Skip to content

Merge pull request #250 from RBND-studio/dev #29

Merge pull request #250 from RBND-studio/dev

Merge pull request #250 from RBND-studio/dev #29

Workflow file for this run

name: Production deployment
on:
push:
branches:
- main
jobs:
build:
environment: production
runs-on: [self-hosted, stage-env]
steps:
- uses: actions/checkout@v4
with:
path: "./prod-deploy"
- run: |
touch .env
echo NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }} >> .env
echo NEXT_PUBLIC_ENV=${{ secrets.NEXT_PUBLIC_ENV }} >> .env
working-directory: "./prod-deploy/apps/web"
- run: |
touch .env
echo NEXT_PUBLIC_ENV=${{ secrets.NEXT_PUBLIC_ENV }} >> .env
working-directory: "./prod-deploy/apps/docs"
- run: |
touch .env
echo SERVER_API_URL=${{ secrets.SERVER_API_URL }} >> .env
echo NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} >> .env
echo NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} >> .env
echo NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }} >> .env
echo NEXT_PUBLIC_ENV=${{ secrets.NEXT_PUBLIC_ENV }} >> .env
echo NEXT_PUBLIC_TURNSTILE_SITE_KEY=${{ secrets.NEXT_PUBLIC_TURNSTILE_SITE_KEY }} >> .env
echo NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }} >> .env
working-directory: "./prod-deploy/apps/app"
- run: |
touch .env
echo BACKEND_DATABASE_CONNECTION=${{ secrets.BACKEND_DATABASE_CONNECTION }} >> .env
echo BACKEND_JWT_SECRET=${{ secrets.BACKEND_JWT_SECRET }} >> .env
echo BACKEND_LOOPS_API_KEY=${{ secrets.BACKEND_LOOPS_API_KEY }} >> .env
echo BACKEND_APP_URL=${{ secrets.BACKEND_APP_URL }} >> .env
echo BACKEND_CAPTCHA_SECRET=${{ secrets.BACKEND_CAPTCHA_SECRET }} >> .env
echo BACKEND_SLACK_WEBHOOK_URL=${{ secrets.BACKEND_SLACK_WEBHOOK_URL }} >> .env
echo BACKEND_LEMONSQUEEZY_WEBHOOK_SECRET=${{ secrets.BACKEND_LEMONSQUEEZY_WEBHOOK_SECRET }} >> .env
echo BACKEND_LEMONSQUEEZY_API_KEY=${{ secrets.BACKEND_LEMONSQUEEZY_API_KEY }} >> .env
echo BACKEND_LEMONSQUEEZY_STORE_ID=${{ secrets.BACKEND_LEMONSQUEEZY_STORE_ID }} >> .env
echo BACKEND_LOGTAIL_TOKEN=${{ secrets.BACKEND_LOGTAIL_TOKEN }} >> .env
working-directory: "./prod-deploy/apps/backend"
- run: docker build -t docker.flows.sh/app-frontend-prod:${{github.sha}} -f infrastructure/docker/next.Dockerfile --build-arg APP=app .
working-directory: "./prod-deploy"
- run: docker build -t docker.flows.sh/web-frontend-prod:${{github.sha}} -f infrastructure/docker/next.Dockerfile --build-arg APP=web .
working-directory: "./prod-deploy"
- run: docker build -t docker.flows.sh/docs-frontend-prod:${{github.sha}} -f infrastructure/docker/next.Dockerfile --build-arg APP=docs .
working-directory: "./prod-deploy"
- run: |
touch .env
echo BACKEND_DATABASE_CONNECTION=${{ secrets.BACKEND_DATABASE_CONNECTION }} >> .env
echo BACKEND_JWT_SECRET=${{ secrets.BACKEND_JWT_SECRET }} >> .env
working-directory: "./prod-deploy/apps/backend"
- run: docker build -t docker.flows.sh/backend-prod:${{github.sha}} -f infrastructure/docker/nest.Dockerfile .
working-directory: "./prod-deploy"
- run: docker push docker.flows.sh/app-frontend-prod:${{github.sha}}
- run: docker push docker.flows.sh/web-frontend-prod:${{github.sha}}
- run: docker push docker.flows.sh/docs-frontend-prod:${{github.sha}}
- run: docker push docker.flows.sh/backend-prod:${{github.sha}}
deploy:
needs: [build]
runs-on: [self-hosted, prod-env]
steps:
- run: docker pull docker.flows.sh/app-frontend-prod:${{github.sha}}
- run: docker pull docker.flows.sh/web-frontend-prod:${{github.sha}}
- run: docker pull docker.flows.sh/docs-frontend-prod:${{github.sha}}
- run: docker pull docker.flows.sh/backend-prod:${{github.sha}}
- run: docker stop flows-app-frontend-prod
- run: docker rm flows-app-frontend-prod
- run: docker run -d --restart always -p 6001:3000 --network flows_supabase_bridge -m 512m --name flows-app-frontend-prod docker.flows.sh/app-frontend-prod:${{github.sha}}
- run: docker stop flows-web-frontend-prod
- run: docker rm flows-web-frontend-prod
- run: docker run -d --restart always -p 6002:3000 -m 512m --name flows-web-frontend-prod docker.flows.sh/web-frontend-prod:${{github.sha}}
- run: docker stop flows-docs-frontend-prod
- run: docker rm flows-docs-frontend-prod
- run: docker run -d --restart always -p 6003:3000 -m 512m --name flows-docs-frontend-prod docker.flows.sh/docs-frontend-prod:${{github.sha}}
- run: docker stop flows-backend-prod
- run: docker rm flows-backend-prod
- run: docker run -d --restart always -p 6005:3005 --network flows_supabase_bridge -m 512m --name flows-backend-prod docker.flows.sh/backend-prod:${{github.sha}}