mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-09-07 16:37:04 +08:00
ci: optimize workflows with parallel jobs and conditional checks (#843)
* ci: optimize workflows with parallel jobs and conditional checks * ci: add sync and tag triggers to frontend_pagefunction_deploy
This commit is contained in:
@@ -10,10 +10,8 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy-frontend:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -25,40 +23,63 @@ jobs:
|
|||||||
|
|
||||||
- uses: pnpm/action-setup@v3
|
- uses: pnpm/action-setup@v3
|
||||||
name: Install pnpm
|
name: Install pnpm
|
||||||
id: pnpm-install
|
|
||||||
with:
|
with:
|
||||||
version: 8
|
version: 8
|
||||||
run_install: false
|
run_install: false
|
||||||
|
|
||||||
- name: Deploy Frontend for ${{ github.ref_name }}
|
- name: Deploy Frontend for ${{ github.ref_name }}
|
||||||
|
if: ${{ env.FRONTEND_NAME != '' }}
|
||||||
run: |
|
run: |
|
||||||
cd frontend/
|
cd frontend/
|
||||||
echo "${{ secrets.FRONTEND_ENV }}" > .env.prod
|
echo "${{ secrets.FRONTEND_ENV }}" > .env.prod
|
||||||
export project_name=${{ secrets.FRONTEND_NAME }}
|
|
||||||
pnpm install --no-frozen-lockfile
|
pnpm install --no-frozen-lockfile
|
||||||
export frontend_branch=${{ secrets.FRONTEND_BRANCH }}
|
export frontend_branch="${{ secrets.FRONTEND_BRANCH }}"
|
||||||
if [ -n "$frontend_branch" ]; then
|
if [ -n "$frontend_branch" ]; then
|
||||||
echo "Deploying branch $frontend_branch"
|
echo "Deploying branch $frontend_branch"
|
||||||
pnpm run deploy:actions --project-name=$project_name --branch $frontend_branch
|
pnpm run deploy:actions --project-name=$FRONTEND_NAME --branch $frontend_branch
|
||||||
else
|
else
|
||||||
echo "Deploying branch production"
|
echo "Deploying branch production"
|
||||||
pnpm run deploy --project-name=$project_name
|
pnpm run deploy --project-name=$FRONTEND_NAME
|
||||||
fi
|
fi
|
||||||
echo "Deploying production for ${{ github.ref_name }}"
|
|
||||||
echo "Deployed for tag ${{ github.ref_name }}"
|
echo "Deployed for tag ${{ github.ref_name }}"
|
||||||
|
|
||||||
export tg_mini_app_project_name=${{ secrets.TG_FRONTEND_NAME }}
|
|
||||||
if [ -n "$tg_mini_app_project_name" ]; then
|
|
||||||
echo "Deploying telegram mini app $tg_mini_app_project_name"
|
|
||||||
if [ -n "$frontend_branch" ]; then
|
|
||||||
echo "Deploying telegram mini app branch $frontend_branch"
|
|
||||||
pnpm run deploy:actions:telegram --project-name=$tg_mini_app_project_name --branch $frontend_branch
|
|
||||||
else
|
|
||||||
echo "Deploying telegram mini app branch production"
|
|
||||||
pnpm run deploy:telegram --project-name=$tg_mini_app_project_name
|
|
||||||
fi
|
|
||||||
echo "Deployed telegram mini app for ${{ github.ref_name }}"
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
FRONTEND_NAME: ${{ secrets.FRONTEND_NAME }}
|
||||||
|
|
||||||
|
deploy-telegram-frontend:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v3
|
||||||
|
name: Install pnpm
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Deploy Telegram Frontend for ${{ github.ref_name }}
|
||||||
|
if: ${{ env.TG_FRONTEND_NAME != '' }}
|
||||||
|
run: |
|
||||||
|
cd frontend/
|
||||||
|
echo "${{ secrets.FRONTEND_ENV }}" > .env.prod
|
||||||
|
pnpm install --no-frozen-lockfile
|
||||||
|
export frontend_branch="${{ secrets.FRONTEND_BRANCH }}"
|
||||||
|
if [ -n "$frontend_branch" ]; then
|
||||||
|
echo "Deploying telegram mini app branch $frontend_branch"
|
||||||
|
pnpm run deploy:actions:telegram --project-name=$TG_FRONTEND_NAME --branch $frontend_branch
|
||||||
|
else
|
||||||
|
echo "Deploying telegram mini app branch production"
|
||||||
|
pnpm run deploy:telegram --project-name=$TG_FRONTEND_NAME
|
||||||
|
fi
|
||||||
|
echo "Deployed telegram mini app for ${{ github.ref_name }}"
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
TG_FRONTEND_NAME: ${{ secrets.TG_FRONTEND_NAME }}
|
||||||
|
|||||||
@@ -1,13 +1,35 @@
|
|||||||
name: Deploy Frontend with page function
|
name: Deploy Frontend with page function
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: [Upstream Sync]
|
||||||
|
types: [completed]
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "*"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
has_config: ${{ steps.check.outputs.has_config }}
|
||||||
|
steps:
|
||||||
|
- name: Check PAGE_TOML
|
||||||
|
id: check
|
||||||
|
run: |
|
||||||
|
if [ -n "$PAGE_TOML" ]; then
|
||||||
|
echo "has_config=true" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "has_config=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
env:
|
||||||
|
PAGE_TOML: ${{ secrets.PAGE_TOML }}
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
|
needs: check
|
||||||
|
if: ${{ needs.check.outputs.has_config == 'true' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -19,7 +41,6 @@ jobs:
|
|||||||
|
|
||||||
- uses: pnpm/action-setup@v3
|
- uses: pnpm/action-setup@v3
|
||||||
name: Install pnpm
|
name: Install pnpm
|
||||||
id: pnpm-install
|
|
||||||
with:
|
with:
|
||||||
version: 8
|
version: 8
|
||||||
run_install: false
|
run_install: false
|
||||||
@@ -33,7 +54,7 @@ jobs:
|
|||||||
echo '${{ secrets.PAGE_TOML }}' > wrangler.toml
|
echo '${{ secrets.PAGE_TOML }}' > wrangler.toml
|
||||||
pnpm install --no-frozen-lockfile
|
pnpm install --no-frozen-lockfile
|
||||||
pnpm run deploy
|
pnpm run deploy
|
||||||
echo "Deploying prodcution for ${{ github.ref_name }}"
|
echo "Deploying production for ${{ github.ref_name }}"
|
||||||
env:
|
env:
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
|||||||
@@ -6,10 +6,8 @@ on:
|
|||||||
- "*"
|
- "*"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-frontend:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -21,7 +19,6 @@ jobs:
|
|||||||
|
|
||||||
- uses: pnpm/action-setup@v3
|
- uses: pnpm/action-setup@v3
|
||||||
name: Install pnpm
|
name: Install pnpm
|
||||||
id: pnpm-install
|
|
||||||
with:
|
with:
|
||||||
version: 8
|
version: 8
|
||||||
run_install: false
|
run_install: false
|
||||||
@@ -32,12 +29,58 @@ jobs:
|
|||||||
- name: Zip Frontend dist
|
- name: Zip Frontend dist
|
||||||
run: cd frontend/dist/ && zip -r frontend.zip * && mv frontend.zip ../
|
run: cd frontend/dist/ && zip -r frontend.zip * && mv frontend.zip ../
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: frontend
|
||||||
|
path: frontend/frontend.zip
|
||||||
|
|
||||||
|
build-telegram-frontend:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v3
|
||||||
|
name: Install pnpm
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
|
||||||
- name: Build Telegram Frontend
|
- name: Build Telegram Frontend
|
||||||
run: cd frontend && pnpm install --no-frozen-lockfile && pnpm build:telegram:release
|
run: cd frontend && pnpm install --no-frozen-lockfile && pnpm build:telegram:release
|
||||||
|
|
||||||
- name: Zip Telegram Frontend dist
|
- name: Zip Telegram Frontend dist
|
||||||
run: cd frontend/dist/ && zip -r telegram-frontend.zip * && mv telegram-frontend.zip ../
|
run: cd frontend/dist/ && zip -r telegram-frontend.zip * && mv telegram-frontend.zip ../
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: telegram-frontend
|
||||||
|
path: frontend/telegram-frontend.zip
|
||||||
|
|
||||||
|
build-backend:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v3
|
||||||
|
name: Install pnpm
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
|
||||||
- name: cp wrangler.toml
|
- name: cp wrangler.toml
|
||||||
run: cd worker && cp wrangler.toml.template wrangler.toml
|
run: cd worker && cp wrangler.toml.template wrangler.toml
|
||||||
|
|
||||||
@@ -57,11 +100,34 @@ jobs:
|
|||||||
pnpm build
|
pnpm build
|
||||||
zip -r worker-with-wasm-mail-parser.zip dist/worker.js dist/*.wasm
|
zip -r worker-with-wasm-mail-parser.zip dist/worker.js dist/*.wasm
|
||||||
|
|
||||||
|
- name: Upload worker.js
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: worker-js
|
||||||
|
path: worker/worker.js
|
||||||
|
|
||||||
|
- name: Upload wasm worker
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: worker-wasm
|
||||||
|
path: worker/worker-with-wasm-mail-parser.zip
|
||||||
|
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build-frontend, build-telegram-frontend, build-backend]
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
steps:
|
||||||
|
- name: Download all artifacts
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
|
||||||
- name: Upload to Release
|
- name: Upload to Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
frontend/frontend.zip
|
artifacts/frontend/frontend.zip
|
||||||
frontend/telegram-frontend.zip
|
artifacts/telegram-frontend/telegram-frontend.zip
|
||||||
worker/worker.js
|
artifacts/worker-js/worker.js
|
||||||
worker/worker-with-wasm-mail-parser.zip
|
artifacts/worker-wasm/worker-with-wasm-mail-parser.zip
|
||||||
|
|||||||
Reference in New Issue
Block a user