You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins通过Jenkinsfile运行pyinstaller-windows容器报错求助

问题分析与解决

核心问题1:容器启动后立即退出

cdrx/pyinstaller-windows:python3镜像的默认入口命令(entrypoint)是pyinstaller,Jenkins启动该容器时未传入任何参数,导致pyinstaller执行后立刻退出,容器随之停止。Jenkins后续尝试获取容器进程信息时,容器已不在运行状态,因此抛出Container ... is not running错误。

核心问题2:目录切换不生效

Jenkins的每个sh步骤都是独立子进程,单独执行sh 'cd app/'只会在当前子进程切换目录,不会影响后续sh步骤。后续的pip install和./gui_to_exe.sh仍会在工作根目录执行,必然找不到对应文件或脚本。

修正后的Jenkinsfile

pipeline {
    agent none
    stages {
        stage('Deliver') {
            agent {
                docker {
                    image 'cdrx/pyinstaller-windows:python3'
                    // 覆盖默认entrypoint,启动bash保持容器运行
                    args '--entrypoint=/bin/bash'
                }
            }
            steps {
                // 使用dir步骤切换目录,确保后续命令在指定路径执行
                dir('app') {
                    sh 'pip install -r requirements.txt'
                    dir('gui') {
                        sh './gui_to_exe.sh' // 包含pyinstaller命令的脚本
                    }
                }
            }
            post {
                success {
                    archiveArtifacts 'app/gui/appName.exe' // 根据实际生成路径调整
                }
            }
        }
    }
}

额外注意事项

  • 确认appName.exe的实际生成路径,调整archiveArtifacts的路径,避免找不到文件。
  • 如果gui_to_exe.sh缺少执行权限,可在执行前添加sh 'chmod +x gui_to_exe.sh'(放在dir('gui')块内)。

内容的提问来源于stack exchange,提问作者Gaston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:05:22