연습 - 끌어오기 요청에 대한 워크플로 만들기
웹 사이트의 개발 팀이 웹 사이트를 Linux 운영 체제에서 실행되도록 업데이트해 줄 것을 요청했습니다. 이 연습에서는 끌어오기 요청을 열거나 업데이트할 때 자동으로 실행되는 유효성 검사 워크플로를 추가합니다. 그런 다음 웹 사이트의 운영 체제 변경에 대한 끌어오기 요청을 만듭니다.
프로세스 중에 다음을 수행합니다.
- 연습 - 끌어오기 요청 유효성 검사에 대한 워크플로를 만듭니다.
- 워크플로에 Bicep 린팅을 추가합니다.
- 끌어오기 요청을 만들고 워크플로가 실행되는 것을 확인합니다.
- 끌어오기 요청 유효성 검사 워크플로로 식별되는 오류를 수정합니다.
- 워크플로를 다시 실행한 다음 끌어오기 요청을 병합하고 닫습니다.
끌어오기 요청을 만들고 업데이트할 때 실행되는 워크플로 만들기
Visual Studio Code에서 .github/workflows 폴더에 pr-validation.yml이라는 새 파일을 만듭니다.
파일에 다음 코드를 추가합니다.
name: pr-validation on: pull_request
이 코드는 끌어오기 요청을 만들고 업데이트할 때마다 워크플로가 실행되도록 합니다.
참고
리포지토리의 기본 분기에 대해 직접 작업하고 있습니다. 일반적으로는 이 작업을 하지 않지만, 이 연습에서는 단계를 단순하게 유지하기 위해 기본 분기에 대해 작업하겠습니다. 고유한 프로젝트에서는 기본 분기를 보호하도록 분기 보호 규칙을 설정하는 것이 중요합니다.
워크플로에 린팅 작업 추가
끌어오기 요청을 열거나 편집할 때마다 Bicep 파일에 대한 린팅 단계를 실행하려고 합니다. 리포지토리에는 이 워크플로에서 호출할 수 있는 재사용 가능한 린팅 워크플로가 있습니다.
리포지토리에 정의된 린팅 워크플로를 재사용하려면 기존 파일 콘텐츠의 끝에 다음 줄을 추가합니다.
jobs: lint: uses: ./.github/workflows/lint.yml
리포지토리에는 경고 대신 오류를 내보내도록 Linter를 구성하는 bicepconfig.json 파일이 있으므로 린팅 작업 중에 오류가 발생하면 워크플로가 실패합니다.
변경 내용을 저장합니다.
Visual Studio Code 터미널에서 다음 명령을 실행하여 변경 내용을 커밋하고 Git 리포지토리의 기본 분기에 푸시합니다.
git add . git commit -m "Add first version of pull request validation workflow" git push
Bicep 파일 업데이트
다음으로, 웹 사이트의 Bicep 파일을 수정하여 웹 사이트의 운영 체제를 Linux로 업데이트합니다.
Visual Studio Code 터미널에서 다음 명령을 실행하여 변경 내용에 대한 새 분기를 만듭니다.
git checkout -b feature/linux-app
‘deploy’ 폴더에서 ‘main.bicep’ 파일을 엽니다.
파일 위쪽에 있는 변수 정의 아래에서 애플리케이션 프레임워크에 대한 새 변수를 정의합니다.
// Define the names for resources. var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}' var appServicePlanName = 'toy-website-linux' var storageAccountName = 'mystorage${resourceNameSuffix}' var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
이 설정은 Node.js 프레임워크 버전 14를 사용하여 애플리케이션을 빌드한다는 것을 Azure App Service에 알립니다.
appServicePlan
리소스 정의를 업데이트합니다.properties
개체에kind
속성 및reserved
속성을 추가합니다.resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku kind: 'linux' properties: { reserved: true } }
appServiceApp
리소스 정의를 업데이트하여 애플리케이션 프레임워크를 설정합니다.resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: 'node|14-lts' } } }
참고
Bicep에서
appServiceAppLinuxFrameworkVersion
변수가 사용되지 않고 있다는 경고가 표시 될 수도 있습니다. 여기서는 의도적으로 Linter 오류를 일으켜 GitHub 끌어오기 요청 내에서 어떻게 표시되는지 확인할 수 있습니다.변경 내용을 저장합니다.
Visual Studio Code 터미널에서 다음 명령을 실행하여 변경 내용을 커밋하고 Git 리포지토리에 푸시합니다.
git add . git commit -m "Update operating system to Linux" git push origin feature/linux-app
끌어오기 요청 만들기
워크플로가 구성되었고 Bicep 파일이 업데이트되었으므로 이제 끌어오기 요청을 만들 수 있습니다.
브라우저에서 코드를 선택합니다.
2개 분기를 선택하여 GitHub 리포지토리의 분기 목록을 나열합니다.
비교 및 끌어오기 요청은 열려 있는 끌어오기 요청이 없는 분기에 변경 내용을 푸시할 때 잠시 표시됩니다. 끌어오기 요청 열기 페이지의 바로 가기입니다.
feature/linux-app 분기 옆에 있는 새 끌어오기 요청을 선택합니다. 새 끌어오기 요청 옵션을 표시하려면 자세히 아이콘(...)을 선택 해야 할 수 있습니다.
끌어오기 요청 만들기를 선택합니다.
끌어오기 요청 세부 정보 페이지가 표시됩니다.
끌어오기 요청 세부 정보의 검사 섹션을 확인합니다.
잠시 후 자동 검사가 트리거되었는지 확인합니다. 이 검사는 끌어오기 요청 유효성 검사 워크플로를 실행합니다.
워크플로가 실행되기 시작하려면 시간이 조금 걸릴 수 있습니다. 상태 검사가 표시될 때까지 브라우저 창을 새로 고칩니다.
검사가 완료되면 검사가 실패한 것을 확인할 수 있습니다.
참고
GitHub에서는 상태 검사가 실패하더라도 끌어오기 요청을 병합할 수 있습니다. 실제 솔루션에서는 상태 검사가 성공할 때까지 끌어오기 요청이 병합되지 않도록 분기 보호 규칙을 구성해야 합니다.
끌어오기 요청 유효성 검사 오류 수정하기
상태 검사 창에서 세부 정보를 선택하여 워크플로 로그를 검사합니다.
로그에는 Bicep Linter의 다음과 같은 메시지가 포함됩니다.
Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
Visual Studio Code에서 deploy/main.bicep 파일을 엽니다.
20번 줄에
appServiceAppLinuxFrameworkVersion
이라는 변수가 있습니다. 이 변수가 사용되지 않습니다. 다음으로, 이 오류를 해결합니다.appServiceApp
리소스 정의에서 하드 코드된 값으로 설정하지 않고 이 변수를 사용하도록linuxFxVersion
속성을 업데이트합니다.resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: appServiceAppLinuxFrameworkVersion } } }
Visual Studio Code 터미널에서 변경 내용을 커밋하고 리포지토리에 푸시합니다.
git add . git commit -m "Fix Bicep file" git push origin feature/linux-app
끌어오기 요청 모니터링 및 병합
브라우저를 다시 열고 끌어오기 요청 세부 정보 페이지를 표시합니다.
끌어오기 요청 유효성 검사가 다시 실행됩니다. 상태 검사가 실행되지 않는다면 페이지를 새로 고칩니다.
검사가 완료되기를 기다립니다. 이번에는 성공합니다. Bicep 파일에 구문 또는 Linter 오류가 없으므로 끌어오기 요청을 병합할 준비가 된 것입니다.
끌어오기 요청 병합을 선택하여 끌어오기 요청을 닫고 기본 분기의 변경 내용을 병합합니다.
병합 확인을 선택합니다.