Skip to content

Commit 0fe4010

Browse files
committed
feat(repo): refactor and improve multi-tenant deployment workflow
closed COD-258
1 parent ed3d4ae commit 0fe4010

95 files changed

Lines changed: 5733 additions & 681 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/fly-deployment.yml

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@ concurrency:
2828
group: ${{ github.ref }}
2929

3030
jobs:
31-
deploy-env:
31+
pre-deploy:
3232
if: |
3333
!startsWith(github.head_ref || github.ref_name, 'renovate') &&
3434
!startsWith(github.head_ref || github.ref_name, 'update-nx-workspace')
3535
3636
runs-on: ubuntu-latest
3737

3838
outputs:
39-
environment: ${{ steps.environment.outputs.environment }}
39+
apps: ${{ steps.pre-deploy.outputs.apps }}
40+
environment: ${{ steps.pre-deploy.outputs.environment }}
41+
app-tenants: ${{ steps.pre-deploy.outputs.app-tenants }}
4042

4143
steps:
4244
- uses: actions/checkout@v4
@@ -50,19 +52,25 @@ jobs:
5052
- name: Install dependencies
5153
run: pnpm install --frozen-lockfile
5254

53-
- name: Build action
54-
run: pnpm nx build deploy-env-action
55+
- name: Build pre-deploy action
56+
run: pnpm nx build nx-pre-deploy-action
5557

56-
- name: Determine environment
57-
id: environment
58-
uses: ./packages/deploy-env-action
58+
- name: Run pre-deploy
59+
id: pre-deploy
60+
uses: ./packages/nx-pre-deploy-action
61+
with:
62+
infisical-client-id: ${{ secrets.INFISICAL_READ_CLIENT_ID }}
63+
infisical-client-secret: ${{ secrets.INFISICAL_READ_CLIENT_SECRET }}
64+
infisical-project-id: ${{ secrets.INFISICAL_PROJECT_ID }}
5965

6066
fly-deployment:
61-
needs: deploy-env
67+
if: ${{ needs.pre-deploy.outputs.environment != '' }}
68+
69+
needs: pre-deploy
6270
runs-on: ubuntu-latest
6371

6472
# Not possible to provide url since we might have multiple deployments
65-
environment: ${{ needs.deploy-env.outputs.environment }}
73+
environment: ${{ needs.pre-deploy.outputs.environment }}
6674

6775
steps:
6876
- uses: actions/create-github-app-token@v1
@@ -84,34 +92,20 @@ jobs:
8492
- name: Install dependencies
8593
run: pnpm install --frozen-lockfile
8694

87-
- name: Build action
95+
- name: Build fly deployment action
8896
run: pnpm nx build nx-fly-deployment-action
8997

9098
- name: Install Fly CLI
9199
uses: superfly/flyctl-actions/setup-flyctl@master
92100
with:
93101
version: 0.3.45
94102

95-
- name: Analyze affected projects to deploy
103+
- name: Set SHAs for affected calculations
96104
uses: nrwl/nx-set-shas@v4
97105
with:
98106
main-branch-name: main
99107
set-environment-variables-for-job: true
100108

101-
- name: Fetch tenants from Infisical
102-
id: fetch-tenants
103-
run: |
104-
echo "Fetching tenants from Infisical..."
105-
TENANTS=$(npx tsx scripts/fetch-tenants.ts)
106-
echo "tenants<<EOF" >> $GITHUB_OUTPUT
107-
echo "$TENANTS" >> $GITHUB_OUTPUT
108-
echo "EOF" >> $GITHUB_OUTPUT
109-
env:
110-
INFISICAL_CLIENT_ID: ${{ secrets.INFISICAL_READ_CLIENT_ID }}
111-
INFISICAL_CLIENT_SECRET: ${{ secrets.INFISICAL_READ_CLIENT_SECRET }}
112-
INFISICAL_PROJECT_ID: ${{ secrets.INFISICAL_PROJECT_ID }}
113-
DEPLOY_ENV: ${{ needs.deploy-env.outputs.environment }}
114-
115109
- name: Run Deployment to Fly
116110
id: deployment
117111
uses: ./packages/nx-fly-deployment-action
@@ -120,7 +114,7 @@ jobs:
120114
fly-org: ${{ vars.FLY_ORG }}
121115
fly-region: ${{ vars.FLY_REGION }}
122116
token: ${{ steps.generate-token.outputs.token }}
123-
tenants: ${{ steps.fetch-tenants.outputs.tenants }}
117+
app-details: ${{ needs.pre-deploy.outputs.app-tenants }}
124118
secrets: |
125119
INFISICAL_CLIENT_ID=${{ secrets.INFISICAL_READ_CLIENT_ID }}
126120
INFISICAL_CLIENT_SECRET=${{ secrets.INFISICAL_READ_CLIENT_SECRET }}

0 commit comments

Comments
 (0)