今天开始尝试着使用gitea的action来完成自动化构建任务,详细可以查看官方文档。
不过官方文档写的也不是很详细,本文主要记录一个使用gitea action实现springboot native 镜像构建。
第一步,部署一个Runner
我这边部署的比较简单,各种缓存之类的都没有配置,就启动了一个默认的Runner:
docker run -e GITEA_INSTANCE_URL=https://giteaHost -e GITEA_RUNNER_REGISTRATION_TOKEN=xxxxxxxx-v /var/run/docker.sock:/var/run/docker.sock --name my_runner gitea/act_runner:nightly
gitea的runner分为实例级、组织级、仓库级,具体配置查看官方文档,上述语句是配置一个实例级runner的语句,启动后可以在设置 -> action -> runner中看到以下内容:
第二部,使用yml定义job流水线,大致内容如下:
name: build spring boot native image
on:
push:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v4
- name: Set java-temurin-22
uses: actions/setup-java@v4
with:
java-version: '22'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with gradle
run: ./gradlew bootBuildImage
通过我之前的文章中可以知道springboot打包native镜像只需要使用gradle执行“bootBuildImage"命令即可,该命令可以配置镜像构建、制品的各种信息。
因此,我需要在给先搭建好gradle能够正常执行的环境,本项目也很简单,只需要配置好符合的jdk版本即可,执行gradle命令的时候会自动读取项目中的gradle-wrapper.properties
上述文档定义过程也很简单,我直接想AI求助了,让他写一个配置文件出来,然后大致修改了以下就行了。ps: AI是真的可以加速程序员开发的效率。
如果要自行学习也可以查看Github Actions官方文档,gitea action和github action是兼容的。
将上述文件放到 .gitea/workflows文件夹下面,这一点很重要。做好后项目结构大致如下:
只需要push到gitea上,就会在第一步中启动的runner中执行流水线,执行结果如下:
OK, 项目的进度又向前进了一步!值得写一篇文章庆贺一下,另外gitea还支持使用drone来跑流水线,以后有机会写一篇小文章介绍一下。