我可以将 .env 文件中的变量传递到 .gitlab-ci.yml

Can I pass a variable from .env file into .gitlab-ci.yml

我是 CI/CD 的新手,基本上我正在尝试将此工作添加到 Gitlab CI/CD,它将 运行 通过回购寻找秘密泄漏。它需要一些 API 键传递到那里。我能够直接将此密钥插入 .gitlab-ci.yml 并且它按预期工作 - 作业失败并显示这是由于该密钥在该文件中而发生的。

但我希望将此 API 密钥存储在 .env 文件中,该文件不会被推送到远程仓库并以某种方式将其拉入 .gitlab-ci.yml 文件从那里开始。

这是我的

stages:
  - scanning

gitguardian scan:
  variables:
    GITGUARDIAN_API_KEY: ${process.env.GITGUARDIAN_API_KEY}
  image: gitguardian/ggshield:latest
  stage: scanning
  script: ggshield scan ci

管道失败并显示此消息:Error: Invalid API key. 所以我假设我将它传递给变量的方式是错误的。

CI 变量应该在 gitlab-runner(机器或容器)中作为环境变量可用,它们要么像预定义变量列表 here 那样由 Gitlab 预定义和填充,要么您在存储库或 gitlab 组的设置中添加 Settings > CI/CD > Add Variable.

添加变量后你可以使用下面的语法,你可以通过回显来测试变量是否有正确的值。

variables:
   GITGUARDIAN_API_KEY: "$GITGUARDIAN_API_KEY"
script:
   - echo "$GITGUARDIAN_API_KEY"
   - ggshield scan ci