【问题标题】:publish over ftp jenkins plugin is not uploading subfolder通过 ftp jenkins 插件发布未上传子文件夹
【发布时间】:2019-03-14 14:33:28
【问题描述】:

我有一个 Jenkinsfile,它使用 Publish over FTP 插件将我的 Angular 应用程序代码部署到站点。 dist 文件夹中的所有文件都被传输,除了 assets 子文件夹。我尝试为 sourceFiles 参数输入以下值但没有成功:'webapp/dist/', 'webapp/dist/**', 'webapp/dist/**/*'.

这是我的 Jenkinsfile 中通过 FTP 发布的部分:

stage('Deploy') {
            steps {
                echo 'Deploying....'
                ftpPublisher paramPublish: null, masterNodeName:'', alwaysPublishFromMaster: true, continueOnError: false, failOnError: true, publishers: [
                    [configName: 'Angular app', verbose: true, transfers: [
                        [asciiMode: false, cleanRemote: true, makeEmptyDirs:true, excludes: '', flatten: false,
                        noDefaultExcludes: false, patternSeparator: '[, ]+', 
                        remoteDirectory: "webapp", 
                        removePrefix: "webapp/dist",
                        remoteDirectorySDF: false, 
                        sourceFiles: 'webapp/dist/**/*']
                    ], usePromotionTimestamp: false, `enter code here`useWorkspaceInPromotion: false]
                ]
            }
        }

我查看了通过 FTP 管道发布文档:https://jenkins.io/doc/pipeline/steps/publish-over-ftp/,但找不到任何我丢失的参数。我被困住了。

【问题讨论】:

  • 问题解决了吗?我想知道它是否只是一个特定的资产文件夹,如果您碰巧没有通过将它添加到 angular.json 文件中将其包含在构建中。当你运行 ng build --prod 是 dist 中的文件夹?
  • 我还没有解决这个问题。当我运行 ng build --prod 时会创建资产文件夹。
  • 我查看了我的 ftpPublisher,唯一的区别是我将 makeEmptyDirs 设置为 false。没关系,但也许? ftp 日志也显示任何错误吗?如果您使用 ftpPublisher 使用的相同凭据登录,您可以创建子目录吗? dist 中是否还有其他文件夹可以转移?要检查的另一件事是资产文件夹是否实际上在工件中。如果您想在那里进行故障排除,我创建了一个 Jenkins 故障排除聊天室。
  • 我进入了 Jenkins 工作区文件夹,但 assets 子文件夹不存在。 assets 子文件夹是 dist 文件夹中唯一的子文件夹。唯一未传输的其他文件是网站图标。我尝试将 sourceFiles 参数更改为 'webapp/dist/**'] 但没有成功。
  • 您好,您的Jenkins项目文件夹结构中是否有空格或特殊字符?像 workspace\my project\webapp\... 似乎在 Jenkins 下的某些 nodejs 和 angular cli 版本上存在错误。看到这个链接github.com/angular/angular-cli/issues/9230

标签: jenkins ftp jenkins-pipeline jenkins-plugins


【解决方案1】:

我能够解决这个问题。我将管道的标题更改为所有小写字母,没有任何空格。然后,我通过修改位于 Jenkins 根目录中的 config.xml 中的 workspaceDir 条目,将工作区文件夹的文件路径更改为“C:/jenkinsworkspace/${ITEM_FULL_NAME}”。我在修改 config.xml 之前停止了 Jenkins 服务。资产文件夹和网站图标都在构建中生成。这是https://github.com/angular/angular-cli/issues/9230 中提到的解决方案之一。感谢@Alberto L. Bonfiglio 的帮助。

【讨论】: