首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在open-jdk容器中运行时,sh命令挂在Jenkins管道中。

在open-jdk容器中运行时,sh命令挂在Jenkins管道中。
EN

Stack Overflow用户
提问于 2022-06-15 07:15:25
回答 1查看 346关注 0票数 0

我希望有人能在这里为我提供一些指导:

我使用jenkins (2.289.3)作为码头容器,在我的macbook中运行一些CI作业。这是我的停靠命令

代码语言:javascript
运行
复制
docker run -d  \
  -u root \
  --name jenkins \
  -p 9080:8080 \
  -v ./jenkins_home:/var/jenkins_home \
  -v "$HOME":/home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkins

我用Jenkinsfile来构建一个项目。以下是代码:

代码语言:javascript
运行
复制
#!/usr/bin/env groovy

node {
    def workspace = pwd()
    
    stage('checkout') {
        checkout scm
        sh "echo checkout" ## this works fine!
    }

    docker.image('openjdk:17-jdk-alpine').inside('-u root -e MAVEN_OPTS="-Duser.home=./my-service/"') {
        stage('check java') {
            sh "java -version" ## this fails!
        }

        stage('artifact build and deploy') {
        
            configFileProvider([configFile(fileId: 'gcRepositoryCred', variable: 'GC_MVN_REPOSITORY_CREDENTIAL'),configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
                
                sh "chmod +x my-service/mvnw"
                sh "./my-service/mvnw -f my-service/pom.xml clean deploy -DskipTests -s $MAVEN_SETTINGS"
            }
        }

    }
   
}

它在打开的jdk容器中的行sh "java -version"上失败。基本上,它挂起一段时间,我得到以下错误代码:

代码语言:javascript
运行
复制
[Pipeline] sh
 + echo checkout
 checkout
 [Pipeline] }
 [Pipeline] // stage
 [Pipeline] isUnix
 [Pipeline] sh
 + docker inspect -f . openjdk:17-jdk-alpine
 .
 [Pipeline] withDockerContainer
 Jenkins does not seem to be running inside a container
 $ docker run -t -d -u 0:0 -u root -e MAVEN_OPTS=-Duser.home=./my-service/ -w /var/jenkins_home/workspace/my-service -v /var/jenkins_home/workspace/my-service:/var/jenkins_home/workspace/my-service:rw,z -v /var/jenkins_home/workspace/my-service@tmp:/var/jenkins_home/workspace/my-service@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** openjdk:17-jdk-alpine cat
 $ docker top 7413692ee7a423413e80909000e1e94adc2c880016f32071c6ab9d47645092cf -eo pid,comm
 [Pipeline] {
 [Pipeline] stage
 [Pipeline] { (check java)
 [Pipeline] sh
 process apparently never started in /var/jenkins_home/workspace/my-service@tmp/durable-25c4f40f
 (running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
 [Pipeline] }
 [Pipeline] // stage
 [Pipeline] }
 $ docker stop --time=1 7413692ee7a423413e80909000e1e94adc2c880016f32071c6ab9d47645092cf
 $ docker rm -f 7413692ee7a423413e80909000e1e94adc2c880016f32071c6ab9d47645092cf
 [Pipeline] // withDockerContainer
 [Pipeline] }
 [Pipeline] // node
 [Pipeline] End of Pipeline
 ERROR: script returned exit code -2
 Finished: FAILURE

更新相同的代码工作在我的另一台笔记本电脑(运行巨无霸)。我看到的主要区别是码头版本。巨无霸mac有20.10.8版,不工作的机器有20.10.12版本。

另一个关键的区别是与工作mac的日志。它没有记录Jenkins does not seem to be running inside a container,而是表示为Jenkins is running inside a container。不确定他们是否在某种程度上有联系。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 19:31:43

我让它使用以下说明:https://www.jenkins.io/doc/book/installing/docker/

看起来,对于新的更新,我需要使用docker:dind容器来运行docker命令,并使用上面链接中提供的说明创建我自己的Dockerfile。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72627262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档