Skip to content

Merge pull request #255 from partner-up-dev/develop #272

Merge pull request #255 from partner-up-dev/develop

Merge pull request #255 from partner-up-dev/develop #272

name: Deploy Backend to Aliyun FC
on:
workflow_dispatch:
inputs:
publish_layer_only:
description: "Publish node_modules layer only (skip backend deploy)"
type: boolean
default: false
push:
branches:
- master
- develop
paths:
- ".node-version"
- "apps/backend/**"
- ".github/workflows/backend-fc-deploy.yml"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "scripts/ci/fc/**"
- "scripts/fc_*.py"
permissions:
contents: write
issues: write
pull-requests: write
concurrency:
group: backend-fc-deploy
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment: ${{ github.ref == 'refs/heads/master' && 'production' || 'staging' }}
env:
ALIYUN_FC_REGION: ${{ vars.ALIYUN_FC_REGION }}
ALIYUN_FC_DB_MIGRATION_FUNCTION_NAME: ${{ vars.ALIYUN_FC_DB_MIGRATION_FUNCTION_NAME }}
ALIYUN_FC_FUNCTION_NAME: ${{ vars.ALIYUN_FC_FUNCTION_NAME }}
ALIYUN_FC_ROLE_ARN: ${{ vars.ALIYUN_FC_ROLE_ARN }}
ALIYUN_FC_RESOURCE_GROUP_ID: ${{ vars.ALIYUN_FC_RESOURCE_GROUP_ID }}
ALIYUN_FC_NODE_MODULES_LAYER_NAME: ${{ vars.ALIYUN_FC_NODE_MODULES_LAYER_NAME }}
ALIYUN_FC_LOG_PROJECT: ${{ vars.ALIYUN_FC_LOG_PROJECT }}
ALIYUN_FC_LOG_STORE: ${{ vars.ALIYUN_FC_LOG_STORE }}
ALIYUN_FC_VPC_ID: ${{ vars.ALIYUN_FC_VPC_ID }}
ALIYUN_FC_SECURITY_GROUP_ID: ${{ vars.ALIYUN_FC_SECURITY_GROUP_ID }}
ALIYUN_FC_VSWITCH_ID_PRIMARY: ${{ vars.ALIYUN_FC_VSWITCH_ID_PRIMARY }}
ALIYUN_FC_VSWITCH_ID_SECONDARY: ${{ vars.ALIYUN_FC_VSWITCH_ID_SECONDARY }}
ALIYUN_FC_OSS_ENDPOINT: ${{ vars.ALIYUN_FC_OSS_ENDPOINT }}
ALIYUN_FC_OSS_BUCKET: ${{ vars.ALIYUN_FC_OSS_BUCKET }}
ALIYUN_FC_OSS_BUCKET_PATH: ${{ vars.ALIYUN_FC_OSS_BUCKET_PATH }}
ALIYUN_FC_PATH: ${{ vars.ALIYUN_FC_PATH }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DATABASE_URL_FOR_MIGRATION: ${{ secrets.DATABASE_URL_FOR_MIGRATION }}
FIXED_IP_HTTP_PROXY: ${{ secrets.FIXED_IP_HTTP_PROXY }}
WECHAT_OFFICIAL_ACCOUNT_APP_ID: ${{ secrets.WECHAT_OFFICIAL_ACCOUNT_APP_ID }}
WECHAT_OFFICIAL_ACCOUNT_APP_SECRET: ${{ secrets.WECHAT_OFFICIAL_ACCOUNT_APP_SECRET }}
WECHAT_AUTH_SESSION_SECRET: ${{ secrets.WECHAT_AUTH_SESSION_SECRET }}
WECHAT_OAUTH_CALLBACK_URL: ${{ vars.WECHAT_OAUTH_CALLBACK_URL }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
LLM_BASE_URL: ${{ vars.LLM_BASE_URL }}
LLM_DEFAULT_MODEL: ${{ vars.LLM_DEFAULT_MODEL }}
FRONTEND_URL: ${{ vars.FRONTEND_URL }}
PAYMENT_NOTIFY_BASE_URL: ${{ vars.PAYMENT_NOTIFY_BASE_URL }}
AUTH_JWT_SECRET: ${{ secrets.AUTH_JWT_SECRET }}
WECOM_TOKEN: ${{ secrets.WECOM_TOKEN }}
WECOM_ENCODING_AES_KEY: ${{ secrets.WECOM_ENCODING_AES_KEY }}
WECOM_CORP_ID: ${{ secrets.WECOM_CORP_ID }}
WECOM_APP_AGENT_ID: ${{ secrets.WECOM_APP_AGENT_ID }}
WECOM_APP_SECRET: ${{ secrets.WECOM_APP_SECRET }}
JOB_RUNNER_INTERNAL_TOKEN: ${{ secrets.JOB_RUNNER_INTERNAL_TOKEN }}
ALIBABA_CLOUD_ACCESS_KEY_ID: ${{ secrets.ALIBABA_CLOUD_ACCESS_KEY_ID }}
ALIBABA_CLOUD_ACCESS_KEY_SECRET: ${{ secrets.ALIBABA_CLOUD_ACCESS_KEY_SECRET }}
ALIBABA_CLOUD_ACCOUNT_ID: ${{ secrets.ALIBABA_CLOUD_ACCOUNT_ID }}
BACKEND_COMMIT_HASH: ${{ github.sha }}
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
PARTNERUP_ENVIRONMENT: ${{ github.ref == 'refs/heads/master' && 'production' || 'staging' }}
PUBLISH_LAYER_ONLY: ${{ github.event_name == 'workflow_dispatch' && inputs.publish_layer_only == true }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup pnpm
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version-file: .node-version
cache: pnpm
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Deploy backend through repository script
run: bash scripts/ci/fc/deploy_backend.sh
- name: Create backend GitHub Release
if: (github.event_name != 'workflow_dispatch' || inputs.publish_layer_only != true) && github.ref_name == 'master'
uses: googleapis/release-please-action@v5
with:
token: ${{ secrets.RELEASE_PLEASE_TOKEN || secrets.GITHUB_TOKEN }}
config-file: .github/release-please-backend-github-release.json
manifest-file: .release-please-manifest.json
skip-github-pull-request: true