你好 GitHub Actions
本课我们将学习如何创建和使用 GitHub Actions 工作流。
Welcome
自动化是简化工作流程的关键,而 GitHub Actions 是增强工作流程的最佳方式。它能帮助我们自动化部署和测试,内容审查,消息通知,定时任务, 开发环境安装(如Node.js、Java、Python等)
- 目标人群:开发者,DevOps,学生,管理者,团队,GitHub用户等
- 课程内容:学习如何创建workflow文件,触发工作流,日志查看
- 你将构建:使用Action工作流检查Markdown中的emoji代码引用
- 前置条件:开始之前,推荐先学习我们的GitHub快速入门课程
- 学习时长:小于2小时
通过本课程,您将
- 创建一个工作流
- 添加一个作业
- 编写作业步骤
- 合并您的拉取请求
- 查询执行结果
如何开始
-
右键点击上方 Start course 按钮
-
在新页面中根据系统提示新建一个仓库。
- 仓库名称、描述这些字段系统已经帮我们自动填充好了,您可以按需修改。
- 建议使用选择公共仓库,因为私有仓库 GitHub Action有免费额度限制
- 最后点击 Create repository 按钮
-
仓库创建完毕后,等待大约 20 秒(等待Action执行),然后刷新页面。注意是刷新您仓库的页面,不是本课程的页面。如果页面没有变化,请继续等待。
步骤1:创建 workflow 文件
什么是 GitHub Actions? 使用 GitHub Actions 几乎可以帮您自动化软件开发流程中的方方面面。包括自动化测试、CI/CD持续部署、自动化代码审查、管理问题和拉取请求,等等。 最棒的是,这些工作流配置以代码的形式保存在您的git仓库中,可以很方便的在团队之间共享和重用。
进一步学习GitHub Action:
- 访问 GitHub Actions feature 页面
- 前往 GitHub Actions 用户文档中心学习
什么是工作流(workflow)? 工作流是一个可配置的自动化流程,它将运行一个或多个作业(任务、job)。
流程配置文件使用YAML格式,保存在仓库的.github/workworks
文件夹中。只有所选事件发生时,才会触发执行。本例中我们将使用pull_request
事件。
- 了解更多关于工作流、作业和事件,请前往 Understanding GitHub Actions
- 了解更多关于
pull_request
事件的描述和事件触发条件,请前往 pull_request
⌨️ 动手:创建workflow文件
-
首先我们创建一个拉取请求以方便查看我们本课的所有修改。点击Pull Requests tab页,点击New pull request,,设置
base: main
以及compare:welcome-workflow
,然后点击 Create pull request -
切回到 Code tab页
-
在
main
分支下拉框,选择welcome-workflow
分支 -
进入
.github/workflows/
文件夹,点击 Add file,然后点击 Create new file 新建一个文件 -
文件名命名为
welcome.yml
-
在
welcome.yml
中添加如下内容:name: Post welcome comment on: pull_request: types: [opened] permissions: pull-requests: write
-
点击Commit new file 提交文件
-
等待大约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
。
⌨️ 动手操作
-
打开你刚创建的
welcome.yml
-
修改内容如下:
name: Post welcome comment on: pull_request: types: [opened] permissions: pull-requests: write jobs: build: name: Post welcome comment runs-on: ubuntu-latest
-
点击提交
-
等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。
步骤3:编写执行步骤
干的漂亮,您在workflow添加了一个作业! 💃
下面需要我们将为其编写具体的执行步骤(steps)
什么是步骤(steps)? Actions steps 将在我们的作业运行期间按顺序运行。 每个步骤要么是一段将要执行的 shell 脚本,要么别人编写好的GitHub Action。 它们按顺序执行,并且相互依赖。由于每个步骤都在同一运行器上执行,因此您可以将数据从一个步骤共享到另一个步骤。 例如,可以有一个生成应用程序的步骤,后跟一个测试已生成应用程序的步骤。
下面例子我们将实现 pull_request
事件触发后,使用GitHub CLI 命令工具自动发布评论 “Welcome to the repository!”
⌨️ 动手操作
-
编辑
welcome.yml
文件 -
将其内容更新为如下:
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!" -
编辑完后点击提交
-
等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。
步骤4:合并您的workflow文件
现在请将您的修改合并到main
分支
⌨️ 动手操作
-
点击Pull requests tab页
-
点击我们在步骤1中创建的拉取请求
-
点击Merge pull request,然后Confirm merge
-
(可选)删除
welcome-workflow
分支 -
等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。
步骤5:触发您的工作流
现在您每新建一个pull request
后都会触发Action执行
我们可以点击 Actions tab页,查看执行记录。
⌨️ 动手:触发一个工作流
-
新建一个名为
test-workflow
的分支 -
在新分支中随便修改点内容,例如在
README.md
中添加表情符号。 -
为这个分支新建一个拉取请求
-
创建完毕后稍等片刻,您会发现在您新建的PR页面上出现了一条action自动添加的评论:”Welcome to the repository!“
-
等待大约20秒,然后刷新页面。GitHub Actions 将自动更新到下一步。
完成
恭喜您完成了本课程!
课程回顾:
-
首先您创建了一个 GitHub Actions workflow 文件
-
创建事件触发器、作业和步骤,
下一步
本课程带你初步认识了GitHub Actions,您需要
- 进一步深入学习GitHub Actions用户手册
- awesome-actions 收集了许多其他人使用的GitHub Actions,值得学习和参考