106 lines
3.2 KiB
YAML
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
|