如何以保存方式设置GitLab环境变量?
我不想将敏感凭据(如API密钥、密码等)放入我的分支。 为此,GitLab(和其他CI/CD服务)能够设置环境变量。它们将在部署过程中注入脚本 我知道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
变量
(键:值)或文件
(键中将传递到包含值输入内容的机密文件的路径)
因此,文件变量似乎就是您要寻找的
并为变量提供良好的描述。就我个人而言,我发现其他非常有用的选项:变量屏蔽和保护状态。谢谢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
,请将其放入项目存储库的根目录中