【发布时间】: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