-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create a sub-action for duplicated task
- Loading branch information
Showing
6 changed files
with
246 additions
and
174 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
name: 'Print Wrangler Logs' | ||
description: 'Prints Wrangler logs files if exist' | ||
inputs: | ||
WORKERS_AI_API_KEY: | ||
description: 'The Workers AI API Key' | ||
required: true | ||
VECTORIZE_API_KEY: | ||
description: 'The Vectorize API Key' | ||
required: true | ||
BUCKET_ACCESS_KEY_ID: | ||
description: 'The Bucket Access Key ID' | ||
required: true | ||
BUCKET_SECRET_KEY: | ||
description: 'The Bucket Secret Key' | ||
requuired: true | ||
BUCKET_SESSION_TOKEN: | ||
description: 'The Bucket Session Token' | ||
requuired: true | ||
GOOGLE_CLIENT_SECRET: | ||
description: 'The Google client secret' | ||
required: true | ||
JWT_SECRET: | ||
description: 'The JWT secret' | ||
required: true | ||
MAPBOX_ACCESS_TOKEN: | ||
description: 'The Mapbox access token' | ||
required: true | ||
OPENAI_API_KEY: | ||
description: 'The OpenAI API Key' | ||
required: true | ||
OPENWEATHER_KEY: | ||
description: 'The OpenWeather API Key' | ||
required: true | ||
SEND_GRID_API_KEY: | ||
description: 'The sendgrid API Key' | ||
required: true | ||
STMP_PASSWORD: | ||
description: 'The smtp password' | ||
required: true | ||
X_AMZ_SECURITY_TOKEN: | ||
description: 'The X-Amz-Security-Token' | ||
required: true | ||
JWT_VERIFICATION_KEY: | ||
description: 'The JWT verification key' | ||
required: true | ||
CLOUDFLARE_API_TOKEN: | ||
description: 'Cloudflare API Token' | ||
required: true | ||
CLOUDFLARE_ACCOUNT_ID: | ||
description: 'Cloudflare Account ID' | ||
required: true | ||
CLOUDFLARE_ENVIRONMENT: | ||
description: 'Cloudflare Environment' | ||
required: true | ||
type: choice | ||
options: | ||
- preview | ||
- production | ||
runs: | ||
using: 'composite' | ||
steps: | ||
- name: Deploy database | ||
uses: cloudflare/[email protected] | ||
with: | ||
wranglerVersion: '3.75.0' | ||
apiToken: ${{ inputs.CLOUDFLARE_API_TOKEN }} | ||
accountId: ${{ inputs.CLOUDFLARE_ACCOUNT_ID }} | ||
workingDirectory: server | ||
# INFO: We need to upload secret manually because the default secrets input of this action `cloudflare/[email protected]` use the `wrangler secret put` command to upload secrets but this command will do not work non-interactive context. | ||
preCommands: > | ||
echo '---Generate and upload secrets---' && | ||
echo '>> Generate secrets file' && | ||
echo '{}' | jq ' | ||
.BUCKET_ACCESS_KEY_ID="${{ inputs.BUCKET_ACCESS_KEY_ID }}" | | ||
.BUCKET_SESSION_TOKEN="${{ inputs.BUCKET_SESSION_TOKEN }}" | | ||
.BUCKET_SECRET_KEY="${{ inputs.BUCKET_SECRET_KEY }}" | | ||
.GOOGLE_CLIENT_SECRET="${{ inputs.GOOGLE_CLIENT_SECRET }}" | | ||
.JWT_SECRET="${{ inputs.JWT_SECRET }}" | | ||
.JWT_VERIFICATION_KEY="${{ inputs.JWT_VERIFICATION_KEY }}" | | ||
.MAPBOX_ACCESS_TOKEN="${{ inputs.MAPBOX_ACCESS_TOKEN }}" | | ||
.OPENAI_API_KEY="${{ inputs.OPENAI_API_KEY }}" | | ||
.OPENWEATHER_KEY="${{ inputs.OPENWEATHER_KEY }}" | | ||
.SEND_GRID_API_KEY="${{ inputs.SEND_GRID_API_KEY }}" | | ||
.STMP_PASSWORD="${{ inputs.STMP_PASSWORD }}" | | ||
.VECTORIZE_API_KEY="${{ inputs.VECTORIZE_API_KEY }}" | | ||
.WORKERS_AI_API_KEY="${{ inputs.WORKERS_AI_API_KEY }}" | | ||
.X_AMZ_SECURITY_TOKEN="${{ inputs.X_AMZ_SECURITY_TOKEN }}" | ||
' > secrets.json && | ||
echo '<< Secrets file generated' && | ||
echo '>> Upload secrets' && | ||
yarn wrangler secret bulk --env ${{ inputs.CLOUDFLARE_ENVIRONMENT }} secrets.json && | ||
echo '<< Secrets uploaded' | ||
command: deploy src/index.ts --env ${{ inputs.CLOUDFLARE_ENVIRONMENT }} | ||
packageManager: yarn | ||
env: | ||
CI: true | ||
NO_D1_WARNING: true | ||
WRANGLER_LOG: debug | ||
WRANGLER_LOG_SANITIZE: false | ||
|
||
- name: Print wrangler extra logs on failure | ||
if: failure() | ||
uses: ./.github/actions/print-wrangler-logs |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
name: 'Print Wrangler Logs' | ||
description: 'Prints Wrangler logs files if exist' | ||
inputs: | ||
CLOUDFLARE_API_TOKEN: | ||
description: 'Cloudflare API Token' | ||
required: true | ||
CLOUDFLARE_ACCOUNT_ID: | ||
description: 'Cloudflare Account ID' | ||
required: true | ||
CLOUDFLARE_ENVIRONMENT: | ||
description: 'Cloudflare Environment' | ||
required: true | ||
type: choice | ||
options: | ||
- preview | ||
- production | ||
runs: | ||
using: 'composite' | ||
steps: | ||
- name: Migrate database | ||
uses: cloudflare/[email protected] | ||
with: | ||
wranglerVersion: '3.75.0' | ||
apiToken: ${{ inputs.CLOUDFLARE_API_TOKEN }} | ||
accountId: ${{ inputs.CLOUDFLARE_ACCOUNT_ID }} | ||
workingDirectory: server | ||
preCommands: | | ||
nl -w1 -s': ' wrangler.toml | ||
command: | | ||
d1 migrations apply ${{ inputs.CLOUDFLARE_ENVIRONMENT }} --remote --env ${{ inputs.CLOUDFLARE_ENVIRONMENT }} | ||
packageManager: yarn | ||
env: | ||
NO_D1_WARNING: true | ||
CI: true | ||
WRANGLER_LOG: debug | ||
WRANGLER_LOG_SANITIZE: false | ||
|
||
- name: Print wrangler extra logs on failure | ||
if: failure() | ||
uses: ./.github/actions/print-wrangler-logs |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
name: 'Print Wrangler Logs' | ||
description: 'Prints Wrangler logs files if exist' | ||
runs: | ||
using: 'composite' | ||
steps: | ||
- name: Print the last wrangler log file | ||
shell: bash | ||
run: | | ||
cat "$(ls -t /home/runner/.config/.wrangler/logs/* 2> /dev/null | head -n 1)" 2> /dev/null || true; | ||
- name: Delete wrangler log files after printing | ||
shell: bash | ||
run: | | ||
rm /home/runner/.config/.wrangler/logs/* || true; |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,76 +1,76 @@ | ||
name: 'Generate Wrangler TOML' | ||
description: 'Generates the wrangler.toml file for Cloudflare Workers' | ||
name: "Generate Wrangler TOML" | ||
description: "Generates the wrangler.toml file for Cloudflare Workers" | ||
inputs: | ||
APP_URL: | ||
description: 'The Application URL' | ||
description: "The Application URL" | ||
required: true | ||
AWS_SIGN_ALGORITHM: | ||
description: 'The AWS sign algorithm' | ||
description: "The AWS sign algorithm" | ||
required: true | ||
BUCKET_ENDPOINT: | ||
description: 'The bucket endpoint' | ||
description: "The bucket endpoint" | ||
required: true | ||
BUCKET_NAME: | ||
description: 'The bucket name' | ||
description: "The bucket name" | ||
required: true | ||
BUCKET_REGION: | ||
description: 'The bucket region' | ||
description: "The bucket region" | ||
required: true | ||
BUCKET_SERVICE: | ||
description: 'The bucket service' | ||
description: "The bucket service" | ||
required: true | ||
BUCKET_SESSION_TOKEN: | ||
description: 'The bucket session token' | ||
description: "The bucket session token" | ||
required: true | ||
environment: | ||
description: 'The current environment' | ||
description: "The current environment" | ||
required: true | ||
CLOUDFLARE_ACCOUNT_ID: | ||
description: 'Cloudflare Account ID' | ||
description: "Cloudflare Account ID" | ||
required: true | ||
DB_ID: | ||
description: 'The database ID' | ||
description: "The database ID" | ||
required: true | ||
GOOGLE_CLIENT_ID: | ||
description: 'Google Client ID' | ||
description: "Google Client ID" | ||
required: true | ||
STMP_EMAIL: | ||
description: 'SMTP Email' | ||
description: "SMTP Email" | ||
required: true | ||
VECTOR_INDEX_NAME: | ||
description: 'The vector index' | ||
description: "The vector index" | ||
required: true | ||
runs: | ||
using: 'composite' | ||
using: "composite" | ||
steps: | ||
- name: Generate wrangler.toml | ||
shell: bash | ||
working-directory: ${{ github.workspace }}/server | ||
run: | | ||
echo 'name = "packrat-api"' > ${{ github.workspace }}/server/wrangler.toml | ||
echo 'main = "src/index.ts"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'compatibility_date = "2024-03-14"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'node_compat = true' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo '[env.${{ inputs.environment }}]' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo '[[env.${{ inputs.environment }}.d1_databases]]' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'binding = "DB"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'database_name = "${{ inputs.environment }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'database_id = "${{ inputs.DB_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo '[env.${{ inputs.environment }}.ai]' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'binding = "AI"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo '[[env.${{ inputs.environment }}.vectorize]]' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'binding = "VECTOR_INDEX"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'index_name = "${{ inputs.VECTOR_INDEX_NAME }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo '[env.${{ inputs.environment }}.vars]' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'APP_URL = "${{ inputs.APP_URL }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'AWS_SIGN_ALGORITHM = "${{ inputs.AWS_SIGN_ALGORITHM }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'BUCKET_ENDPOINT = "${{ inputs.BUCKET_ENDPOINT }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'BUCKET_NAME = "${{ inputs.BUCKET_NAME }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'BUCKET_REGION = "${{ inputs.BUCKET_REGION }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'BUCKET_SERVICE = "${{ inputs.BUCKET_SERVICE }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'BUCKET_SESSION_TOKEN = "${{ inputs.BUCKET_SESSION_TOKEN }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'CLOUDFLARE_ACCOUNT_ID = "${{ inputs.CLOUDFLARE_ACCOUNT_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'GOOGLE_CLIENT_ID = "${{ inputs.GOOGLE_CLIENT_ID }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'NODE_ENV = "${{ inputs.environment }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'OSM_URI = "https://overpass-api.de/api/interpreter"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'STMP_EMAIL = "${{ inputs.STMP_EMAIL }}"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'WEATHER_URL = "https://api.openweathermap.org/data/2.5/forecast"' >> ${{ github.workspace }}/server/wrangler.toml | ||
echo 'name = "packrat-api"' > wrangler.toml | ||
echo 'main = "src/index.ts"' >> wrangler.toml | ||
echo 'compatibility_date = "2024-03-14"' >> wrangler.toml | ||
echo 'node_compat = true' >> wrangler.toml | ||
echo '[env.${{ inputs.environment }}]' >> wrangler.toml | ||
echo '[[env.${{ inputs.environment }}.d1_databases]]' >> wrangler.toml | ||
echo 'binding = "DB"' >> wrangler.toml | ||
echo 'database_name = "${{ inputs.environment }}"' >> wrangler.toml | ||
echo 'database_id = "${{ inputs.DB_ID }}"' >> wrangler.toml | ||
echo '[env.${{ inputs.environment }}.ai]' >> wrangler.toml | ||
echo 'binding = "AI"' >> wrangler.toml | ||
echo '[[env.${{ inputs.environment }}.vectorize]]' >> wrangler.toml | ||
echo 'binding = "VECTOR_INDEX"' >> wrangler.toml | ||
echo 'index_name = "${{ inputs.VECTOR_INDEX_NAME }}"' >> wrangler.toml | ||
echo '[env.${{ inputs.environment }}.vars]' >> wrangler.toml | ||
echo 'APP_URL = "${{ inputs.APP_URL }}"' >> wrangler.toml | ||
echo 'AWS_SIGN_ALGORITHM = "${{ inputs.AWS_SIGN_ALGORITHM }}"' >> wrangler.toml | ||
echo 'BUCKET_ENDPOINT = "${{ inputs.BUCKET_ENDPOINT }}"' >> wrangler.toml | ||
echo 'BUCKET_NAME = "${{ inputs.BUCKET_NAME }}"' >> wrangler.toml | ||
echo 'BUCKET_REGION = "${{ inputs.BUCKET_REGION }}"' >> wrangler.toml | ||
echo 'BUCKET_SERVICE = "${{ inputs.BUCKET_SERVICE }}"' >> wrangler.toml | ||
echo 'CLOUDFLARE_ACCOUNT_ID = "${{ inputs.CLOUDFLARE_ACCOUNT_ID }}"' >> wrangler.toml | ||
echo 'GOOGLE_CLIENT_ID = "${{ inputs.GOOGLE_CLIENT_ID }}"' >> wrangler.toml | ||
echo 'NODE_ENV = "${{ inputs.environment }}"' >> wrangler.toml | ||
echo 'OSM_URI = "https://overpass-api.de/api/interpreter"' >> wrangler.toml | ||
echo 'STMP_EMAIL = "${{ inputs.STMP_EMAIL }}"' >> wrangler.toml | ||
echo 'WEATHER_URL = "https://api.openweathermap.org/data/2.5/forecast"' >> wrangler.toml |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,84 +33,42 @@ jobs: | |
uses: ./.github/actions/setup-wrangler-toml | ||
with: | ||
environment: preview | ||
APP_URL: ${{ secrets.VITE_PUBLIC_APP_URL }} | ||
APP_URL: ${{ secrets.PREVIEW_APP_URL }} | ||
AWS_SIGN_ALGORITHM: ${{ secrets.PREVIEW_AWS_SIGN_ALGORITHM }} | ||
BUCKET_ENDPOINT: ${{ secrets.PREVIEW_BUCKET_ENDPOINT }} | ||
BUCKET_NAME: ${{ secrets.PREVIEW_BUCKET_NAME }} | ||
BUCKET_REGION: ${{ secrets.PREVIEW_BUCKET_REGION }} | ||
BUCKET_SERVICE: ${{ secrets.PREVIEW_BUCKET_SERVICE }} | ||
BUCKET_SESSION_TOKEN: ${{ secrets.PREVIEW_BUCKET_SESSION_TOKEN }} | ||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | ||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }} | ||
DB_ID: ${{ secrets.PREVIEW_DB_ID }} | ||
GOOGLE_CLIENT_ID: ${{ secrets.PREVIEW_GOOGLE_CLIENT_ID }} | ||
STMP_EMAIL: ${{ secrets.PREVIEW_STMP_EMAIL }} | ||
VECTOR_INDEX_NAME: ${{ secrets.PREVIEW_VECTOR_INDEX || 'vector-index-preview' }} | ||
VECTOR_INDEX_NAME: ${{ secrets.PREVIEW_VECTOR_INDEX }} | ||
|
||
- name: Migrate database | ||
uses: cloudflare/[email protected] | ||
uses: ./.github/actions/migrate-d1-database | ||
with: | ||
wranglerVersion: '3.75.0' | ||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | ||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID}} | ||
workingDirectory: server | ||
preCommands: | | ||
echo '---Clear previous wrangler logs---' | ||
rm /home/runner/.config/.wrangler/logs/* || true | ||
command: d1 migrations apply preview --remote --env preview | ||
packageManager: yarn | ||
env: | ||
NO_D1_WARNING: true | ||
CI: true | ||
WRANGLER_LOG: debug | ||
WRANGLER_LOG_SANITIZE: false | ||
|
||
- name: Print wrangler extra logs on failure | ||
if: failure() | ||
run: | | ||
cat "$(ls -t /home/runner/.config/.wrangler/logs/* | head -n 1)" || true; | ||
CLOUDFLARE_API_TOKEN: ${{ secrets.PREVIEW_CLOUDFLARE_API_TOKEN }} | ||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }} | ||
CLOUDFLARE_ENVIRONMENT: preview | ||
|
||
- name: Deploy | ||
uses: cloudflare/[email protected] | ||
with: | ||
wranglerVersion: '3.75.0' | ||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | ||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID}} | ||
workingDirectory: server | ||
# INFO: We need to upload secret manually because the default secrets input of this action `cloudflare/[email protected]` use the `wrangler secret put` command to upload secrets but this command will do not work non-interactive context. | ||
preCommands: > | ||
echo '---Clear previous wrangler logs file---' && | ||
rm /home/runner/.config/.wrangler/logs/* || true && | ||
echo '---Generate and upload secrets---' && | ||
echo '>> Generate secrets file' && | ||
echo '{}' | jq ' | ||
.WORKERS_AI_API_KEY="${{ secrets.PREVIEW_WORKERS_AI_API_KEY }}" | | ||
.VECTORIZE_API_KEY="${{ secrets.PREVIEW_VECTORIZE_API_KEY }}" | | ||
.BUCKET_ACCESS_KEY_ID="${{ secrets.PREVIEW_BUCKET_ACCESS_KEY_ID }}" | | ||
.GOOGLE_CLIENT_SECRET="${{ secrets.PREVIEW_GOOGLE_CLIENT_SECRET }}" | | ||
.JWT_SECRET="${{ secrets.PREVIEW_JWT_SECRET }}" | | ||
.MAPBOX_ACCESS_TOKEN="${{ secrets.PREVIEW_MAPBOX_ACCESS_TOKEN }}" | | ||
.OPENAI_API_KEY="${{ secrets.PREVIEW_OPENAI_API_KEY }}" | | ||
.OPENWEATHER_KEY="${{ secrets.PREVIEW_OPENWEATHER_KEY }}" | | ||
.SEND_GRID_API_KEY="${{ secrets.PREVIEW_SEND_GRID_API_KEY }}" | | ||
.STMP_PASSWORD="${{ secrets.PREVIEW_STMP_PASSWORD }}" | | ||
.VECTORIZE_API_KEY="${{ secrets.PREVIEW_VECTORIZE_API_KEY }}" | | ||
.X_AMZ_SECURITY_TOKEN="${{ secrets.PREVIEW_X_AMZ_SECURITY_TOKEN }}" | | ||
.JWT_VERIFICATION_KEY="${{ secrets.PREVIEW_JWT_SECRET }}" | ||
' > secrets.json && | ||
echo '<< Secrets file generated' && | ||
echo '>> Upload secrets' && | ||
yarn wrangler secret bulk --env preview secrets.json && | ||
echo '<< Secrets uploaded' | ||
command: deploy src/index.ts --env preview | ||
packageManager: yarn | ||
env: | ||
CI: true | ||
NO_D1_WARNING: true | ||
WRANGLER_LOG: debug | ||
WRANGLER_LOG_SANITIZE: false | ||
|
||
- name: Print wrangler extra logs on failure | ||
if: failure() | ||
run: | | ||
cat "$(ls -t /home/runner/.config/.wrangler/logs/* | head -n 1)" || true; | ||
BUCKET_ACCESS_KEY_ID: ${{ secrets.PREVIEW_BUCKET_ACCESS_KEY_ID }} | ||
BUCKET_SECRET_KEY: ${{ secrets.PREVIEW_BUCKET_SECRET_KEY }} | ||
CLOUDFLARE_API_TOKEN: ${{ secrets.PREVIEW_CLOUDFLARE_API_TOKEN }} | ||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.PREVIEW_CLOUDFLARE_ACCOUNT_ID }} | ||
CLOUDFLARE_ENVIRONMENT: preview | ||
GOOGLE_CLIENT_SECRET: ${{ secrets.PREVIEW_GOOGLE_CLIENT_SECRET }} | ||
JWT_SECRET: ${{ secrets.PREVIEW_JWT_SECRET }} | ||
JWT_VERIFICATION_KEY: ${{ secrets.PREVIEW_JWT_SECRET }} | ||
MAPBOX_ACCESS_TOKEN: ${{ secrets.PREVIEW_MAPBOX_ACCESS_TOKEN }} | ||
OPENAI_API_KEY: ${{ secrets.PREVIEW_OPENAI_API_KEY }} | ||
OPENWEATHER_KEY: ${{ secrets.PREVIEW_OPENWEATHER_KEY }} | ||
SEND_GRID_API_KEY: ${{ secrets.PREVIEW_SEND_GRID_API_KEY }} | ||
STMP_PASSWORD: ${{ secrets.PREVIEW_STMP_PASSWORD }} | ||
VECTORIZE_API_KEY: ${{ secrets.PREVIEW_VECTORIZE_API_KEY }} | ||
WORKERS_AI_API_KEY: ${{ secrets.PREVIEW_WORKERS_AI_API_KEY }} | ||
X_AMZ_SECURITY_TOKEN: ${{ secrets.PREVIEW_X_AMZ_SECURITY_TOKEN }} |
Oops, something went wrong.