Skip to content
50.代码托管与部署»40.GithubActions»LV010-工作流程语法.md

LV010-工作流程语法

一、基本概念

1. 基本术语

GitHub Actions 有一些自己的术语。

(1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。

(2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。

(3)step(步骤):每个 job 由多个 step 构成,一步步完成。

(4)action (动作):每个 step 可以依次执行一个或多个命令(action)。

(5)上下文:上下文是一种访问有关工作流运行、变量、运行器环境、作业和步骤的信息的方法。每个上下文都是一个包含属性的对象,这些属性可以是字符串或其他对象。

2. workflow 文件

GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的 .github/workflows 目录。workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为 .yml,比如 foo.yml。一个库可以有多个 workflow 文件。GitHub 只要发现 .github/workflows 目录里面有 .yml 文件,就会自动运行该文件。

3. 上下文

具体的上下文相关内容可以查看文档:访问工作流运行的上下文信息 - GitHub Docs - GitHub 文档。里面的 github 上下文secrets 上下文 等,后面会经常用到。

二、工作流语法

GitHub Actions 工作流程语法 - GitHub 文档 - GitHub 文档

三、常用公共 actions

1. actions/checkout

yaml
jobs:
  steps:
    - uses: actions/checkout@v4

checkout 仓库地址在这里:GitHub - actions/checkout: Action for checking out a repo。Checkout V4 是 GitHub Actions 中的一个核心动作,旨在简化工作流程中对仓库的检出操作。通过 Checkout V4,用户可以轻松地将仓库检出到 $GITHUB_WORKSPACE 中,从而使工作流程能够访问仓库内容。该动作支持多种配置选项,包括检出特定分支、标签或 SHA,以及配置 SSH 密钥和令牌等,极大地增强了工作流程的灵活性和安全性。

说简单点,就是,现在我们在 sumumm/linux-release 这个仓库中启动了 .github/workflows/release.yml 中的工作流,这个时候,通过 jobs..steps..uses 就可以将 sumumm/linux-release 这个仓库检出到现在正在运行的 ubuntu 系统中,检出之后,我们就可以使用 github.workspace 来表示当前仓库 sumumm/linux-release 的路径,然后通过以下方式访问其中的文件:

yaml
jobs:
  build:
    runs-on: ubuntu-20.04 # ubuntu-latest ubuntu的最新版本
    steps:
      - uses: actions/checkout@v4
      - name: 拷贝存储库中的文件
        run: |
          cp -pvf /path/src_file /path/dst_file

2. softprops/action-gh-release

yaml
jobs:
  build:
    runs-on: ubuntu-20.04 # ubuntu-latest ubuntu的最新版本
    steps:
      - name: 发布 readme.md 文件
        id: new_release
        uses: softprops/action-gh-release@v2.0.8
        with:
          token: xxx
          name: release-latest
          make_latest: true
          files: |
            readme.md
            helloworld_demo.out

这个 action 是在自动打 tag 的时候将文件发布,例如:

image-20241227161703506

这个 action 的仓库在 GitHub - softprops/action-gh-release: 📦 GitHub Action for creating GitHub Releases。里面有对应的使用说明,这里就不再详细说了。

参考资料:

【1】GitHub Actions 入门教程 - 阮一峰的网络日志

【2】GitHub Actions 工作流程语法 - GitHub 文档 - GitHub 文档

【3】YAML 语言教程 - 阮一峰的网络日志

【4】YAML Ain’t Markup Language (YAML™) revision 1.2.2

【5】GitHub Actions 指南 - GitHub 文档 - GitHub 文档

莫道桑榆晚 为霞尚满天.