이 작업을 사용하여 일치 패턴을 사용하여 원본 폴더에서 대상 폴더로 파일을 복사합니다. 일치 패턴은 폴더 경로가 아닌 파일 경로만 일치합니다.
문법
# Copy files v2
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths).
- task: CopyFiles@2
inputs:
#SourceFolder: # string. Source Folder.
Contents: '**' # string. Required. Contents. Default: **.
TargetFolder: # string. Required. Target Folder.
# Advanced
#CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
#OverWrite: false # boolean. Overwrite. Default: false.
#flattenFolders: false # boolean. Flatten Folders. Default: false.
#preserveTimestamp: false # boolean. Preserve Target Timestamp. Default: false.
#retryCount: '0' # string. Retry count to copy the file. Default: 0.
#delayBetweenRetries: '1000' # string. Delay between two retries. Default: 1000.
#ignoreMakeDirErrors: false # boolean. Ignore errors during creation of target folder. Default: false.
# Copy files v2
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths).
- task: CopyFiles@2
inputs:
#SourceFolder: # string. Source Folder.
Contents: '**' # string. Required. Contents. Default: **.
TargetFolder: # string. Required. Target Folder.
# Advanced
#CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
#OverWrite: false # boolean. Overwrite. Default: false.
#flattenFolders: false # boolean. Flatten Folders. Default: false.
#preserveTimestamp: false # boolean. Preserve Target Timestamp. Default: false.
입력
SourceFolder
-
원본 폴더
string
;
선택 사항입니다. 복사할 파일이 들어 있는 폴더입니다. 폴더가 비어 있으면 작업은 $(Build.SourcesDirectory)
지정한 것처럼 리포지토리의 루트 폴더에서 파일을 복사합니다.
빌드에서 원본 디렉터리 외부에서 아티팩트가 생성되는 경우 파이프라인에 대해 만든 디렉터리에서 파일을 복사할 $(Agent.BuildDirectory)
지정합니다.
Contents
-
콘텐츠
string
; 필수 사항입니다. 기본값은 **
입니다.
복사본의 일부로 포함할 파일 경로입니다. 이 문자열은 여러 줄의 일치 패턴을 지원합니다.
다음은 그 예입니다.
-
*
지정된 원본 폴더의 모든 파일을 복사합니다. -
**
지정된 원본 폴더의 모든 파일과 모든 하위 폴더의 모든 파일을 복사합니다. -
**\bin\**
모든 파일을 bin 폴더에서 재귀적으로 복사합니다.
이 패턴은 폴더 경로가 아닌 파일 경로만 일치하도록 사용됩니다.
**\bin\**
대신 **\bin
같은 패턴을 지정합니다.
[]
특수 문자 래핑은 파일 이름에서 리터럴 glob 문자를 이스케이프하는 데 사용할 수 있습니다. 예를 들어 리터럴 파일 이름 hello[a-z]
hello[[]a-z]
이스케이프할 수 있습니다. 자세한 내용은 파일 일치 패턴 참조참조하세요.
빌드 에이전트 유형과 일치하는 경로 구분 기호를 사용합니다. 예를 들어 /
Linux 에이전트에 사용해야 합니다. 아래에는 더 많은 예제가 나와 있습니다.
대상 폴더TargetFolder
-
string
; 필수 사항입니다.
복사된 파일을 포함할 대상 폴더 또는 UNC 경로입니다.
변수를 사용할 수 있습니다. 예: $(build.artifactstagingdirectory)
.
대상 폴더 정리CleanTargetFolder
-
boolean
; 기본값은 false
입니다.
선택 사항입니다. 복사 프로세스 전에 대상 폴더의 모든 기존 파일을 삭제합니다.
OverWrite
-
덮어쓰기
boolean
; 기본값은 false
입니다.
선택 사항입니다. 대상 폴더의 기존 파일을 바꿉니다.
폴더 평면화flattenFolders
-
boolean
; 기본값은 false
입니다.
선택 사항입니다. 폴더 구조를 평면화하고 모든 파일을 지정된 대상 폴더에 복사합니다.
preserveTimestamp
-
대상 타임스탬프 유지
boolean
; 기본값은 false
입니다.
원본 소스 파일을 사용하여 대상 파일 타임스탬프를 유지합니다.
retryCount
-
파일 복사를 위한 재시도 횟수
string
; 기본값은 0
입니다.
파일을 복사하기 위한 재시도 횟수를 지정합니다. 이 문자열은 원격 호스트의 UNC 대상 경로와 같은 일시적인 문제에 유용합니다.
delayBetweenRetries
-
두 재시도 사이의 지연입니다.
string
; 기본값은 1000
입니다.
두 재시도 사이의 지연을 지정합니다. 이 문자열은 원격 호스트의 UNC 대상 경로와 같은 일시적인 문제에 유용합니다.
ignoreMakeDirErrors
-
대상 폴더를 만드는 동안 오류를 무시합니다.
boolean
; 기본값은 false
입니다.
대상 폴더를 만드는 동안 발생하는 오류를 무시합니다. 이 문자열은 하나의 대상 폴더 내에서 여러 에이전트에 의한 작업 병렬 실행 문제를 방지하는 데 유용합니다.
작업 제어 옵션
모든 작업에는 작업 입력 외에도 제어 옵션이 있습니다. 자세한 내용은 컨트롤 옵션 및 일반적인 작업 속성참조하세요.
출력 변수
없음.
비고
일치하는 파일이 없으면 작업은 여전히 성공을 보고합니다.
- 일치
Overwrite
된 파일이 대상 폴더에 이미 있는 경우false
작업은 실패를 보고하지 않지만 파일이 이미 존재함을 기록하고 건너뜁니다. - 일치
Overwrite
된 파일이 대상 폴더에 이미 있는 경우true
일치하는 파일을 덮어씁니다.
예시
파일을 아티팩트 스테이징 디렉터리에 복사하고 게시합니다.
steps:
- task: CopyFiles@2
inputs:
contents: '_buildOutput/**'
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
실행 파일 및 readme 파일 복사
목표
이 C# 콘솔 앱을 실행하는 데 필요한 추가 정보와 파일만 복사하려고 합니다.
`-- ConsoleApplication1
|-- ConsoleApplication1.sln
|-- readme.txt
`-- ClassLibrary1
|-- ClassLibrary1.csproj
`-- ClassLibrary2
|-- ClassLibrary2.csproj
`-- ConsoleApplication1
|-- ConsoleApplication1.csproj
비고
ConsoleApplication1.sln 에는 .dll 및 .exe 파일이 있는 bin 폴더가 포함되어 있으며, 무엇이 이동되는지 보려면 아래 결과를 참조하십시오!
변수 탭에서 $(BuildConfiguration)
로 설정됩니다 release
.
여러 일치 패턴이 있는 예:
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
Contents: |
ConsoleApplication1\ConsoleApplication1\bin\**\*.exe
ConsoleApplication1\ConsoleApplication1\bin\**\*.dll
ConsoleApplication1\readme.txt
TargetFolder: '$(Build.ArtifactStagingDirectory)'
OR 조건이 있는 예:
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
Contents: |
ConsoleApplication1\ConsoleApplication1\bin\**\?(*.exe|*.dll)
ConsoleApplication1\readme.txt
TargetFolder: '$(Build.ArtifactStagingDirectory)'
NOT 조건의 예:
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
Contents: |
ConsoleApplication1\**\bin\**\!(*.pdb|*.config)
!ConsoleApplication1\**\ClassLibrary*\**
ConsoleApplication1\readme.txt
TargetFolder: '$(Build.ArtifactStagingDirectory)'
content 섹션의 변수를 사용하는 예
- task: CopyFiles@2
inputs:
Contents: '$(Build.Repository.LocalPath)/**'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
결과
이러한 파일은 스테이징 디렉토리로 복사됩니다.
`-- ConsoleApplication1
|-- readme.txt
`-- ConsoleApplication1
`-- bin
`-- Release
| -- ClassLibrary1.dll
| -- ClassLibrary2.dll
| -- ConsoleApplication1.exe
.git 폴더를 제외한 소스 디렉토리에서 모든 것을 복사하십시오.
여러 일치 패턴이 있는 예:
steps:
- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: |
**/*
!.git/**/*
TargetFolder: '$(Build.ArtifactStagingDirectory)'
요구 사항
요구 사항 | 설명 |
---|---|
파이프라인 유형 | YAML, 클래식 빌드 |
다음에서 실행 | 에이전트, DeploymentGroup |
요구 | 없음 |
기능 | 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다. |
명령 제한 | 이 작업은 다음 명령 제한사용하여 실행됩니다. |
settable 변수 |
이 작업에는 다음 변수를 설정할 수 있는 권한이 있습니다. 변수를 설정할 수 없습니다. |
에이전트 버전 | 2.182.1 이상 |
작업 범주 | 유틸리티 |
요구 사항 | 설명 |
---|---|
파이프라인 유형 | YAML, 클래식 빌드 |
다음에서 실행 | 에이전트, DeploymentGroup |
요구 | 없음 |
기능 | 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다. |
명령 제한 | 어느 것이든 |
settable 변수 |
어느 것이든 |
에이전트 버전 | 1.91.0 이상 |
작업 범주 | 유틸리티 |
참고하십시오
- 파일 일치 패턴 참조
- 이 작업을 사용하여 아티팩트 게시하려면 어떻게 해야 하나요?
- 문제 해결위해 자세한 로그 사용하는 방법을 알아봅니다.