使用Jenkinsfile运行pyinstaller

2ic8powd  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(160)

我对在Jenkins中使用docker和Jenkinfiles还很陌生。目前,我想在linux上运行一个docker容器(pyinstaller-windows),所以我写了下面的Jenkinsfile来测试它:

pipeline {
    agent none
    stages {
        stage('Deliver') {
            agent {
                docker {
                    image 'cdrx/pyinstaller-windows:python3'
                }
            }
            steps {
                sh 'cd app/'
                sh 'pip install -r requirements.txt'
                sh 'cd gui'
                sh './gui_to_exe.sh' //containing pyinstaller command
            }
            post {
                success {
                    archiveArtifacts 'appName.exe'
                }
            }
        }
    }
}

在Jenkins中运行后,我收到了以下错误消息:

cdrx/pyinstaller-windows:python3 cat
        $ docker top 8...5 -eo pid,comm
        [Pipeline] // withDockerContainer
        [Pipeline] }
        [Pipeline] // withEnv
        [Pipeline] }
        [Pipeline] // node
        [Pipeline] }
        [Pipeline] // stage
        [Pipeline] End of Pipeline
        java.io.IOException: Failed to run top '8...5'. Error: Error response
    from daemon: Container 8...5 is not running.

at org.jenkinsci.plugins.docker.workflow.client.DockerClient.listProcess(DockerClient.java:152)
    at org.jenkinsci.plugins.docker.workflow.WithContainerStep$Execution.start(WithContainerStep.java:201)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:322)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:196)
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:124)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:47)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
    at org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(Docker.groovy:140)
    at org.jenkinsci.plugins.docker.workflow.Docker.node(Docker.groovy:66)
    at org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(Docker.groovy:125)
    at org.jenkinsci.plugins.docker.workflow.declarative.DockerPipelineScript.runImage(DockerPipelineScript.groovy:54)
    at 
...

我做错了什么?

bmp9r5qi

bmp9r5qi1#

检查下面的最小管道。我修复了我观察到的问题。除此之外,我不确定你从哪里得到app目录。如果你在主机上有任何源代码,你可能想把工作区挂载到你的容器中。

pipeline {
    agent any
    stages {
        stage('Deliver') {
            agent {
                docker {
                    image 'cdrx/pyinstaller-windows:python3'
                    args "--entrypoint=''"
                }
            }
            steps {
                echo "Something"
                sh '''
                    cd app/
                    pip install -r requirements.txt
                    cd gui
                    ./gui_to_exe.sh
                '''
            }
            post {
                success {
                    archiveArtifacts 'appName.exe'
                }
            }
        }
    }
}

相关问题