如何以保存方式设置GitLab环境变量?

如何以保存方式设置GitLab环境变量?,gitlab,environment-variables,gitlab-ci,gitlab-ci-runner,Gitlab,Environment Variables,Gitlab Ci,Gitlab Ci Runner,我不想将敏感凭据(如API密钥、密码等)放入我的分支。 为此,GitLab(和其他CI/CD服务)能够设置环境变量。它们将在部署过程中注入脚本 我知道GitLab设置它们的两种方法: 通过用户界面(项目⇒ 设置⇒ CI/CD⇒ 变量) Via.gitlab-ci.yml 在我看来,第一种方法是安全的,因为没有任何带有凭据的文件保存在git repo中,这也是更复杂的方法。。。因为我必须通过GitLab GUI手动设置每个变量 从第二个角度看问题,即.gitlab-ci.yml被保存到gitlab

我不想将敏感凭据(如API密钥、密码等)放入我的分支。 为此,GitLab(和其他CI/CD服务)能够设置环境变量。它们将在部署过程中注入脚本

我知道GitLab设置它们的两种方法:

  • 通过用户界面(项目⇒ 设置⇒ CI/CD⇒ 变量)
  • Via.gitlab-ci.yml
  • 在我看来,第一种方法是安全的,因为没有任何带有凭据的文件保存在git repo中,这也是更复杂的方法。。。因为我必须通过GitLab GUI手动设置每个变量

    从第二个角度看问题,即.gitlab-ci.yml被保存到gitlab repo中,因此凭据不安全

    问题: 有没有一种方法可以在文件中定义ENV变量并将其提供给GitLab,而无需将它们放入分支中? 或者有没有其他方法可以在GitLab中轻松安全地创建这些环境变量

    有没有办法在文件中定义环境变量

    是的,在您提到的UI设置中,您可以将变量类型指定为
    变量
    (键:值)或
    文件
    (键中将传递到包含值输入内容的机密文件的路径)

    因此,文件变量似乎就是您要寻找的

    并为变量提供良好的描述。就我个人而言,我发现其他非常有用的选项:变量屏蔽和保护状态。

    谢谢makozaki, 这是一个很好的提示,但有一些特殊要求:

    首先进入你的项目⇒ 设置⇒ CI/CD⇒ 变量并按如下方式添加它们:

    将转换为文件名,您输入的值将作为此文件中的数据

    在CI流程的作业日志中,它提供了新生成文件的完整路径。。。看起来是这样的:
    ENV_PRODUCTION:'/builds/yourProjectGroup/gatsby\u netlifycms\u starter.tmp/ENV_PRODUCTION',

    注意

    您不能选择简单的方法并将其命名为
    .env.production
    使用
    dotenv
    ,因为键字段不允许像
    这样的特殊字符

    现在,当您获得包含所有配置值的
    文件时,您可以轻松地在应用程序中实现它(例如,使用dotenv)

    对于我的盖茨比实现,它看起来是这样的

    require(“dotenv”).config({
    路径:process.env.env_PRODUCTION?process.env.env_PRODUCTION:`.env.${process.env.NODE_env}`,
    })
    const config=require('gatsby-plugin-config')。默认值;
    
    这里发生了什么事?dotenv.config()正在检查您自己创建的环境产品是否存在。。。如果是,将使用它。否则它将使用通用的
    .env.
    one

    因此,使用
    ENV_PRODUCTION
    中的上述给定值,您可以在应用程序中访问
    第一个值


    通过这种方式,在本地机器上运行应用程序并使用Gitlab on PRODUCTION的
    env\u PRODUCTION
    env,就很容易获得
    .env.development

    我使用的是您在这里解释的第一种方法。你能告诉我,你是如何管理工作日志的吗??我需要在哪里保存这些作业日志(yaml文件或其他地方)??非常感谢您的帮助。我想进一步澄清一下,YAML文件中的密钥放在哪里?@ajeeth作业日志位于CI/CD中,如果您有部署过程之类的内容。这就是日志,Gitlab在部署时具体做什么。在那里,您可以查找为文件设置选择的名称(在上面的示例中:ENV_PRODUCTION)。如果选择
    Gitlab-“添加变量”
    方式,则不需要yaml文件。这是另一种通过运行时将自己的变量引入部署过程的方法。如果要使用
    .gitlab ci.yml
    ,请将其放入项目存储库的根目录中