You need to enable JavaScript to run this app. GitLab CI如何将一个阶段解密的密钥文件正确传递到后续流水线阶段
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI如何将一个阶段解密的密钥文件正确传递到后续流水线阶段

问题根源

你当前decryption阶段的artifacts配置使用了untracked: true,但你的公私钥是已经提交到Git仓库的已跟踪文件,untracked参数只会收集不在Git跟踪列表内的文件,因此解密后的密钥文件不会被作为制品传递到下一个阶段,build阶段拉取到的仍是仓库里原始的加密版本。

修复方案

1. 调整decryption阶段的artifacts配置

显式指定要传递的解密后文件路径,不要仅依赖untracked参数,配置参考如下:

decryption:
  stage: decryption
  allow_failure: false
  before_script:
    - mkdir -p ~/.ssh
    - eval $(ssh-agent -s)
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  script:
    - chmod 660 ./keys/vault_password.txt
    - echo $ANSIBLE_VAULT_PASSWORD > ./keys/vault_password.txt
    - chmod 660 ./keys/private.key
    - chmod 660 ./keys/public.key
    - ansible-vault decrypt --vault-password-file ./keys/vault_password.txt ./keys/private.key
    - ansible-vault decrypt --vault-password-file ./keys/vault_password.txt ./keys/public.key
    # 调试完成后请删除以下打印明文密钥的代码,避免泄露
    - echo "$(cat ./keys/private.key)"
    - echo "$(cat ./keys/public.key)"
  artifacts:
    # 显式指定要传递的解密后文件路径
    paths:
      - ./keys/private.key
      - ./keys/public.key
    # 密钥类制品设置短过期时间,降低泄露风险
    expire_in: 1 hour

2. 适配后续阶段的密钥传递需求

如果需要把密钥从build阶段继续传递到deploy阶段,给build阶段的artifacts也加上密钥路径配置即可:

build:
  stage: build
  allow_failure: false
  dependencies:
    - decryption
  script:
    - rm -rf vendor/drupal/coder
    - composer install
    - ./vendor/bin/robo ci:build
    - ls -la vendor/drupal/coder
    # 调试完成后请删除以下打印明文密钥的代码
    - echo "$(cat ./keys/private.key)"
    - echo "$(cat ./keys/public.key)"
  artifacts:
    name: "mycompany_build_{$CI_COMMIT_SHA}"
    expire_in: '1 week'
    paths:
      - ./build
      # 新增密钥路径,传递到后续deploy阶段
      - ./keys/private.key
      - ./keys/public.key

如果deploy阶段不需要依赖build的其他制品,也可以直接给deploy阶段设置dependencies: [decryption],直接从decryption阶段拉取密钥,不需要经过build阶段中转。

额外安全建议
  • 调试完成后务必删除所有打印明文密钥的代码,避免密钥泄露到流水线日志
  • 优先使用GitLab内置的CI/CD加密变量存储敏感信息,尽量不要把加密后的密钥提交到代码仓库,进一步降低风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 00:18:02