You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于GitHub Actions实现带手动输入凭据的多环境部署?

基于GitHub Actions的双环境部署方案(带手动JWT输入)

核心方案:手动触发+输入参数

GitHub Actions支持手动触发时的自定义输入参数,结合环境隔离的可选审批机制,刚好能解决你的需求。具体实现思路如下:

1. 触发逻辑调整

将原有的自动部署改为「代码合并到develop分支时触发通知提醒,由有权限人员手动触发部署并输入JWT」,既满足代码更新后的部署触发需求,又解决了凭据频繁更新、权限受限的问题。

2. 工作流配置示例

创建.github/workflows/deploy.yml文件,内容如下:

name: 双环境部署流程
on:
  # 代码合并到develop时,仅触发部署提醒
  push:
    branches: [ develop ]
  # 手动触发时允许输入两个环境的JWT凭据
  workflow_dispatch:
    inputs:
      dev_jwt:
        description: 'Dev环境JWT凭据'
        required: true
        type: string
      test_jwt:
        description: 'Test环境JWT凭据'
        required: true
        type: string

jobs:
  # 代码合并后的通知任务
  send_deploy_alert:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - name: 创建部署提醒Issue
        uses: actions/github-script@v6
        with:
          script: |
            github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: 'Develop分支已更新,可触发部署',
              body: '请前往Actions页面手动触发部署流程,并输入对应环境的JWT凭据'
            })

  # Dev环境部署任务
  deploy_to_dev:
    if: github.event_name == 'workflow_dispatch'
    runs-on: ubuntu-latest
    environment: dev
    # 可选:给Dev环境设置审批人,只有指定人员能确认部署
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 执行Dev环境部署
        run: |
          # 替换为你的实际部署命令,使用输入的JWT参数
          echo "使用Dev JWT: ${{ inputs.dev_jwt }} 执行部署"
          # 示例:npm run deploy:dev --jwt=${{ inputs.dev_jwt }}

  # Test环境部署任务
  deploy_to_test:
    if: github.event_name == 'workflow_dispatch'
    runs-on: ubuntu-latest
    environment: test
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      - name: 执行Test环境部署
        run: |
          echo "使用Test JWT: ${{ inputs.test_jwt }} 执行部署"
          # 替换为你的实际部署命令
          # npm run deploy:test --jwt=${{ inputs.test_jwt }}

3. 关键细节说明

  • 安全的参数传递:手动输入的JWT参数会被GitHub自动掩码处理,不会在工作流日志中明文显示,避免泄露风险。
  • 环境权限控制:通过environment字段绑定GitHub环境,可给每个环境设置审批人列表,确保只有指定人员能确认部署,进一步提升安全性。
  • 灵活触发机制:代码合并后自动提醒,部署时机由运维/权限人员掌控,适配JWT每日更新的场景。

4. 可选优化方向

如果手动输入仍觉繁琐,可考虑对接内部临时密钥分发工具,在部署步骤中调用工具实时拉取最新JWT,但需确保工具的权限管控和安全性。不过对于每日更新的场景,手动输入反而更直接可控,无需额外维护密钥工具。


内容的提问来源于stack exchange,提问作者Shamus Harkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:15:56