GITHUB_TOKEN 和 GITHUB_ACTOR 秘密存储在哪里?

问题描述 投票:0回答:1

我正在学习本课程的 CI 部分,在学习过程中我无法弄清楚 main.yml 文件的以下部分是如何工作的:

- name: Log in to GitHub Packages
  run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

我有这些参数,如 GITHUB_ACTOR 和 GITHUB_TOKEN,我没有将它们定义为代码的任何部分,也没有写入 GitHub 内的面板。

它们是 GitHub 自动填写的吗?
如果我更改令牌,此代码仍然有效吗?

github
1个回答
2
投票

这记录在“自动令牌身份验证

在每个工作流程运行开始时,GitHub 会自动创建一个唯一的

GITHUB_TOKEN
密钥以在您的工作流程中使用。
您可以使用
GITHUB_TOKEN
在工作流程运行中进行身份验证。

当您启用 GitHub Actions 时,GitHub 会在您的存储库上安装 GitHub 应用程序。

GITHUB_TOKEN
秘密是 GitHub 应用程序安装访问令牌。您可以使用安装访问令牌代表存储库上安装的 GitHub 应用程序进行身份验证。令牌的权限仅限于包含您的工作流程的存储库

您有默认环境变量,包括:

GITHUB_ACTOR
:启动工作流程的人员或应用程序的名称。
例如,
octocat


+-------------------------------------------------------------------------+
|                          Updated Workflow                               |
|                                                                         |
| +----------------------+     +--------------------------------------+   |
| | main.yml             |     | GitHub                               |   |
| |                      |     |                                      |   |
| |                      |     | +---------+   +--------+  +--------+ |   |
| |                      |     | | Secrets |   | Tokens |  | Actors | |   |
| | - name: Log in to    |     | +---------+   +--------+  +--------+ |   |
| |   GitHub Packages    |     |                                      |   |
| |   run: echo          |<----| Automatically provided by GitHub     |   |
| |   ${GITHUB_TOKEN}    |     |                                      |   |
| |   | docker login     |     |                                      |   |
| |   -u ${GITHUB_ACTOR} |     |                                      |   |
| |   --password-stdin   |     |                                      |   |
| |   docker.pkg.github  |     |                                      |   |
| |   .com               |     |                                      |   |
| |   env:               |     |                                      |   |
| |   GITHUB_TOKEN:      |     |                                      |   |
| |   ${{ secrets        |     |                                      |   |
| |   .GITHUB_TOKEN }}   |     |                                      |   |
| +----------------------+     +--------------------------------------+   |
+-------------------------------------------------------------------------+`

GITHUB_TOKEN
和其他秘密安全地存储在 GitHub 的服务器上。具体来说,它们在静态时被加密,并且只能由 GitHub Actions 运行者在工作流程执行期间访问。这些秘密在安全的环境中解密,这对于保护 CI/CD 流程中使用的敏感数据至关重要。
请参阅“在 GitHub Actions 中使用机密

您可以在“秘密”部分下的存储库设置中定义和管理自己的秘密。一旦设置,这些秘密将被加密,无法查看或编辑,只能删除或替换。

以下是使用 GitHub CLI

gh secret set
更新密钥的示例命令,然后将其加密存储在 GitHub 的服务器上:

gh secret set GITHUB_TOKEN -b "new-token-value"

如果我更改令牌,此代码仍然有效吗?

是的,如果您更改令牌,只要新令牌具有必要的权限,代码将继续工作。

GITHUB_TOKEN
文件中的
main.yml
引用将自动从 GitHub 机密中获取更新后的令牌。
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
行的结构是在每次工作流程运行时从 GitHub 机密中提取
GITHUB_TOKEN
的当前值。因此,如果您更新 GitHub 机密中的令牌,新值将在后续工作流程运行中使用。

© www.soinside.com 2019 - 2024. All rights reserved.