「GitHub Actions」- 持续集成服务(学习笔记) @20210327
问题描述
GitHub Actions 是 GitHub 的持续集成服务,类似与 Jenkins、Travis CI、GOCD 等等工具,都是为了自动化完成,于2018年10月推出,正式版于 2019 年 11 月正式推出。
该笔记将记录:使用 GitHub Actions 服务的方法,以及常见问题处理。
解决方案
快速入门,参考文档:Introduction to GitHub Actions - GitHub Docs(该文档足够用于快速入门)
全部指令,参考官方:[[https:/docs.github.com/en/enterprise-server@2.22/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsuses%20|Workflow syntax for GitHub Actions - GitHub Docs]]
Actions Marketplace:GitHub Marketplace · Actions to improve your workflow
如下为官方示例 YAML,同时我们也进行简单补充:
name: learn-github-actions on: [push] jobs: check-bats-version: runs-on: ubuntu-latest steps: # 拉取代码(GitHub Action 不会自动拉取仓库代码,因此基本每个 Workflow 中都有该 Action) - uses: actions/checkout@v2 # 安装 NodeJS 环境(其他 Action 可以参考 Actions Marketplace 页面) - uses: actions/setup-node@v1 - run: npm install -g bats - run: bats -v
注意事项:
1)指令 run 与 uses 不能同时出现,否则提示 a step cannot have both the `uses` and `run` keys 错误。
常见问题记录
定义 Job 执行顺序(依赖)
参考 jobs.<job_id>.needs 指令。
官方系统已经预装应用
官方系统,已经预装某些应用,参考 virtual-environments/Ubuntu1804-README.md at main 文档。
这里列举我们需要的应用:
在安装应用前,建议阅读官方文档。多数常见应用,已经预装到系统中,无需我们再次安装。
敏感信息管理(Secret)
私密(Secret)信息管理,参考 Encrypted secrets - GitHub Docs 文档。如下为学习笔记:
功能说明
敏感信息可以保存在 Organization, Repository, Repository Environments 中。
在 Organization 中,定义 Secret 可以用于所有 Repository,还可以通过访问控制来允许特定 Repository 访问 Organization 的 Secret。
在 Repository 中,创建的 Secret 仅能在当前仓库中中使用。
在 Repository Environments 中,可以允许要求的 Reviewer 访问 Secret。但是,无法在 Workflow 的 Job 中使用,要经过同义后才能使用。
对于同名的 Secret,最低级的优先级最高,即:Repository Environments > Repository > Organization
创建 Secret 信息
如何在 GitHub 中创建,参考 Creating encrypted secrets for xxxx 文档,该已经文档描述如何在 Organization, Repository, Repository Environments 中创建 Secret 信息。
使用 Secret 信息
在 Workflow 中,可以如下方式引用 Secret 信息:
steps: - shell: bash env: SUPER_SECRET: ${{ secrets.SuperSecret }} run: | example-command "$SUPER_SECRET" - name: Hello world action with: # Set the secret as an input super_secret: ${{ secrets.SuperSecret }} env: # Or as an environment variable super_secret: ${{ secrets.SuperSecret }}
更多的使用方法,参考 Using encrypted secrets in a workflow 文档。
注意事项
1)官方不建议在 Secret 中使用结构化数据,比如 JSON,这是为了确保 GitHub 处理日志中的私密信息。
相关文章
「Jenkins Pipeline」- SSH
「Selenium」- 文件上传
「Selenium」- 在页面中,点击按钮(或元素)
「Jenkins Pipeline」- 开发工具
「Jenkins Pipeline」- 集成 Selenium 测试
参考文献
博客园/你知道什么是 GitHub Action 么?
GitHub Actions 入门教程
virtual-environments/Ubuntu1804-README.md at main · actions/virtual-environments
Encrypted secrets - GitHub Docs