Deploy Worker #16
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: | |
workflows: ["Update Configuration and Build"] | |
types: | |
- completed | |
env: | |
APP_ID: ${{ secrets.APP_ID }} | |
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} | |
jobs: | |
deploy-to-cloudflare: | |
runs-on: ubuntu-latest | |
name: Automatic Cloudflare Deploy | |
environment: ${{ github.ref == 'refs/heads/main' && 'main' || 'development' }} | |
permissions: | |
contents: write | |
steps: | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.10.0" | |
- uses: actions/checkout@v4 | |
- name: Setup Bun | |
uses: oven-sh/setup-bun@v2 | |
- 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 | 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 "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.87.0" | |
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
secrets: | | |
SUPABASE_URL | |
SUPABASE_KEY | |
CLOUDFLARE_ACCOUNT_ID | |
CLOUDFLARE_API_TOKEN | |
${{ secrets.KERNEL_PUBLIC_KEY && secrets.KERNEL_PUBLIC_KEY != '' && 'KERNEL_PUBLIC_KEY' || '' }} | |
env: | |
SUPABASE_URL: ${{ secrets.SUPABASE_URL }} | |
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
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.json 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 |