Github Actions配置CI和CD
Github Actions配置CI和CD
前言:
阅读这篇文章我能学到什么?
GitHub Actions 是 GitHub 提供的自动化工作流工具,对开源仓库完全免费所有功能,并且基于用户的资源是相对比较慷慨的。
1 介绍
GitHub Actions是GitHub提供的持续集成和持续部署 (CI/CD) 平台,允许开发者自动化代码构建、测试、打包和部署流程。它通过 YAML 配置文件定义工作流(Workflow),在代码推送、PR 提交或定时任务等事件触发时自动执行任务。这些操作人工也能完成,但使用Actions在特定的场景自动触发完成,将大大提高开发效率。
GitHub Actions是GitHub提供的自动化工作流工具,主要功能如下。
- 自动运行测试(CI)
- 自动部署代码(CD)
- 定时执行任务(如每日构建)
- 响应GitHub事件(如 push、pull_request,有的地方叫merge_request,是一个东西)
相比其他CI/CD工具,Actions具有以下优势。
- 深度集成 GitHub:直接与仓库、PR、Issue 联动。
- 丰富的 Action 市场:重用社区共享的 Action(如部署到 AWS、发送通知)。
- 多平台支持:Linux/Windows/macOS 环境,支持 Docker 容器。
- 免费额度:公开仓库完全免费,私有仓库每月 2,000 分钟(Linux)。
详细的可以参考 Actions官方文档 。
熟悉Actions需要了解这些术语。
- workflow(工作流程):持续集成一次运行的过程,就是一个 workflow。
- job(任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
- step(步骤):每个 job 由多个 step 构成,一步步完成。
- action(动作):每个 step 可以依次执行一个或多个命令(action)。
2 搭建GitHub Actions CI/CD
在工程根目录下执行以下指令创建目录。
1 | mkdir -p .github/workflows/ |
在该目录下创建文件 cicd.yml ,模板如下。
不用急着手动配置,可以在Github上根据需要模板,在官方自动生成的配置基础上修改。为工程配置Actions,其实就是配置 .github/workflows/ 目录下的CI/CD的yaml文件,非常简单。
1 | name: CI/CD Pipeline # 工作流名称 |
如果需要Node.js项目构建,可在 steps
中添加以下。
1 | - name: Install Node.js |
如果需要Docker构建并推送,可在 steps
中添加以下。
1 | - name: Login to Docker Hub |
如需要部署到云服务器,可在 steps
中添加以下。
1 | - name: Deploy via SSH |
在Github上打开要配置Actions的开源仓库,点击 Actions 可以看到Github已经为我们提供了一些配置模板,直接选择最贴近自己需要的点击 Configure 即可。
比如我这选择一个使用cmake构建的单平台环境,后续仍然可以自己配置扩展多平台。
我们可以看到Github帮我们自动生成了yaml配置。基于官方给出的配置模板,可以修改文件名,配置内容后点击 Commit changes 。
1 | # This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. |
在main分支上产生一个commit,将配置提交到主分支上(也可手动推上去)。
3 查看runs结果
打开开源仓库,再次点击 Actions ,我们配置了main分支push时触发流水线作业,而刚刚又为了配置CI/CD在main分支commit了,此时可查看runs结果。
可看到产生报错,点进取查看具体的执行log可分析原因。
4 配置
4.1 触发条件
比如以下代码配置了 main 分支发生 push 动作后触发CI/CD。一般我们将主分支设置为保护分支,不允许直接push,所以这个配置通常是不需要的。 pull_request 配置的分支表示其他分支向该分支发起mr时自动触发CI/CD。
1 | on: |
4.2 安装指定版本cmake
以下代码通过Actions安装指定版本的cmake,安装完后输出版本号。
1 | - name: Install CMake |
&esmp;linux环境下也可用apt安装。
1 | - name: Install cmake |
4.3 安装指定版本python3
以下代码通过Actions安装指定版本的python3,安装完后输出版本号。
1 | - name: Install Python3 |