我正在尝试创建示例jenkins管道,以在内部kubernetes集群上构建基于Maven / gradle的应用程序。我通过环境变量设置了代理,此外,我还在gradle.properties文件中插入了代理参数。每当我尝试通过gradle build
构建应用程序时,都会失败,并显示错误Java: READ ONLY FILE SYSTEM
。我在线搜索,发现由于jnlp
和gradle
容器上的UID不同,Gradle
无法访问/home/jenkins/
工作区。我在Pod上插入了Pod Security Policy
参数,并尝试执行具有相同UID 1000
的所有容器,但仍然失败。我仍然不确定这个奇怪问题的确切根源。
参考链接:https://akomljen.com/set-up-a-jenkins-ci-cd-pipeline-with-kubernetes/
我正在使用 Jenkins官方头盔图在集群上部署jenkins。
def label = "maven-${UUID.randomUUID().toString()}"
podTemplate(label: label, containers: [
containerTemplate(name: 'gradle', image: 'gradle:latest', ttyEnabled: true, command: 'cat',
envVars: [
envVar(key: 'http_proxy',value: 'www.xxx:8080'),
envVar(key: 'https_proxy',value: 'www.xxx:8080')
])
]) {
node(label) {
stage('Build a Gradle project') {
git 'SOME GRADLE PROJECT REPO.'
container('gradle') {
sh 'gradle build --stacktrace'
}
}
}
}
考虑上面的示例示例(假设jenkinsci/jnlp-slave:latest
由Jenkins Default Pod模板提供,并将附加到此Pod)
Gradle守护程序将启动,稍后失败,并出现以下错误。
Error resolving plugin [id: 'org.springframework.boot', version: '2.1.4.RELEASE']
18:24:47.119 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Could not resolve all dependencies for configuration 'detachedConfiguration1'.
18:24:47.119 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > java.io.IOException: Read-only file system
答案 0 :(得分:0)
最后,我找到了解决方案。我在/ tmp /目录中安装了秘密卷,这就是为什么整个容器进入只读文件系统模式的原因。当我在 / tmp 目录中安装秘密时,我仍然不知道为什么 jenkins工作区目录进入只读模式。