如果你对 GitHub Actions 的环境变量还不太了解,可能还没有学会如何存储它们。但是,这是可能的吗?是的!
在本教程中,您将学到在使用 GitHub Actions 时保存不同方式的环境变量和需要时可用的秘密的方法。
准备好了吗?继续阅读,开始吧!
**先决条件**
这个教程将进行一个实际演示,需要安装了Git的任何操作系统即可,本教程中使用的是 Ubuntu 操作系统。此外,对 Git 操作的基本工作知识是必要的,以便将代码提交到 GitHub Actions 环境变量仓库。
**GitHub Actions 环境变量设置**
在使用GitHub Actions 工作流自动化流程时,您可能需要在工作流中附加环境变量。如何实现呢?首先,您需要使用env
关键字在工作流中创建和指定自定义环境变量。
1. 创建一个名为.github/workflows的目录,您将在其中存储工作流文件。
2. 接下来,在 .github/workflows 目录中创建一个以您喜欢的名称命名的文件。但是,对于此示例,文件的名称为 main.yml。将下面的代码复制并粘贴到 main.yml 文件中。
下面的代码在代码触发 工作流程 时设置并显示 API_KEY
环境变量。
3. 提交并推送代码到您的 GitHub 存储库。

4. 现在,打开您的 Web 浏览器并导航到 GitHub 上的项目。点击 Actions 选项卡,然后点击当前提交。
您将看到类似下面图片的内容,显示 GitHub 已运行工作流程。

5. 最后,单击job1或job2,您将看到您已成功引用了初始化的环境变量。


为作业定义环境变量
现在,您已经在工作流文件中初始化了环境变量,任何作业都可以引用该环境变量。但也许您只想让一个作业引用环境变量。如果是这样,请在作业本身放置env
关键字。
1. 用下面的代码替换您的main.yml文件中的代码。
下面的代码显示了当您将环境变量放置在特定作业中时,其他作业无法引用该环境变量。
2. 提交您的更改并将作业推送到 GitHub Actions 环境变量,就像您在前一节中所做的那样。
3. 最后,导航到 GitHub 上的项目,然后单击job1和job2以查看它们的比较:
- 工作1 – 您会注意到您已经完美引用了环境变量。
- 工作2 – API密钥为空。


为步骤定义环境变量
既然您已经学会了如何在工作中指定环境变量,您可能想知道如何在步骤中执行相同的操作。
对于工作中的步骤,您就像对待工作一样在步骤中指定环境变量。
1. 使用下面的代码替换您在main.yml文件中的代码。
在下面的代码中,您在步骤1
中指定了环境变量,但在步骤2
中没有指定,您将在接下来的步骤中看到效果。
2. 现在提交更改并推送代码到GitHub。
3. 最后,转到GitHub Actions环境变量中的项目,并点击工作1。
尽管在同一作业(job1)的两个步骤中引用了两个API密钥,在第2步中,API密钥(空白)无法被识别,如下所示。为什么呢?因为您在代码中没有在第2步
内指定环境变量。

通过GitHub Actions环境变量和Secrets管理环境变量
与硬编码不同,您可能希望安全地存储环境变量,GitHub Secrets可以做到这一点。 GitHub Actions环境变量加密您放入Secrets的值,因此它们在裸眼中是不可见且不可读的。
使用此方法创建的Secret对整个工作流程、作业和步骤都是可访问的;没有限制。
要在GitHub Secrets中存储环境变量:
1. 首先,像在前面的部分中一样,将您的代码推送到GitHub。
2. 接下来,导航到GitHub上的项目,单击设置选项卡。
单击下方的Secrets开始添加一个Secret。

3. 接下来,单击新存储库Secret,您将看到一个填写有关添加的Secret的详细信息的表单。

4. 适当填写表单(名称和值)并单击添加Secret按钮提交。现在API_KEY
已保存在GitHub Secrets中。在此表单中,GitHub安全地设置环境变量作为Secrets,您可以在GitHub Actions上引用它们。

5. 编辑您的main.yml文件,并将env
关键字替换为secrets
。
如下图所示,您可以看到在${{secrets.API_KEY}}
格式中引用了API密钥,而不是直接将API密钥硬编码在代码中。
6. 最后,将代码提交并推送到GitHub,并导航到GitHub Actions环境变量中的项目。请参考第一部分。
您将看到类似下图的内容,但由于GitHub对放入secrets中的值进行了加密,因此您无法看到实际的API_key
。

引用默认的GitHub环境变量
GitHub提供了一些默认环境变量,您可以使用这些变量来访问存储库中的文件系统,而不是硬编码路径。默认的GitHub环境变量使您能够更加灵活地引用GitHub提供的环境变量。
一些默认环境变量提供的路径如下:
GITHUB_JOB
– 提供当前作业的job_id。GITHUB_ACTION
– 提供当前操作的id。GITHUB_ACTION_PATH
– 提供操作所在路径。GITHUB_ACTOR
– 提供启动工作流的人或应用程序的名称,如您的 GitHub 用户名。GITHUB_RUN_ID
– 提供run
命令的唯一编号。
使用以下代码替换您main.yml文件中的内容。以下代码显示了代码中声明的默认环境变量。
提交并推送代码更改到 GitHub,检查您的 GitHub Actions 环境变量项目中的操作,您将看到类似下图的内容。

结论
在本教程中,您已经学会了如何管理 GitHub Actions 环境变量。现在,您应该已经具备了安全存储环境变量以及如何使用 GitHub 提供的默认环境变量的基础知识。
现在你计划如何在使用GitHub Actions时整合这些新学到的知识呢?也许保存部署所需的API密钥?
Source:
https://adamtheautomator.com/github-actions-environment-variables/