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