你好 GitHub Actions

本课我们将学习如何创建和使用 GitHub Actions 工作流。

Welcome

自动化是简化工作流程的关键,而 GitHub Actions 是增强工作流程的最佳方式。它能帮助我们自动化部署和测试,内容审查,消息通知,定时任务, 开发环境安装(如Node.js、Java、Python等)

  • 目标人群:开发者,DevOps,学生,管理者,团队,GitHub用户等
  • 课程内容:学习如何创建workflow文件,触发工作流,日志查看
  • 你将构建:使用Action工作流检查Markdown中的emoji代码引用
  • 前置条件:开始之前,推荐先学习我们的GitHub快速入门课程
  • 学习时长:小于2小时

通过本课程,您将

  1. 创建一个工作流
  2. 添加一个作业
  3. 编写作业步骤
  4. 合并您的拉取请求
  5. 查询执行结果

如何开始

start-course
  1. 右键点击上方 Start course 按钮

  2. 在新页面中根据系统提示新建一个仓库。

    • 仓库名称、描述这些字段系统已经帮我们自动填充好了,您可以按需修改。
    • 建议使用选择公共仓库,因为私有仓库 GitHub Action有免费额度限制
    • 最后点击 Create repository 按钮
  3. 仓库创建完毕后,等待大约 20 秒(等待Action执行),然后刷新页面。注意是刷新您仓库的页面,不是本课程的页面。如果页面没有变化,请继续等待。

步骤1:创建 workflow 文件

什么是 GitHub Actions? 使用 GitHub Actions 几乎可以帮您自动化软件开发流程中的方方面面。包括自动化测试、CI/CD持续部署、自动化代码审查、管理问题和拉取请求,等等。 最棒的是,这些工作流配置以代码的形式保存在您的git仓库中,可以很方便的在团队之间共享和重用。

进一步学习GitHub Action:

什么是工作流(workflow)? 工作流是一个可配置的自动化流程,它将运行一个或多个作业(任务、job)。 流程配置文件使用YAML格式,保存在仓库的.github/workworks 文件夹中。只有所选事件发生时,才会触发执行。本例中我们将使用pull_request事件。

⌨️ 动手:创建workflow文件

  1. 首先我们创建一个拉取请求以方便查看我们本课的所有修改。点击Pull Requests tab页,点击New pull request,,设置 base: main 以及compare:welcome-workflow,然后点击 Create pull request

  2. 切回到 Code tab页

  3. main分支下拉框,选择 welcome-workflow 分支

  4. 进入.github/workflows/文件夹,点击 Add file,然后点击 Create new file 新建一个文件

  5. 文件名命名为welcome.yml

  6. welcome.yml中添加如下内容:

    name: Post welcome comment
    on:
      pull_request:
        types: [opened]
    permissions:
      pull-requests: write
    
  7. 点击Commit new file 提交文件

  8. 等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。

步骤2:添加作业

Nice work! 🎉 您添加了一个 workflow 文件

下面我们一行一行来解释:

  • name: Post welcome comment 声明的工作流名字
  • on: pull_request: types: [opened] 定义触发条件。所以本例中,您的工作流将在 打开拉取请求 的时候执行。
  • permissions 声明需要用到的权限
  • pull-requests: write 为此工作流分配”拉取请求的写权限“

接下来,我们需要指定要运行的作业,也就是事件发生时需要执行的任务。

什么是作业(job)? 作业是工作流中在同一运行器上(runner)执行的一组步骤。一个工作流可以包含多个作业,一个作业由多个步骤组成。 步骤按顺序执行并且相互依赖。更多关于作业请阅读Jobs

运行器(runner)是执行运行工作流所用的服务器。每个运行器一次可以运行一个作业。 GitHub 提供 Ubuntu Linux、Microsoft Windows 和 macOS 运行器来运行您的工作流程;每个工作流程运行都在新预配的全新虚拟机中执行。

本练习中,我们将创建一个名为"build"的作业,并指定一个运行器。这里我们选择又快又便宜的ubuntu-latest

⌨️ 动手操作

  1. 打开你刚创建的 welcome.yml

  2. 修改内容如下:

    name: Post welcome comment
    on:
      pull_request:
        types: [opened]
    permissions:
      pull-requests: write
    jobs:
      build:
        name: Post welcome comment
        runs-on: ubuntu-latest
    
  3. 点击提交

  4. 等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。

步骤3:编写执行步骤

干的漂亮,您在workflow添加了一个作业! 💃

下面需要我们将为其编写具体的执行步骤(steps)

什么是步骤(steps)? Actions steps 将在我们的作业运行期间按顺序运行。 每个步骤要么是一段将要执行的 shell 脚本,要么别人编写好的GitHub Action。 它们按顺序执行,并且相互依赖。由于每个步骤都在同一运行器上执行,因此您可以将数据从一个步骤共享到另一个步骤。 例如,可以有一个生成应用程序的步骤,后跟一个测试已生成应用程序的步骤。

下面例子我们将实现 pull_request 事件触发后,使用GitHub CLI 命令工具自动发布评论 “Welcome to the repository!”

⌨️ 动手操作

  1. 编辑 welcome.yml 文件

  2. 将其内容更新为如下:

    name: Post welcome comment
    on:
      pull_request:
        types: [opened]
    permissions:
      pull-requests: write
    jobs:
      build:
        name: Post welcome comment
        runs-on: ubuntu-latest
        steps:
          - run: gh pr comment $PR_URL --body "Welcome to the repository!"
          env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            PR_URL: ${{ github.event.pull_request.html_url }}
    

    gh pr comment $PR_URL --body "Welcome to the repository!" 的作用是通过gh命令在打开的拉取请求中发布一条评论 "Welcome to the repository!"

  3. 编辑完后点击提交

  4. 等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。

步骤4:合并您的workflow文件

现在请将您的修改合并到main分支

⌨️ 动手操作

  1. 点击Pull requests tab页

  2. 点击我们在步骤1中创建的拉取请求

  3. 点击Merge pull request,然后Confirm merge

  4. (可选)删除 welcome-workflow 分支

  5. 等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。

步骤5:触发您的工作流

现在您每新建一个pull request后都会触发Action执行

我们可以点击 Actions tab页,查看执行记录。

⌨️ 动手:触发一个工作流

  1. 新建一个名为 test-workflow 的分支

  2. 在新分支中随便修改点内容,例如在 README.md 中添加表情符号。

  3. 为这个分支新建一个拉取请求

  4. 创建完毕后稍等片刻,您会发现在您新建的PR页面上出现了一条action自动添加的评论:”Welcome to the repository!“

  5. 等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。

完成

恭喜您完成了本课程!

课程回顾:

  1. 首先您创建了一个 GitHub Actions workflow 文件

  2. 创建事件触发器、作业和步骤,

下一步

本课程带你初步认识了GitHub Actions,您需要