当使用GitLab Auto DevOps从我的存储库构建和部署应用程序到microk8s时,构建作业通常需要很长时间才能运行,最终会超时。这个问题在 99% 的情况下都会发生,但有些构建会运行。通常,构建在构建脚本中的不同时间停止。
这些项目不包含.gitlab-ci.yml
文件,完全依赖 Auto DevOps 功能来发挥它的魔力。
对于 Spring Boot/Java 项目,通过 Gradle 包装器下载 Gradle 时构建通常会失败,有时在下载依赖项本身时会失败。错误消息非常模糊,根本没有帮助:
Step 5/11 : RUN /bin/herokuish buildpack build
---> Running in e9ec110c0dfe
-----> Gradle app detected
-----> Spring Boot detected
The command '/bin/sh -c /bin/herokuish buildpack build' returned a non-zero code: 35
有时,如果幸运的话,错误会有所不同:
Step 5/11 : RUN /bin/herokuish buildpack build
---> Running in fe284971a79c
-----> Gradle app detected
-----> Spring Boot detected
-----> Installing JDK 11... done
-----> Building Gradle app...
-----> executing ./gradlew build -x check
Downloading https://services.gradle.org/distributions/gradle-7.0-bin.zip
..........10%...........20%...........30%..........40%...........50%...........60%...........70%..........80%...........90%...........100%
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.0/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build
> Task :compileJava
> Task :compileJava FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Could not download netty-resolver-dns-native-macos-4.1.65.Final-osx-x86_64.jar (io.netty:netty-resolver-dns-native-macos:4.1.65.Final)
> Could not get resource 'https://repo.maven.apache.org/maven2/io/netty/netty-resolver-dns-native-macos/4.1.65.Final/netty-resolver-dns-native-macos-4.1.65.Final-osx-x86_64.jar'.
> Could not GET 'https://repo.maven.apache.org/maven2/io/netty/netty-resolver-dns-native-macos/4.1.65.Final/netty-resolver-dns-native-macos-4.1.65.Final-osx-x86_64.jar'.
> Read timed out
对于 React/TypeScript 问题,症状相似,但错误本身以不同的方式表现出来:
[INFO] Using npm v8.1.0 from package.json
/cnb/buildpacks/heroku_nodejs-npm/0.4.4/lib/build.sh: line 179: /layers/heroku_nodejs-engine/toolbox/bin/yj: Permission denied
ERROR: failed to build: exit status 126
ERROR: failed to build: executing lifecycle: failed with status code: 145
问题似乎主要发生在 GitLab 运行器本身在 Kubernetes 中部署时。microk8s 使用Project Calico来实现虚拟网络。
是什么赋予了?为什么错误消息没有帮助?有没有办法打开详细的构建日志或调试构建步骤?