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

如何在GitHub Action中从1Password动态拉取密钥至环境变量?

解决GitHub Action中1Password密钥条目动态替换的问题

直接在env字段里写$col2不会被GitHub Action自动解析,得用GitHub自带的表达式语法${{ ... }}来引用变量,才能让1Password Action拿到正确的条目名称。

具体解决方案分两种场景:

场景1:变量来自工作流输入参数

如果col2是触发工作流时传入的参数(比如指定prod),可以这么写:

name: 加载1Password密钥
on:
  workflow_dispatch:
    inputs:
      environment:
        description: '环境标识(prod/staging)'
        required: true
        default: 'prod'

jobs:
  load-secrets:
    runs-on: ubuntu-latest
    steps:
      - name: 加载密钥
        uses: 1password/load-secrets-action@v2
        with:
          export-env: true
        env:
          OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
          DATABASE_PWD: "op://personal/${{ inputs.environment }}/password"
          DATABASE_USER: "op://personal/${{ inputs.environment }}/username"

触发工作流时选择prod,${{ inputs.environment }}会自动替换成prod,1Password就能拉取对应环境的密钥。

场景2:变量来自前置步骤设置的环境变量

如果col2是在前面步骤中定义的环境变量,代码改成这样:

jobs:
  load-secrets:
    runs-on: ubuntu-latest
    steps:
      - name: 设置环境变量
        run: echo "col2=prod" >> $GITHUB_ENV

      - name: 加载密钥
        uses: 1password/load-secrets-action@v2
        with:
          export-env: true
        env:
          OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
          DATABASE_PWD: "op://personal/${{ env.col2 }}/password"
          DATABASE_USER: "op://personal/${{ env.col2 }}/username"

这里用${{ env.col2 }}引用前置步骤设置的变量,变量会在执行1Password Action前被替换成实际值,确保拉取正确的密钥条目。

核心逻辑:GitHub Action不会自动识别env字段里的$col2这类shell变量,必须用它的表达式语法${{ ... }}来引用工作流参数、环境变量或其他上下文变量,才能完成动态替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:27:39