Adds a build step to copy artifacts from another project.
The plugin lets you specify which build to copy artifacts from (e.g. the last successful/stable build, by build number, or by a build parameter). You can also control the copying process by filtering the files being copied, specifying a destination directory within the target project, etc. Click the help icon on each field to learn the details, such as selecting Maven or multiconfiguration projects or using build parameters. You can also copy from the workspace of the latest completed build of the source project, instead of its artifacts. All artifacts copied are automatically Pipeline syntax
To copy artifacts from the latest stable build of "sourceproject"
copyArtifacts(projectName: 'sourceproject');
To copy artifacts from the specific build of "downstream"
def built = build('downstream'); // https://plugins.jenkins.io/pipeline-build-step copyArtifacts(projectName: 'downstream', selector: specific("${built.number}"));
Parameters of copyArtifacts
| parameter | type | description |
|---|---|---|
projectName |
string |
the name of project (required) |
selector |
BuildSelector |
the selector to select the build to copy from. If not specified, latest stable build is used. |
parameters |
string |
comma-separated name and value pairs (name1=value1,name2=value2) to filter the build to copy from. |
filter |
string |
ant-expression to filter artifacts to copy |
excludes |
string |
ant-expression to exclude artifacts to copy |
target |
string |
target directory to copy to |
flatten |
boolean |
ignore directory structures of artifacts |
optional |
boolean |
do not fail the step even if no appropriate build is found. |
fingerprintArtifacts |
boolean |
fingerprint artifacts to track builds using those artifacts. false for default if the parameter isn’t specified (Snippet Generator defaults this to true and specifies the parameter). |
resultVariableSuffix |
boolean |
useless for pipelines |
includeBuildNumberInTargetPath |
boolean |
Include source build number in target path. |
selectors
| name | feature |
|---|---|
lastSuccessful |
Latest successful build |
specific |
Specific build |
permalink |
Specified by permalink |
lastCompleted |
completed build (ignoring build status) |
latestSavedBuild |
Latest saved build (marked "keep forever") |
buildParameter |
Specified by a build parameter |
upstream |
Upstream build that triggered this job |
When using this plugin with a Windows agent node that is configured as a Windows service, the service should have permission to interact with desktop (select "Allow service to interact with desktop" from Jenkins Agent service properties). Otherwise you may see errors similar to this:
ERROR: Failed to copy artifacts from ... hudson.util.IOException2: java.lang.IllegalAccessError: class hudson.remoting.Pipe$ConnectCommand cannot access its superclass hudson.remoting.Command at hudson.FilePath.copyRecursiveTo(FilePath.java:1526) at hudson.FilePath.copyRecursiveTo(FilePath.java:1451) at hudson.plugins.copyartifact.FilePathCopyMethod.copyAll(FilePathCopyMethod.java:51) ...
Artifacts should be stored as archived files.
Copyartifact tries to copy artifacts preserving file attributes like permissions and symbolic links. Though, it may fail in some situations (like for security issues).
It’s highly recommended to pack files to copy into an archive file,
using tar command
or Permissions to copy artifact
When you face a following message and fail to copy artifacts, this may be caused by permission to the job with artifacts. Please read this section once.
Unable to find project for artifact copy: YOUR_PROJECT_WITH_ARTIFACTS This may be due to incorrect project name or permission settings; see help for project name in job configuration. Build step 'Copy artifacts from another project' marked build as failure
You can configure to allow Copy Artifact to access source jobs in the following ways.
The message will not be encountered if the "Authenticated" user group has the "job/read" permission enabled. If this issue appears on your controller, check if this configuration has recently changed.
In the job configuration pages, you can specify jobs to allow
copy artifacts from that project:
image
Use copyArtifactPermission in pipelines:
Declarative pipeline:
pipeline { agent any; options { copyArtifactPermission('job1,job2,...'); } stages{...} }
Scripted pipeline
properties([ copyArtifactPermission('job1,job2,...'), ]); node { ... }
You can specify multiple jobs separated by commas.
You can use wildcard character ('*') to specify name patterns.
Migration mode is available and automatically enabled for users upgrading Copy Artifact from 1.43.1 or earlier.
Migration mode performs permission checks when configuring jobs or when running builds if the name of the source job is configured with variables. This is the behavior compatible to Copy Artifact 1.43.1 or earlier.
This may cause security vulnerabilities allowing malicious users to bypass permission checks. This mode is provided only to allow users to upgrade job configurations and migrate to Production mode easily. You should migrate to Production mode as soon as you can.
Build executions that would fail in Production mode are recorded and displayed as warnings to administrators.
migration mode warnings
Administrators should check those warnings and update the job configurations to successfully use Production mode.
Migration helper
One example:
stages { stage('Copy Archive') { steps { script { step ([$class: 'CopyArtifact', projectName: 'Create_archive', filter: "packages/infra*.zip", target: 'Infra']); } } } ... }
What that is doing:
Go to the project/workspace named "Create_archive".
Look in the folder "packages" for the file(s) "infra*.zip".
Copy that file(s) into the folder "Infra", in the local workspace. Folder will be created if it doesn’t already exist.
Report issues in the "How to Report an Issue" guidelines when reporting issues.
Changelogs for current releases are recorded in legacy changelog.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。