Maven / Gradle容器无法在内部k8s集群上构建项目

时间:2019-07-05 18:50:21

标签: maven gradle kubernetes jenkins-pipeline kubernetes-helm

我正在尝试创建示例jenkins管道,以在内部kubernetes集群上构建基于Maven / gradle的应用程序。我通过环境变量设置了代理,此外,我还在gradle.properties文件中插入了代理参数。每当我尝试通过gradle build构建应用程序时,都会失败,并显示错误Java: READ ONLY FILE SYSTEM。我在线搜索,发现由于jnlpgradle容器上的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

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案。我在/ tmp /目录中安装了秘密卷,这就是为什么整个容器进入只读文件系统模式的原因。当我在 / tmp 目录中安装秘密时,我仍然不知道为什么 jenkins工作区目录进入只读模式。