我使用复制工件插件作为构建步骤,将工件 (*.dll) 从之前的构建项目复制到我正在构建的项目的 lib 文件夹中。但是,这些文件通常已经存在于代码存储库中,但我想使用复制工件构建步骤覆盖它们。这是可能的还是我应该添加另一个构建步骤来首先删除现有文件?
最佳答案
我可以确认 Copy Artifact 插件将文件复制到我的 SCM checkout 区域,但我可以看到如果未设置写入权限,则无法处理文件。
1.检查 jenkins 作业控制台日志。 您看到复制消息吗? 请参阅以下来自 Copy Artifact 成功和失败案例的消息示例。
2.构建步骤顺序:确保“从另一个项目复制工件”构建步骤在 SCM 更新之后和主构建步骤之前完成。 (显然我知道,但以防万一)。
3.通过添加复制区域的构建步骤(或添加执行脚本)目录列表来调试权限和文件存在。 'ls -alstr <目录>'
您使用什么单片机?你检查得怎么样? 我猜问题是由于结账后对文件或目录的写权限造成的。或者可能构建步骤顺序。
控制台日志中的成功消息:
Copied <num> artifacts from "<jobname>" build number <jobnum>.
控制台日志中出现不成功消息(权限 chmod 000 文件):
FATAL: Failed to copy /var/lib/jenkins/jobs/jobname/builds/178/archive/file to /var/lib/jenkins/jobs/jobname/workspace/dir/file
hudson.util.IOException2: Failed to copy /var/lib/jenkins/jobs/jobname/builds/178/archive/file to /var/lib/jenkins/jobs/jobname/workspace/dir/file
at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:118)
at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyAll(FingerprintingCopyMethod.java:67)
at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:526)
at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:460)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:78)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.build(Build.java:205)
at hudson.model.Build$BuildExecution.doRun(Build.java:162)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
at hudson.model.Run.execute(Run.java:1741)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Caused by: java.io.FileNotFoundException: /var/lib/jenkins/jobs/jobname/workspace/dir/file (Permission denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at hudson.FilePath.write(FilePath.java:1907)
at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:82)
... 13 more
关于Jenkins 和 Copy Artifact 插件 : Overwrite existing file in target project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42861679/