DOIFORDevOpsGitea Actions最佳实践
DOIFORDevOpsGitea Actions最佳实践

Gitea Actions最佳实践

DevOps技术

今天终于在NAS上成功的完成 spring boot native镜像构建,也不知道是不是因为切换了builder,等会儿换一个项目试试看。

已经尝试了,在执行bootBuildImage时,还是需要重新下载builder-jammy-java-tiny​的相关依赖,后续还是要想办法自定义个builder才行。

在使用gitea actions的过程中,最让人头痛的就是网络问题。总所周知咱们墙里面的想要访问github.com的难度有多大,极度不稳定。如果需要下载一个文件就更难了。

另外还有就是dokcerhub上镜像咱们基本上就不可能下载下来,全靠一些科学手段弄下来。

gitea actions本质上与github actions没多大区别,默认情况下使用的GitHub actions仓库,比如:

uses actions/checkout@v4 

会下载 https://github.com/actions/checkout 仓库的v4分支,联网下载的时候偶尔会出现下载不下来的情况。科学上网有时候不稳定,同样会下载不下来。查了很多资料,发现可以使用国内的镜像仓库,改成:

uses: https://gitea.com/actions/checkout@v4

即可下载gitea.com上提供的镜像仓库了。

另外,workflow文件中定义了runs-on: ubuntu-latest​ 默认情况下也会拉取 dockerhub上的runner-images:ubuntu-latest镜像,这个如果没有些手段基本上是不可能拉去下来的。

昨天看到一篇文章中给出了答案,需要配置gitea actions runner,就是修改config.yaml文件。主要修改labels字段配置,配置如下:

  labels:
    - "ubuntu-latest:docker://registry.cn-guangzhou.aliyuncs.com/hzbb/runner-images:ubuntu-latest"
    - "ubuntu-22.04:docker://registry.cn-guangzhou.aliyuncs.com/hzbb/runner-images:ubuntu-22.04"
    - "ubuntu-20.04:docker://registry.cn-guangzhou.aliyuncs.com/hzbb/runner-images:ubuntu-20.04"
    - "maven-3.8:docker://registry.cn-guangzhou.aliyuncs.com/hzbb/runner-images:maven-v3.8.8"

这一切修改就绪后,gitea action就基本上可以正常运行了。

但是,在使用springboot gradle plugin构建native镜像的时候,需要下载以下程序:

    [detector]    paketo-buildpacks/ca-certificates   3.9.0
    [detector]    paketo-buildpacks/bellsoft-liberica 11.0.4
    [detector]    paketo-buildpacks/syft              2.7.0
    [detector]    paketo-buildpacks/executable-jar    6.12.0
    [detector]    paketo-buildpacks/spring-boot       5.32.0
    [detector]    paketo-buildpacks/native-image      5.15.0

springboot gradle plugin默认使用paketobuildpacks/builder-jammy-java-tiny:latest​作为构造器,docker配置了镜像加速后pull镜像问题不大,问题是构造成需要下载上述程序,下载地址也是github:

Downloading from https://github.com/bell-sw/LibericaNIK/releases/download/24.1.2+1-23.0.2+9/bellsoft-liberica-vm-openjdk23.0.2+9-24.1.2+1-linux-amd64.tar.gz
Downloading from https://github.com/anchore/syft/releases/download/v1.19.0/syft_1.19.0_linux_amd64.tar.gz

目前我的解决方案是针对这个step设置了代理,如下:

      - name: Build with gradle
        run: ./gradlew bootBuildImage
        env:
          HTTPS_PROXY: http://192.168.0.14:8118
          HTTP_PROXY: http://192.168.0.14:8118
          NO_PROXY: "localhost,127.0.0.1,mirrors.cloud.tencent.com,maven.aliyun.com"

在梯子稳定的情况下,能够正常的构建native镜像了。

image

这个step其实可以自定义个一个builder,将需要下载资源提前准备好,一起打到镜像中。然后使用自定义镜像完成构建工作。不过这已经不是gitea actions能完成的工作了,需要配置build.gradle文件才行,这个已经在之前的文章中有所介绍。关于如何构建自定义builder,后续写文章详细介绍。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注