-
Notifications
You must be signed in to change notification settings - Fork 46
125 lines (108 loc) · 4.51 KB
/
Copy pathfleek-deploy-common.yml
File metadata and controls
125 lines (108 loc) · 4.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
name: ⚡️ Deploy site (Common)
on:
workflow_dispatch:
workflow_call:
inputs:
environment:
required: true
type: string
jobs:
deploy-to-fleek:
runs-on: ubuntu-22.04
environment: ${{ inputs.environment }}
env:
FLEEK_TOKEN: ${{ secrets.FLEEK_TOKEN }}
DOPPLER_TOKEN: ${{ secrets.DOPPLER_TOKEN }}
TARGET_ENVIRONMENT: ${{ inputs.environment }}
FLEEK_PROJECT_ID: ${{ vars.FLEEK_PROJECT_ID }}
FLEEK_SLUG: ${{ vars.FLEEK_SLUG }}
GITHUB_DASHBOARD_SOURCE_REPO: 'fleek-platform/dashboard'
GITHUB_TOKEN: ${{ github.token }}
PRIVATE_MEILISEARCH_DOCUMENTS_ADMIN_API_KEY: ${{ secrets.PRIVATE_MEILISEARCH_DOCUMENTS_ADMIN_API_KEY }}
PUBLIC_BEEHIIV_PROXY_SERVER_URL: ${{ vars.PUBLIC_BEEHIIV_PROXY_SERVER_URL }}
PUBLIC_DYNAMIC_ENVIRONMENT_ID: ${{ vars.PUBLIC_DYNAMIC_ENVIRONMENT_ID }}
PUBLIC_FLEEK_REST_API_URL: ${{ vars.PUBLIC_FLEEK_REST_API_URL }}
PUBLIC_GRAPHQL_ENDPOINT: ${{ vars.PUBLIC_GRAPHQL_ENDPOINT }}
PUBLIC_MEILISEARCH_DOCUMENTS_CLIENT_API_KEY: ${{ vars.PUBLIC_MEILISEARCH_DOCUMENTS_CLIENT_API_KEY }}
PUBLIC_MEILISEARCH_HOST: ${{ vars.PUBLIC_MEILISEARCH_HOST }}
PUBLIC_MEILISEARCH_INDEX_BILLING: ${{ vars.PUBLIC_MEILISEARCH_INDEX_BILLING }}
PUBLIC_MEILISEARCH_INDEX_BLOG: ${{ vars.PUBLIC_MEILISEARCH_INDEX_BLOG }}
PUBLIC_MEILISEARCH_INDEX_DOCS: ${{ vars.PUBLIC_MEILISEARCH_INDEX_DOCS }}
PUBLIC_MEILISEARCH_INDEX_GUIDES: ${{ vars.PUBLIC_MEILISEARCH_INDEX_GUIDES }}
PUBLIC_MEILISEARCH_INDEX_REFERENCES: ${{ vars.PUBLIC_MEILISEARCH_INDEX_REFERENCES }}
PUBLIC_POSTHOG_API_KEY: ${{ vars.PUBLIC_POSTHOG_API_KEY }}
PUBLIC_POSTHOG_HOST: ${{ vars.PUBLIC_POSTHOG_HOST }}
PUBLIC_SUPPORT_API_HOST: ${{ vars.PUBLIC_SUPPORT_API_HOST }}
PUBLIC_UI_APP_URL: ${{ vars.PUBLIC_UI_APP_URL }}
PUBLIC_UI_AGENTS_APP_URL: ${{ vars.PUBLIC_UI_AGENTS_APP_URL }}
PUBLIC_PERSONA_GENERATOR_API_URL: ${{ vars.PUBLIC_PERSONA_GENERATOR_API_URL }}
PUBLIC_APP_HOSTING_URL: ${{ vars.PUBLIC_APP_HOSTING_URL }}
PUBLIC_APP_ELIZA_URL: ${{ vars.PUBLIC_APP_ELIZA_URL }}
PUBLIC_APP_NEW_HOSTING_URL: ${{ vars.PUBLIC_APP_NEW_HOSTING_URL }}
PUBLIC_APP_RESOURCES_URL: ${{ vars.PUBLIC_APP_RESOURCES_URL }}
PUBLIC_APP_AGENTS_URL: ${{ vars.PUBLIC_APP_AGENTS_URL }}
PUBLIC_OPEN_API_ENDPOINT: ${{ vars.PUBLIC_OPEN_API_ENDPOINT }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- uses: ./.github/actions/setup-nodejs
- name: Cache Astro build
uses: actions/cache@v4
id: astro-cache
with:
path: |
.astro
node_modules/.vite
node_modules/.astro
dist
key: ${{ runner.os }}-astro-${{ hashFiles('src/**/*.{js,ts,jsx,tsx,astro,md,mdx}', 'public/**/*') }}-${{ hashFiles('astro.config.mjs', 'tsconfig.json') }}
restore-keys: |
${{ runner.os }}-astro-${{ hashFiles('src/**/*.{js,ts,jsx,tsx,astro,md,mdx}', 'public/**/*') }}-
${{ runner.os }}-astro-
- name: Install Doppler CLI
uses: dopplerhq/cli-action@v3
- name: Setup Doppler
run: |
doppler configure set token "$DOPPLER_TOKEN"
- name: Env vars health check
run: |
if ! doppler run -- printenv | grep -q 'NEXT_PUBLIC_SDK__AUTHENTICATION_URL'; then
echo "👹 Oops! Missing required environment variable during health check..."
exit 1
fi
echo "🚑 Doppler envVars seem healthy!"
- name: Setup dotenv
run: |
scripts/setup-ci-dotenv
- name: Install Fleek CLI
run: npm i -g @fleek-platform/cli
- run: npm install --include=optional sharp
# TODO: Maybe separate into three steps:
# - Site build
# - Dashboard
# - Deploy
- name: Install Packages
# Obs: Preventing the npm i would block the
# install hook that prepares the apps
# if: steps.node-cache.outputs.cache-hit != 'true'
run: npm install
- name: Setup fleek.config.json
working-directory: ./
run: |
DIST_PATH="./dist"
BUILD="npm run build"
./scripts/setup-fleek-config \
"$FLEEK_SLUG" \
"$DIST_PATH" \
"$BUILD"
- name: Build & deploy
run: |
fleek sites deploy
- name: Clear
run: |
rm .env