如何在GitHub Actions工作流中传递全部环境变量与密钥
无需逐个映射即可使用GitHub环境变量和密钥的方法
当然有,两种简便方法可以批量导入环境里的所有变量和密钥,不用手动逐个映射:
方法1:在步骤/Job级别批量注入
直接通过${{ vars }}和${{ secrets }}批量导入当前环境下的所有变量和密钥,示例如下:
仅对单个步骤生效
jobs: build: runs-on: ubuntu-latest environment: dev steps: - name: Build env: ${{ vars }} # 导入环境中所有vars(FOO、BAR、BAZ等) ${{ secrets }} # 导入环境中所有secrets(TOKEN等) run: | # 直接使用变量,无需提前映射 echo "FOO的值:$FOO" echo "TOKEN已加载(日志会自动屏蔽敏感内容):$TOKEN"
对整个Job的所有步骤生效
如果想让Job下的所有步骤都能直接使用这些变量,把批量注入的逻辑放在Job级别即可:
jobs: build: runs-on: ubuntu-latest environment: dev env: ${{ vars }} ${{ secrets }} steps: - name: 第一步 run: echo "BAR的值:$BAR" - name: 第二步 run: echo "BAZ的值:$BAZ"
方法2:全局默认注入所有步骤
通过defaults.run.env配置,让仓库中所有Job的所有run步骤都自动加载环境变量和密钥(适合全仓库通用的场景):
defaults: run: env: ${{ vars }} ${{ secrets }} jobs: build: runs-on: ubuntu-latest environment: dev steps: - name: Build run: | echo "FOO的值:$FOO" echo "TOKEN已加载"
注意事项
- 若变量名和密钥名重复,后声明的会覆盖先声明的(比如上面示例中
${{ secrets }}在${{ vars }}之后,同名的话密钥会覆盖变量) - 敏感密钥会被GitHub自动屏蔽,在日志中显示为
***,这是正常的安全机制 - 只有当前指定环境(
dev)下的变量和密钥会被导入,仓库级的变量/密钥会和环境级的合并(环境级优先级更高)
内容的提问来源于stack exchange,提问作者j12y
相关产品推荐
相关产品推荐

