Jenkins管道对接器,withRegistry()推送导致无限循环

ct2axkht  于 2023-03-01  发布在  Jenkins
关注(0)|答案(1)|浏览(199)

我设法在kubernetes上安装了jenkins和gitbucket,现在我正在尝试创建我自己的第一个docker文件上传到dockerhub,不幸的是,上传到docker时失败了,构建成功了,但我无法管理如何上传到dockerhub(私有存储库)。

Jenkins菲尔

def label = "${BUILD_TAG}"
 
podTemplate(label: label, containers: [
    containerTemplate(name: 'docker', image: 'docker:latest', command: 'cat', ttyEnabled: true)
],
volumes: [
    hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
]) {
    node(label) {
        def app
        def myRepo = checkout scm
        def gitCommit = myRepo.GIT_COMMIT
        def gitBranch = myRepo.GIT_BRANCH
        def shortGitCommit = "${gitCommit[0..10]}"
        def previousGitCommit = sh(script: "git rev-parse ${gitCommit}~", returnStdout: true)
        
        stage('Decommission Infrastructure') {
            container('kubectl') {
                echo "Decmomission..."
            }
        }
        
        stage('Build application') {
            container('docker') {
                app = docker.build("fasautomation/recon", ".")
            }
        }
        
        stage('Run unit tests') {
            container('docker') {
                app.inside {
                    sh 'echo "Test passed"'
                }
            }
        }

            stage('Docker publish') {
                container('docker') {
                    docker.withRegistry('https://registry.hub.docker.com', '<<jenkins store-credentials>>') {
                        echo "Pushing 1..."
                        // Push tagged version
                    app.push("${env.BUILD_NUMBER}")
                    echo "Pushing 2..."
                    // Push latest-tagged version
                    app.push("latest")
                    echo "Pushed!"
                    }
            }
            }
            
            stage('Deployment') {
            container('docker') {
                // Deploy to Kubernetes
                echo 'Deploying'
            }
            }
            
        stage('Provision Infrastructure') {
            container('kubectl') {
                echo 'Provision...'
            }
        }
    }
}

Jenkins原木

[...]
[Pipeline] stage (hide)
[Pipeline] { (Docker publish)
[Pipeline] container
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withDockerRegistry
Executing sh script inside container docker of pod jenkins-recon-master-116-0ksw8-f7779
Executing command: "docker" "login" "-u" "*****" "-p" ******** "https://index.docker.io/v1/" 
exit
<<endless loading symbol>>

有没有人知道如何在这里调试?凭据工作。不知道为什么日志中有退出,而没有用于以后推送的日志...:-(

x7yiwoj4

x7yiwoj41#

您需要检查Jenkins Docker commons 1.21是否仍然存在此问题
恢复了PR 86 "docker login - get password from stdin"PR 108)。
而且它包括JENKINS-69436 "Error: cannot perform an interactive login from a non TTY device"
这意味着docker.withRegistry步骤现在(自2022年8月和docker commons 1.21以来)有更好的机会成功执行。

相关问题