Files
controller-v2/.gitea/workflows/deploy-b9.yml
T
fucheng 650e8ef017
Deploy B9 / deploy (push) Successful in 3m2s
ci: add B9 branch deployment to S3 and CloudFront
2026-11-02 11:17:14 +08:00

106 lines
3.2 KiB
YAML

name: Deploy B9
on:
push:
branches:
- b9
workflow_dispatch:
inputs:
environment:
description: Deployment environment
type: choice
options:
- prod
- test
default: prod
required: true
concurrency:
group: deploy-b9
cancel-in-progress: false
jobs:
deploy:
runs-on: windows-cross
timeout-minutes: 30
env:
TARGET_ENV: ${{ inputs.environment || 'prod' }}
AWS_PAGER: ''
AWS_EC2_METADATA_DISABLED: 'true'
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
with:
persist-credentials: false
- name: Resolve deployment directory
env:
DEPLOY_REF: ${{ github.ref }}
DEPLOY_BRANCH: ${{ github.ref_name }}
run: |
set -eu
case "$DEPLOY_REF" in
refs/heads/*) ;;
*) echo "Deployment requires a branch"; exit 1 ;;
esac
case "$DEPLOY_BRANCH" in
main) PROJECT=x8 ;;
x9|b9|bd9|bh9) PROJECT="$DEPLOY_BRANCH" ;;
*) echo "Unsupported device branch"; exit 1 ;;
esac
echo "DEPLOY_PROJECT_NAME=$PROJECT" >> "$GITHUB_ENV"
echo "Deploying branch $DEPLOY_BRANCH to S3 directory $PROJECT"
- name: Set up Node.js
uses: https://github.com/actions/setup-node@v4
with:
node-version: '24'
- name: Install pnpm
run: npm install --global pnpm@11.5.2
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build legacy and modern applications
env:
VITE_AI_API_URL: ${{ vars.VITE_AI_API_URL }}
run: |
set -eu
case "$TARGET_ENV" in
prod) pnpm run build ;;
test) pnpm run build:test ;;
*) echo "Unsupported deployment environment"; exit 1 ;;
esac
test -s dist/i.html
test -s dist/legacy/i.legacy.html
test -s dist/modern/i.modern.html
- name: Install AWS CLI
run: |
set -eu
if ! command -v aws >/dev/null 2>&1; then
CLI_DIR=$(mktemp -d)
curl --fail --silent --show-error --location \
--connect-timeout 20 --max-time 300 \
https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip \
--output "$CLI_DIR/awscliv2.zip"
unzip -q "$CLI_DIR/awscliv2.zip" -d "$CLI_DIR"
"$CLI_DIR/aws/install" --install-dir "$CLI_DIR/installed" --bin-dir /usr/local/bin
fi
aws --version
- name: Deploy to S3 and invalidate CloudFront
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_SESSION_TOKEN: ${{ secrets.AWS_SESSION_TOKEN }}
AWS_DEFAULT_REGION: ${{ vars.AWS_REGION }}
run: |
set -eu
test -n "$AWS_ACCESS_KEY_ID" || { echo "Missing secret AWS_ACCESS_KEY_ID"; exit 1; }
test -n "$AWS_SECRET_ACCESS_KEY" || { echo "Missing secret AWS_SECRET_ACCESS_KEY"; exit 1; }
test -n "$AWS_DEFAULT_REGION" || { echo "Missing variable AWS_REGION"; exit 1; }
bash scripts/deploy.sh "$TARGET_ENV" -yr