Jenkins 和 Copy Artifact 插件 : Overwrite existing file in target project?

标签 jenkins build jenkins-plugins

我使用复制工件插件作为构建步骤,将工件 (*.dll) 从之前的构建项目复制到我正在构建的项目的 lib 文件夹中。但是,这些文件通常已经存在于代码存储库中,但我想使用复制工件构建步骤覆盖它们。这是可能的还是我应该添加另一个构建步骤来首先删除现有文件?

最佳答案

我可以确认 Copy Artifact 插件将文件复制到我的 SCM checkout 区域,但我可以看到如果未设置写入权限,则无法处理文件。

1.检查 jenkins 作业控制台日志。 您看到复制消息吗? 请参阅以下来自 Copy Artifact 成功和失败案例的消息示例。

2.构建步骤顺序:确保“从另一个项目复制工件”构建步骤在 SCM 更新之后和主构建步骤之前完成。 (显然我知道,但以防万一)。

3.通过添加复制区域的构建步骤(或添加执行脚本)目录列表来调试权限和文件存在。 'ls -alstr <目录>'

您使用什么单片机?你检查得怎么样? 我猜问题是由于结账后对文件或目录的写权限造成的。或者可能构建步骤顺序。

引用:Copy Artifact Plugin

控制台日志中的成功消息:

Copied &lt;num> artifacts from "&lt;jobname>" build number &lt;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/

相关文章:

build - hudson 构建失败 : Non-resolvable parent POM

jenkins - Gradle项目未在 Jenkins 下正确命名文件

java - 在 Jenkins 中添加 "Create maven jobs"时无法看到 "new items"

Jenkins Jobs DSL - 如何定义属性文件

linux - 使用 sed 在模式后添加文本,但添加的文本来自列表文件

haskell - 我可以得到 `cabal install` 来使用多核吗?

Jenkins EnvInject 插件 - 包含多行的环境变量值

node.js - 在 Jenkins docker 实例上找不到 Node

ldap - 如何将Jenkins LDAP访问限制为特定groupOfNames中的用户?

sql - 管理数据库更新