Gitea Actions 基本和 Github Actions 一模一样包括语法,所以就不再阐述它是个什么东西了,以下引用 Github Actions 的相关介绍
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行任务、测试和部署。用户可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
GitHub Actions 不仅仅是 DevOps,还允许用户在存储库中发生其他事件时运行工作流程。 例如,可以运行工作流程,以便在有人创建新问题时自动添加相应的标签。
GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行工作流程,或者在自有的数据中心或云基础架构中托管运行器。
一、安装
本文默认已安装 Gitea 1.19.0
及以上版本,未安装请参考Gitea 搭建
安装前需要机器安装好 docker ,若未安装请参考Docker 快速入门。
1. gitea开启actions
修改gitea/conf/app.ini
配置,若使用docker部署,可通过docker exec -it ${容器id} /bin/bash
进入内部修改,修改完后重启 gitea 容器
1 | # 添加此配置 |
2. 查看Gitea Runner token
登录管理员账号,在右上角头像选择后台管理、runner 页签中查看,若只是作为自己仓库的 runner,则只需在相应仓库的 设置-runner
中查看 token
3. 运行act runner
使用docker compose启动
1 | version: "3" |
4. 查看
在 runner 管理面板即可看到加入的runner,且状态为 Idle
二、测试
1. 创建仓库
创建名为 actions-demo
的仓库,勾选初始化添加README.md,并在设置中开启 Actions ,即可看到多了 Actions 一栏
2. 添加工作流文件
以下是一个示例,将它保存到 .gitea/workflows/build.yaml 时会触发 CI 工作,yaml 语法可参考 Github Actions Docs
1 | name: Gitea Actions Demo |
3. 查看执行结果
三、变量运用
1. 默认上下文变量
在编写步骤文件时,可以直接使用默认的变量来实现想要的功能,语法为 ${{ xxx }}
,具体有哪些变量可查看Github Actions Context Docs
1 | - run: echo ${{ github.ref }} |
输出
1 | refs/heads/main |
2. 环境变量
环境变量分为默认环境变量和自定义环境变量,语法为 ${{ env.xxx }}
,具体请查看Github Actions Variables Docs
1 | jobs: |
输出
1 | seepine/actions-demo |
3. Secrets变量
一般用于定义密码等敏感变量,此变量输出时会变成*,但不影响使用,在设置-Secrets中添加Key-Value即可
1 | - run: echo ${{ secrets.CUSTOM_KEY }} |
输出
1 | *** |
4. output
许多时候我们会需要输出一些特定内容供他人获取,若输出到环境变量,我们很难随心定义key,因为有可能会与其他步骤的环境变量冲突而覆盖它,因此出现了output这个用法,最常见的即 Docker metadata
1 | jobs: |
输出
1 | asdf1234 |
四、进阶用法
1. 指定工作流运行 runner
若有多个runner节点,我们想指定某个工作流程运行在特定runner上,可在不同runner指定不同label用于区分(可在Runner管理面板,编辑其 labels),例如分别有两个 runner 是 linux 环境和 windows 环境,因此分别设置label为 linux_runner
和 windows_runner
1 | jobs: |
2. 使用github的步骤脚本
在编写步骤配置时,通常都会引用别人写好的脚本,例如
1 | - name: Login to DockerHub |
此时 Gitea Actions 不一定能正常工作,因为它默认是访问 Gitea.com这个代码托管仓库,因此若脚本是在 Github 上时,它将无法下载脚本内容,此时我们可以完整写明脚本地址,例如
1 | - name: Login to DockerHub |
3. 使用 docker
在 Github Actions 中,默认工作环境可以直接使用 docker 命令,因此网上搜的 github actions 构建 docker 镜像
等配置,放在 Gitea Actions 中运行不了,因为 gitea act_runner
默认运行镜像是 node:16-bullseye
,并没有 docker 环境,详见工单Gitea act_runner issue,最简单的解决办法是手动指定运行容器镜像
1 | jobs: |
4. 缓存工具目录
在步骤中安装构建工具时,例如 actions-setup
、actions-node
等,它们都会去下载对应二进制文件,再解压到例如 /opt/hostedtoolcache
目录中,最后再配置环境变量,使得容器中能够使用相应的环境,例如
1 | jobs: |
你会发现,每次执行工作流时,它都会重新下载二进制文件,并不会像 Github Actions 一样第一次下载,第二次因有缓存直接跳过,详情可查看工单cache tool folder,在 act_runner
修复此问题之前,我们可以借助 docker volume 来实现缓存功能
1 | jobs: |
五、案例
将以构建后端 SpringBoot with gradle
和前端 Vue3 with vite
两个项目为例,演示借助 Actions 构建前后端项目,并缓存构建过程中的工具,最后打包成 Docker 镜像并推送到镜像仓库,最终推送消息到企业微信群