name: 私有通道放量 / 回滚

# 手动操作私有通道的清单（POS-46 第 2 期），不传包、不签名：
#   promote  current 立即全量（紧急修复用；平时满 24 小时云端自己当全量）
#   rollback current 换回 previous 并全量：只拦住还没升上去的设备；已经装了新版的设备默认拒绝降级，
#            不会自己退回去（见 scripts/cli-release/RUNBOOK.md「回滚」）
# 必须在 tag 上运行（Run workflow 时 "Use workflow from" 选一个 x.y.z tag）：environment「cli-rollout」只允许 tag 部署。
# 用单独的 environment 和 AWS 角色（AWS_CLI_ROLLOUT_ROLE_ARN，只信任 environment cli-rollout）：只能读写清单，没有 kms:Sign，
# 也传不了包；发布用的签名角色只信任 cli-release，两边互相拿不到对方的角色。
on:
  workflow_dispatch:
    inputs:
      action:
        description: 'promote = 立即全量；rollback = 回到上一版'
        type: choice
        options: [promote, rollback]
        required: true

permissions: {}

concurrency:
  group: cli-release-manifest
  cancel-in-progress: false

jobs:
  rollout:
    runs-on: ubuntu-latest
    environment: cli-rollout
    permissions:
      contents: read
      id-token: write # 只用来换 AWS 角色
    steps:
      - name: 只能在 tag 上运行
        if: github.ref_type != 'tag'
        run: |
          echo "::error::请在 Run workflow 的 Use workflow from 里选一个 tag"
          exit 1
      - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
      - uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1
        with:
          role-to-assume: ${{ vars.AWS_CLI_ROLLOUT_ROLE_ARN }}
          aws-region: eu-central-1
      - name: 改清单
        env:
          BUCKET: ${{ vars.CLI_RELEASE_BUCKET || 'aaden-cli-releases' }}
          ACTION: ${{ inputs.action }}
        run: bash scripts/cli-release/rollout.sh "$ACTION"
