다음을 통해 공유


CopyFiles@2 - 파일 복사 v2 작업

이 작업을 사용하여 일치 패턴을 사용하여 원본 폴더에서 대상 폴더로 파일을 복사합니다. 일치 패턴은 폴더 경로가 아닌 파일 경로만 일치합니다.

문법

# 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 이상
작업 범주 유틸리티

참고하십시오