파일 변환 및 변수 대체 참조
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018
참고 항목
Microsoft Visual Studio Team Foundation Server 2018 및 이전 버전에는 다음과 같은 이름 지정 차이점이 있습니다.
- 빌드 및 릴리스용 파이프라인을 정의라고 합니다.
- 실행을 빌드라고 합니다.
- 서비스 연결을 서비스 엔드포인트라고 합니다.
- 스테이지 를 환경이라고 합니다 .
- 작업을 단계라고 합니다.
Azure 앱 서비스 배포 작업 버전 3 이상 및 IIS 웹앱 배포 작업과 같은 일부 작업을 통해 사용자는 지정된 환경에 따라 패키지를 구성할 수 있습니다. 이러한 작업은 parameters.xml 파일의 값으로 web.config 파일의 값 재정의를 지원하는 msdeploy.exe 사용합니다. 그러나 파일 변환 및 변수 대체는 웹앱 파일에만 국한되지 않습니다. XML 또는 JSON 파일에서 이러한 기술을 사용할 수 있습니다.
참고 항목
파일 변환 및 변수 대체는 Azure Pipelines에서 사용하는 별도의 파일 변환 작업에서도 지원됩니다. 파일 변환 작업을 사용하여 파일 변환 및 변수 대체를 구성 및 매개 변수 파일에 적용할 수 있습니다.
구성 대체는 태스크에 대한 설정의 파일 변환 및 변수 대체 옵션 섹션에 지정됩니다. 변환 및 대체 옵션은 다음과 같습니다.
작업이 실행되면 먼저 구성 및 매개 변수 파일에서 XML 변환, XML 변수 대체 및 JSON 변수 대체를 수행합니다. 다음으로 parameters.xml 파일을 사용하여 web.config 파일의 값을 대체하는 msdeploy.exe 호출합니다.
XML 변환
XML 변환은 Web.config 변환 구문에 따라 구성 파일(*.config
파일) 변환을 지원하며 웹 패키지가 배포될 환경을 기반으로 합니다.
이 옵션은 다른 환경에 대한 구성을 추가, 제거 또는 수정하려는 경우에 유용합니다.
변환은 콘솔 또는 Windows 서비스 애플리케이션 구성 파일(예 : FabrikamService.exe.config)을 포함한 다른 구성 파일에 적용됩니다.
구성 변환 파일 명명 규칙
XML 변환은 파일에서 *.config
명명된 *.Release.config
변환 구성 파일에 대해 실행되거나 *.<stage>.config
다음 순서대로 실행됩니다.
*.Release.config
(예: fabrikam. Release.config)*.<stage>.config
(예: fabrikam. Production.config)
예를 들어 패키지에 다음 파일이 포함되어 있는 경우
- Web.config
- Web.Debug.config
- Web.Release.config
- Web.Production.config
스테이지 이름이 Production이고 변환이 적용 Web.Release.config
Web.config
되고 그 다음에 잇Web.Production.config
습니다.
XML 변환 예제
필요한 구성을 사용하여 웹 애플리케이션 패키지를 만들고 파일을 변환합니다. 예를 들어 다음 구성 파일을 사용합니다.
구성 파일
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\\MSDB;DbFilename=aspcore-local.mdf;" /> </connectionStrings> <appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> </appSettings> <system.web> <authentication mode="None" /> <compilation targetFramework="4.5" debug="true" /> </system.web> </configuration>
파일 변환
<?xml version="1.0"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="Insert" /> </connectionStrings> <appSettings> <add xdt:Transform="Replace" xdt:Locator="Match(key)" key="webpages:Enabled" value="true" /> </appSettings> <system.web> <compilation xdt:Transform="RemoveAttributes(debug)" /> </system.web> </configuration>
이 예제 변환 구성 파일은 다음 세 가지 작업을 수행합니다.
- 요소 내에 새 데이터베이스 연결 문자열 추가합니다
ConnectionStrings
. - 요소 내부의
appSettings
값을Webpages:Enabled
수정합니다. - 요소 내의
debug
요소에서compilation
특성을 제거합니다System.Web
.
자세한 내용은 Visual Studio를 사용하여 웹 프로젝트 배포에 대한 Web.config 변환 구문을 참조하세요.
- 요소 내에 새 데이터베이스 연결 문자열 추가합니다
릴리스라는 스테이지를 사용하여 릴리스 파이프라인을 만듭니다.
Azure 앱 서비스 배포 태스크를 추가하고 XML 변환 옵션을 설정(틱)합니다.
릴리스 파이프라인을 저장하고 새 릴리스를 시작합니다.
Web.config
파일을 열어서Web.Release.config
변환을 확인합니다.<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\\MSDB;DbFilename=aspcore-local.mdf;" /> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" /> </connectionStrings> <appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="true" /> </appSettings> <system.web> <authentication mode="None" /> <compilation targetFramework="4.5" /> </system.web> </configuration>
XML 변환 정보
이 기술을 사용하여 기본 패키지를 만들고 여러 단계에 배포할 수 있습니다.
XML 변환은 구성 파일과 변환 파일이 지정된 패키지 내의 동일한 폴더에 있는 경우에만 적용됩니다.
기본적으로 MSBuild는 요소가 파일의 변환 파일에 이미 있는 경우 웹 패키지를 생성할 때
<DependentUpon>
변환을*.csproj
적용합니다. 이러한 경우 파일에 추가 변환이 적용되지Web.config
않으므로 Azure 앱 서비스 배포 작업이 실패합니다. 따라서 XML 변환을<DependentUpon>
사용할 때 빌드 시간 구성을 사용하지 않도록 설정하려면 요소를 모든 변환 파일에서 제거하는 것이 좋습니다.파일이 루트 폴더에 복사되도록 각 변환 파일(
Web.config
)의 Build Action 속성을 Content로 설정합니다.... <Content Include="Web.Debug.config"> <DependentUpon>Web.config</DependentUpon> </Content> <Content Include="Web.Release.config"> <DependentUpon>Web.config</DependentUpon> </Content> ...
XML 변수 대체
이 기능을 사용하면 웹 패키지 및 XML 매개 변수 파일()의 구성 파일(*.config
parameters.xml
파일)에서 구성 설정을 수정할 수 있습니다.
이러한 방식으로 동일한 패키지를 배포할 환경에 따라 구성할 수 있습니다.
변수 대체는 구성 파일의 applicationSettings
, appSettings
및 connectionStrings
configSections
요소에만 적용됩니다. 이러한 요소 외부에서 값을 대체하려는 경우 (parameters.xml
) 파일을 사용할 수 있지만 타사 파이프라인 작업을 사용하여 변수 대체를 처리해야 합니다.
XML 변수 대체 예제
예를 들어 다음 값을 변경하는 작업을 고려합니다.Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSection>
<section name="entityFramework" />
</configSection>
<connectionStrings>
<!-- Change connectionString in this line: -->
<add name="DefaultConnection"
connectionString="Data Source=(LocalDB)\LocalDB;FileName=Local.mdf" />
</connectionStrings>
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobstructiveJavascriptEnabled" value="true" />
<!-- Change AdminUserName in this line: -->
<add key="AdminUserName" value="__AdminUserName__" />
<!-- Change AdminPassword in this line: -->
<add key="AdminPassword" value="__AdminPassword__" />
</appSettings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.LocalDbConnectionFactory">
<parameters></parameters>
</defaultConnectionFactory>
<providers>
<!-- Change invariantName in this line: -->
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer" />
</providers>
</entityFramework>
</configuration>
릴리스라는 스테이지를 사용하여 릴리스 파이프라인을 만듭니다.
Azure 앱 서비스 배포 작업을 추가하고 XML 변수 대체 옵션을 설정(틱)합니다.
릴리스 파이프라인 변수에 필요한 값을 정의합니다.
속성 값 보안 범위 기본값커넥트ion Data Source=(ProdDB)\MSSQLProdDB; AttachFileName=Local.mdf 아니요 Release AdminUserName Prod관리Name 아니요 Release AdminPassword [암호] 예 Release invariantName System.Data.SqlClientExtension 아니요 Release 릴리스 파이프라인을 저장하고 새 릴리스를 시작합니다.
Web.config
파일을 열어 변수 대체를 확인합니다.<?xml version="1.0" encoding="utf-8"?> <configuration> <configSection> <section name="entityFramework" /> </configSection> <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(ProdDB)\MSSQLProdDB;AttachFileName=Local.mdf" /> </connectionStrings> <appSettings> <add key="ClientValidationEnabled" value="true" /> <add key="UnobstructiveJavascriptEnabled" value="true" /> <add key="AdminUserName" value="ProdAdminName" /> <add key="AdminPassword" value="*password_masked_for_display*" /> </appSettings> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.LocalDbConnectionFactory"> <parameters></parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClientExtension" type="System.Data.Entity.SqlServer" /> </providers> </entityFramework> </configuration>
XML 변수 대체 정보
기본적으로 ASP.NET 애플리케이션에는 매개 변수가 있는 기본 연결 특성이 있습니다. 이러한 값은 웹 패키지 내의
parameters.xml
파일에서만 재정의됩니다.대체는 배포 전에 발생하므로 사용자는 사용(웹 패키지 내부) 또는
setparameters
파일의Web.config
parameters.xml
값을 재정의할 수 있습니다.
JSON 변수 대체
이 기능은 JSON 구성 파일의 값을 대체합니다.
지정된 JSON 구성 파일(예 appsettings.json
: )의 값을 릴리스 파이프라인 및 스테이지 변수의 이름과 일치하는 값으로 재정의합니다.
특정 JSON 파일의 변수를 대체하려면 줄 바꿈으로 구분된 JSON 파일 목록을 제공합니다. 루트 폴더를 기준으로 파일 이름을 지정해야 합니다. 예를 들어 패키지에 다음 구조가 있는 경우:
/WebPackage(.zip)
/---- content
/----- website
/---- appsettings.json
/---- web.config
/---- [other folders]
/--- archive.xml
/--- systeminfo.xml
appsettings.json 값을 대체하려면 루트 폴더의 상대 경로를 입력합니다. 예를 들면 다음과 같습니다content/website/appsettings.json
.
또는 야생카드 패턴을 사용하여 특정 JSON 파일을 검색합니다.
예를 들어 appsettings.json **/appsettings.json
파일의 상대 경로와 이름을 반환합니다.
JSON 변수 대체 예제
예를 들어 이 JSON 파일의 값을 재정의하는 작업을 고려합니다.
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Data Source=(LocalDb)\\MSDB;AttachDbFilename=aspcore-local.mdf;"
},
"DebugMode": "enabled",
"DBAccess": {
"Administrators": ["Admin-1", "Admin-2"],
"Users": ["Vendor-1", "vendor-3"]
},
"FeatureFlags": {
"Preview": [
{
"newUI": "AllAccounts"
},
{
"NewWelcomeMessage": "Newusers"
}
]
}
}
}
작업은 JSON 파일 계층 구조 내의 각 위치에서 커넥트ionString, DebugMode, 사용자 값의 첫 번째 및 NewWelcomeMessage 값을 재정의하는 것입니다.
릴리스라는 스테이지를 사용하여 릴리스 파이프라인을 만듭니다.
Azure 앱 서비스 배포 작업을 추가하고 JSON 변수 대체 텍스트 상자의 변수 값을 대체하기 위해 줄 바꿈으로 구분된 JSON 파일 목록을 입력합니다. 파일 이름은 루트 폴더를 기준으로 해야 합니다. wild카드s를 사용하여 JSON 파일을 검색할 수 있습니다. 예를 들어 패키지
**/*.json
내의 모든 JSON 파일에서 대체 값을 의미합니다.릴리스 파이프라인 또는 스테이지 변수에서 필요한 대체 값을 정의합니다.
속성 값 보안 범위 Data.DebugMode disabled 아니요 Release Data.Default커넥트ion.커넥트ionString Data Source=(prodDB)\MSDB; AttachDbFilename=prod.mdf; 아니요 Release Data.DBAccess.Users.0 관리-3 예 Release Data.FeatureFlags.Preview.1.NewWelcomeMessage AllAccounts 아니요 Release 릴리스 파이프라인을 저장하고 새 릴리스를 시작합니다.
변환 후 JSON에는 다음이 포함됩니다.
{ "Data": { "DefaultConnection": { "ConnectionString": "Data Source=(prodDB)\MSDB;AttachDbFilename=prod.mdf;" }, "DebugMode": "disabled", "DBAccess": { "Administrators": ["Admin-1", "Admin-2"], "Users": ["Admin-3", "vendor-3"] }, "FeatureFlags": { "Preview": [ { "newUI": "AllAccounts" }, { "NewWelcomeMessage": "AllAccounts" } ] } } } '''
JSON 변수 대체 정보
파일의 중첩된 수준에서 값을 대체하려면 이름을 계층적 순서로 마침표(
.
)로 연결합니다.JSON 개체는 해당 인덱스로 값을 참조할 수 있는 배열을 포함할 수 있습니다. 예를 들어 위에 표시된 사용자 배열의 첫 번째 값을 대체하려면 변수 이름을
DBAccess.Users.0
사용합니다. NewWelcomeMessage에서 값을 업데이트하려면 변수 이름을FeatureFlags.Preview.1.NewWelcomeMessage
사용합니다. 그러나 파일 변환 태스크 에는 JSON 파일의 전체 배열을 변환하는 기능이 있습니다. 또한DBAccess.Users = ["NewUser1","NewUser2","NewUser3"]
을 사용할 수 있습니다.JSON 변수 대체에는 문자열 대체만 지원됩니다.
대체는 UTF-8 및 UTF-16 LE 인코딩된 파일에 대해서만 지원됩니다.
입력한 파일 사양이 파일과 일치하지 않으면 작업이 실패합니다.
변수 이름 일치는 대/소문자를 구분합니다.
변수 대체는 개체 계층 구조에 미리 정의된 JSON 키에만 적용됩니다. 새 키를 만들지 않습니다.
변수 이름에 마침표(".")가 포함된 경우 변환은 계층 내에서 항목을 찾으려고 시도합니다. 예를 들어 변수 이름이
first.second.third
면 변환 프로세스에서 다음을 검색합니다."first" : { "second": { "third" : "value" } }
뿐만
"first.second.third" : "value"
아니라 .
피드백
https://aka.ms/ContentUserFeedback을 참조하세요.
출시 예정: 2024년 내내 콘텐츠 피드백 메커니즘인 GitHub 문제를 단계적으로 폐지하고 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은다음에 대한 사용자 의견 제출 및 보기