Files
EdgeSSH/.github/workflows/deploy.yml
T

58 lines
1.6 KiB
YAML

name: Deploy
on:
push:
branches:
- main
workflow_dispatch:
concurrency:
group: production-deploy
cancel-in-progress: false
permissions:
contents: read
jobs:
deploy:
name: Deploy to Cloudflare
runs-on: ubuntu-latest
timeout-minutes: 15
env:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID || secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
WORKER_NAME: ${{ vars.WORKER_NAME }}
D1_DATABASE_NAME: ${{ vars.D1_DATABASE_NAME }}
D1_DATABASE_ID: ${{ vars.D1_DATABASE_ID }}
CUSTOM_DOMAIN: ${{ vars.CUSTOM_DOMAIN }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22.12.0
cache: npm
- name: Install dependencies
run: npm ci
# 先校验配置,避免构建完成后才发现缺少 Secret,或创建不完整的远端资源。
- name: Validate deployment settings
run: npm run deploy:validate
env:
ENCRYPTION_KEY: ${{ secrets.ENCRYPTION_KEY }}
ACCESS_TEAM_DOMAIN: ${{ secrets.ACCESS_TEAM_DOMAIN }}
ACCESS_AUD: ${{ secrets.ACCESS_AUD }}
- name: Check project
run: npm run check
- name: Provision D1, migrate, sync secrets and deploy Worker
run: npm run deploy
env:
ENCRYPTION_KEY: ${{ secrets.ENCRYPTION_KEY }}
ACCESS_TEAM_DOMAIN: ${{ secrets.ACCESS_TEAM_DOMAIN }}
ACCESS_AUD: ${{ secrets.ACCESS_AUD }}