Deploy Worker #46
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
name: Deploy Worker | |
on: | |
workflow_dispatch: | |
workflow_run: | |
# We run this workflow after the configuration is updated to avoid conflicts | |
# while updating the manifest.json file | |
workflows: ["Update Configuration and Build"] | |
types: | |
- completed | |
env: | |
APP_ID: ${{ secrets.APP_ID }} | |
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
name: Deploy | |
permissions: | |
contents: write | |
steps: | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.10.0" | |
- uses: actions/checkout@v4 | |
- name: Update wrangler.toml Name Field | |
run: | | |
branch_name=$(echo '${{ github.ref }}' | sed 's#refs/heads/##' | sed 's#[^a-zA-Z0-9]#-#g') | |
# Extract base name from wrangler.toml | |
base_name=$(grep '^name = ' wrangler.toml | head -n 1 | sed 's/^name = "\(.*\)"$/\1/') | |
# Concatenate branch name with base name | |
new_name="${base_name}-${branch_name}" | |
# Truncate the new name to 63 characters for RFC 1035 | |
new_name=$(echo "$new_name" | cut -c 1-63) | |
# Update the wrangler.toml file | |
sed -i '0,/^name = .*/{s/^name = .*/name = "'"$new_name"'"/}' wrangler.toml | |
echo "Updated wrangler.toml name to: $new_name" | |
- name: Deploy with Wrangler | |
id: wrangler_deploy | |
uses: cloudflare/wrangler-action@v3 | |
with: | |
wranglerVersion: "3.79.0" | |
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
secrets: | | |
SUPABASE_URL | |
SUPABASE_KEY | |
${{ secrets.KERNEL_PUBLIC_KEY && secrets.KERNEL_PUBLIC_KEY != '' && 'KERNEL_PUBLIC_KEY' || '' }} | |
env: | |
SUPABASE_URL: ${{ secrets.SUPABASE_URL }} | |
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }} | |
KERNEL_PUBLIC_KEY: ${{ secrets.KERNEL_PUBLIC_KEY }} | |
- name: Update manifest.json worker url | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
const fs = require('fs'); | |
const path = require('path'); | |
const manifestPath = path.resolve("${{ github.workspace }}", './manifest.json'); | |
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8')); | |
manifest["homepage_url"] = "${{ steps.wrangler_deploy.outputs.deployment-url }}"; | |
const updatedManifest = JSON.stringify(manifest, null, 2); | |
fs.writeFileSync(manifestPath, updatedManifest); | |
console.log('Updated manifest:', updatedManifest); | |
- name: Get GitHub App token | |
if: env.APP_ID != '' && env.APP_PRIVATE_KEY != '' | |
uses: actions/create-github-app-token@v1 | |
id: app-token | |
with: | |
app-id: ${{ env.APP_ID }} | |
private-key: ${{ env.APP_PRIVATE_KEY }} | |
- name: Format manifest using Prettier | |
shell: bash | |
run: | | |
bun add -DE prettier | |
bun prettier --write . | |
- name: Commit file | |
uses: swinton/[email protected] | |
env: | |
GH_TOKEN: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }} | |
with: | |
files: | | |
manifest.json | |
commit-message: "chore: [skip ci] update manifest.json url" | |
ref: ${{ github.ref }} | |
- name: Write Deployment URL to Summary | |
run: | | |
echo "### Deployment URL" >> $GITHUB_STEP_SUMMARY | |
echo "${{ steps.wrangler_deploy.outputs.deployment-url }}" >> $GITHUB_STEP_SUMMARY |