파일 변환 작업

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

이 작업을 사용하여 구성 및 매개 변수 파일에 파일 변환 및 변수 대체를 적용합니다. 번역이 처리되는 방법에 대한 자세한 내용은 파일 변환 및 변수 대체 참조를 참조하세요.

중요

이 작업은 웹 패키지용이며 웹 패키지 파일이 필요하며 독립 실행형 json 파일에서는 작동하지 않습니다.

파일 변환

  • 현재 파일 변환은 XML 파일에 대해서만 지원됩니다.

  • 구성 파일(*.config)에 XML 변환을 적용하려면 구문을 사용하여 줄 바꿈으로 구분된 변환 파일 규칙 목록을 지정해야 합니다.

    -transform <path to the transform file> -xml <path to the source file> -result <path to the result file>

  • 파일 변환은 많은 시나리오에서 유용합니다. 특히 App Service에 배포하고 표준 Web.config 변환 구문에 따라 다양한 환경(예: 개발, 테스트 또는 Prod)에 대한 구성을 추가, 제거 또는 수정하려는 경우에 유용합니다.

  • 이 기능을 사용하여 콘솔 또는 Windows 서비스 애플리케이션 구성 파일(예: FabrikamService.exe.config)을 비롯한 다른 파일을 변환할 수도 있습니다.

  • 구성 파일 변환은 변수 대체 전에 실행됩니다.

변수 대체

  • 현재는 변수 대체에 대해 XML 및 JSON 파일 형식만 지원됩니다.

  • 대상 구성 파일에 정의된 토큰이 업데이트된 다음 변수 값으로 바뀝니다.

  • 변수 대체는 구성 파일 변환 후에 실행됩니다.

  • 변수 대체는 개체 계층 구조에 미리 정의된 JSON 키에만 적용됩니다. 새 키를 만들지 않습니다.

예제

.Production.config패턴으로 명명된 모든 구성 파일에서 실행하려면 XML 변환이 필요한 경우 변환 규칙을 다음과 같이 지정해야 합니다.

-transform **\*.Production.config -xml **\*.config

파이프라인의 스테이지 이름을 기반으로 명명된 구성 파일이 있는 경우 다음을 사용할 수 있습니다.

-transform **\*.$(Release.EnvironmentName).config -xml **\*.config

중첩 또는 계층 구조인 JSON 변수를 대체하려면 JSONPath 식을 사용하여 지정합니다. 예를 들어 아래 샘플에서 ConnectionString 값을 바꾸려면 빌드 또는 릴리스 파이프라인(또는 릴리스 파이프라인 내의 단계)에서와 같이 Data.DefaultConnection.ConnectionString 변수를 정의해야 합니다.

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

참고

빌드 및 릴리스 파이프라인에 정의된 사용자 지정 변수만 대체에 사용됩니다. 기본 및 시스템 파이프라인 변수는 제외됩니다.

현재 제외된 접두사 목록은 다음과 같습니다.

  • 'agent.'
  • 'azure_http_user_agent'
  • 'build.'
  • 'common.'
  • 'release.'
  • 'system.'
  • 'tf_'

릴리스 파이프라인과 단계 모두에서 동일한 변수가 정의되면 단계 정의 변수가 파이프라인 정의 변수를 대체합니다.

참고 항목: 파일 변환 및 변수 대체 참조입니다.

요청

None

YAML 코드 조각

# File transform
# Replace tokens with variable values in XML or JSON configuration files
- task: FileTransform@1
  inputs:
    #folderPath: '$(System.DefaultWorkingDirectory)/**/*.zip' 
    #enableXmlTransform: # Optional
    #xmlTransformationRules: '-transform **\*.Release.config -xml **\*.config-transform **\*.$(Environment.Name).config -xml **\*.config' # Optional
    #fileType: # Optional. Options: xml, json
    #targetFiles: # Optional

인수

인수 설명
패키지 또는 폴더
folderPath
패키지 또는 폴더의 파일 경로입니다. 변수(빌드 | 릴리스 ), 와일드카드가 지원됩니다. 예들 들어 $(System.DefaultWorkingDirectory)/*/.zip입니다. 압축된 폴더의 경우 콘텐츠가 TEMP 위치로 추출되고, 변환이 실행되고, 결과가 원래 아티팩트 위치에 압축됩니다.
XML 변환
enableXmlTransform
아래 지정된 규칙에 따라 XML 변환을 적용하려면 이 옵션을 사용합니다. 구성 변환은 변수 대체 전에 실행됩니다. XML 변환은 Windows 플랫폼에 대해서만 지원됩니다.
변환 규칙
xmlTransformationRules
구문을 사용하여 줄 바꿈으로 구분된 변환 파일 규칙 목록 제공
-transform <path to the transform file> -xml <path to the source configuration file> -result <path to the result file>
결과 파일 경로는 선택 사항이며, 지정하지 않으면 원본 구성 파일이 변환된 결과 파일로 대체됩니다.
파일 형식
fileType
대체를 수행할 파일 형식을 지정합니다. 구성 변환 후에 변수 대체가 실행됩니다. XML의 경우 빌드 또는 릴리스 파이프라인에 정의된 변수는 구성 파일 및 parameters.xml 파일의 appSettings, applicationSettings 및 connectionStrings 섹션의 토큰('key' 또는 'name') 항목과 일치합니다.
대상 파일
targetFiles
변수 대체를 위해 줄 바꿈으로 구분된 파일 목록을 제공합니다. 파일 이름은 루트 폴더를 기준으로 지정해야 합니다.

오픈 소스

이 작업은 GitHub에서 오픈 소스. 피드백과 기여를 환영합니다.