「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

uraimo/run-on-arch-action - 构建非 x86 应用。

 

如下为官方示例 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 文档。

这里列举我们需要的应用:

ubuntu-latest:目前(02/02/2021)指向 18.04 TLS 版本,已经安装:
Docker-Moby 19.03.14;Pip3 9.0.1;Docker Compose 1.27.4;jq 1.5;

 

在安装应用前,建议阅读官方文档。多数常见应用,已经预装到系统中,无需我们再次安装。

敏感信息管理(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


posted @ 2021-03-27 09:50  研究林纳斯写的  阅读(141)  评论(0编辑  收藏  举报