使用环境变量 - GitHub Actions(第 2 部分)
👉 先决条件 如果您是 GitHub Actions 的新手,建议您阅读我的Github Actions 简介 - GitHub Actions (Part 1)文章。 GitHub Actions 中的环境变量主要分为三种。 1.自定义环境变量。 默认环境变量。 加密环境变量。 1\。自定义环境变量 自定义环境变量可以由我们自己在任何工作流文件中声明。 我们可以在工作流文件中声明不同访问范围下
👉 先决条件
如果您是 GitHub Actions 的新手,建议您阅读我的Github Actions 简介 - GitHub Actions (Part 1)文章。
GitHub Actions 中的环境变量主要分为三种。
1.自定义环境变量。
-
默认环境变量。
-
加密环境变量。
1\。自定义环境变量
自定义环境变量可以由我们自己在任何工作流文件中声明。
我们可以在工作流文件中声明不同访问范围下的自定义环境变量。
-
工作流级别
-
工作级别
-
步级
因此,声明的变量只能由特定范围访问。
例子:
- 工作流级别自定义环境变量
在这里,我在工作流级别声明了一个名为 PUBLICENV 的变量,并尝试在不同的级别对其进行回显。
name: workflow-level-custom-environment-variables
on: [push]
# Here the environment variable is declared in workflow level
env:
PUBLICENV: Available for all jobs in this workflow
jobs:
sample-job-1:
runs-on: ubuntu-latest
steps:
- name: step-1
run: echo "${PUBLICENV}"
# This will echo the value/string of PUBLICENV
- name: step-2
run: echo "${PUBLICENV}"
# This will echo the value/string of PUBLICENV
sample-job-2:
runs-on: ubuntu-latest
steps:
- run: echo "${PUBLICENV}"
# This will echo the value/string of PUBLICENV
进入全屏模式 退出全屏模式
- 作业级自定义环境变量
在这里,我在“sample-job-1”级别声明了一个名为 JOBENV 的变量,并尝试在不同级别进行回显。
name: job-level-custom-environment-variables
on: [push]
jobs:
sample-job-1:
env:
JOBENV: Available for this specific job only
# Here the environment variable is declared in job level
runs-on: ubuntu-latest
steps:
- name: step-1
run: echo "${JOBENV}"
# This will echo the value/string of JOBENV
- name: step-2
run: echo "${JOBENV}"
# This will echo the value/string of JOBENV
sample-job-2:
runs-on: ubuntu-latest
steps:
- run: echo "${JOBENV}"
# This will NOT echo the value/string of JOBENV
进入全屏模式 退出全屏模式
- 步骤级自定义环境变量
在这里,我在“sample-job-1”内的“step-1”级别中声明了一个名为 STEPENV 的变量,并尝试在不同级别中回显它。
name: step-level-custom-environment-variables
on: [push]
jobs:
sample-job-1:
runs-on: ubuntu-latest
steps:
- name: step-1
env:
STEPENV: Available for this specific job only
# Here the environment variable is declared in step level
run: echo "${STEPENV}"
# This will echo the value/string of STEPENV
- name: step-2
run: echo "${STEPENV}"
# This will NOT echo the value/string of STEPENV
sample-job-2:
runs-on: ubuntu-latest
steps:
- run: echo "${STEPENV}"
# This will NOT echo the value/string of STEPENV
进入全屏模式 退出全屏模式
2\。默认环境变量
GitHub 为存储库的许多有用参数提供了一些默认环境变量。我们可以在工作流程中的任何地方使用它们。
这是 GitHub Actions 中默认环境变量的列表
-
GITHUB_WORKFLOW 工作流的名称。
-
GITHUB_RUN_ID 存储库中每次运行的唯一编号。如果您重新运行工作流运行,此数字不会更改。
-
GITHUB_RUN_NUMBER 存储库中特定工作流每次运行的唯一编号。对于工作流的第一次运行,此数字从 1 开始,并随着每次新运行而递增。如果您重新运行工作流运行,此数字不会更改。
-
GITHUB_ACTION 操作的唯一标识符 (id)。
-
GITHUB_ACTIONS 当 GitHub Actions 运行工作流时,始终设置为 true。您可以使用此变量来区分测试是在本地运行还是由 GitHub Actions 运行。
-
GITHUB_ACTOR 启动工作流的人员或应用程序的名称。
-
GITHUB_REPOSITORY 所有者和存储库名称。
-
GITHUB_EVENT_NAME 触发工作流的 webhook 事件的名称。
-
GITHUB_EVENT_PATH 带有完整 webhook 事件负载的文件的路径。
-
GITHUB_WORKSPACE GitHub 工作区目录路径。
-
GITHUB_SHA 触发工作流的提交 SHA。
-
GITHUB_REF 触发工作流的分支或标签引用。
-
GITHUB_HEAD_REF 仅为分叉存储库设置。头存储库的分支。
-
GITHUB_BASE_REF 仅针对分叉存储库设置。基础存储库的分支。
-
GITHUB_SERVER_URL 返回 GitHub 服务器的 URL。
-
GITHUB_API_URL 返回 API URL。
-
GITHUB_GRAPHQL_URL 返回 GraphQL API URL。
例子:
name: default-environment-variables
on: [push]
jobs:
sample-job:
runs-on: ubuntu-latest
steps:
- name: echo-default-env-variables
run: |
echo "Home: ${HOME}"
echo "GITHUB_WORKFLOW: ${GITHUB_WORKFLOW}"
echo "GITHUB_ACTIONS: ${GITHUB_ACTIONS}"
echo "GITHUB_ACTOR: ${GITHUB_ACTOR}"
echo "GITHUB_REPOSITORY: ${GITHUB_REPOSITORY}"
echo "GITHUB_EVENT_NAME: ${GITHUB_EVENT_NAME}"
echo "GITHUB_WORKSPACE: ${GITHUB_WORKSPACE}"
echo "GITHUB_SHA: ${GITHUB_SHA}"
echo "GITHUB_REF: ${GITHUB_REF}"
进入全屏模式 退出全屏模式
输出:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--UwsbUO31--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/akospckj1wyqlbvwk434.png)
3\。加密环境变量
在 GitHub Actions 中,我们也可以创建加密的环境变量。我们可以使用 GitHub Secrets 来存储 API 密钥和密码之类的东西。
1.点击存储库中的设置
2.点击秘密
3.点击“新建仓库密码”
- 提供 YOUR\SECRET\NAME 和 VALUE 并点击“添加秘密”
[](https://res.cloudinary.com/practicaldev/image/fetch/s--jdJo-Zho--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/i/n45by6hur4tktp8gpujl.JPG)
[](https://res.cloudinary.com/practicaldev/image/fetch/s--j9iuHwZA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/vjt2cgwcx4p48i67jidd.JPG)
[](https://res.cloudinary.com/practicaldev/image/fetch/s--L5n8jngm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/4mbxbc48mvf31e3sqmk3.JPG)
例子:
这是一个示例代码,我们如何在不暴露值的情况下重新使用加密变量。
name: working-with-encrypted-environment-variables
on:
push:
branches: [main, develop]
jobs:
sample-job:
runs-on: ubuntu-latest
steps:
- name: Deploy-to-staging
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
# Here this will be triggered only when the "push" event is performed only to the specific "develop" branch
run: npx surge --project ./build --domain eight-circle.surge.sh
env:
SURGE_LOGIN: ${{secrets.SURGE_LOGIN}}
SURGE_TOKEN: ${{secrets.SURGE_TOKEN}}
# SURGE_LOGIN & SURGE_TOKEN is stored as github secrets
进入全屏模式 退出全屏模式
👏 额外提示:
在 Actions 日志屏幕中,当任何步骤通过时,它会显示一个绿色复选标记,当一个步骤失败时,它会显示一个红色复选标记,但除非启用调试,否则我们无法看到确切的错误。
要在 GitHub Actions 中启用调试,请将这两个加密的环境变量存储在特定存储库的 github 机密中。然后,当某个步骤失败时,您将在同一日志屏幕中看到调试消息,这使您更容易调试错误。
Secret : ACTIONS_STEP_DEBUG
Value : TRUE
Secret : ACTIONS_RUNNER_DEBUG
Value : TRUE
进入全屏模式 退出全屏模式
👉下一步是什么?
使用外部操作 - GitHub 操作(第 3 部分)
谢谢
希望你们都喜欢并从中学到了一些东西。让我知道您在讨论部分的意见和建议。
👉 拜访我 -https://mihinduranasinghe.com/
更多推荐
所有评论(0)