스크립트에서 Git 명령 실행
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
일부 워크플로의 경우 Git 명령을 실행하려면 빌드 파이프라인이 필요합니다. 예를 들어 기능 분기에서 CI 빌드가 완료되면 팀은 분기를 기본 병합하려고 할 수 있습니다.
Git은 Microsoft 호스팅 에이전트 및 온-프레미스 에이전트에서 사용할 수 있습니다.
스크립트를 사용하여 Git 명령 실행
비고
시작하기 전에 계정의 기본 ID가 다음 코드로 설정되어 있는지 확인합니다. 이 작업은 코드를 체크 아웃한 후 첫 번째 단계로 수행해야 합니다.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
빌드 서비스에 버전 제어 권한 부여
조직 설정>일반>프로젝트조직의 프로젝트 설정 페이지로 이동합니다.
편집할 프로젝트를 선택합니다.
프로젝트 설정내에서 리포지토리선택합니다. Git 명령을 실행할 리포지토리를 선택합니다.
보안 선택하여 리포지토리 보안을 편집합니다.
Project Collection Build Service검색하세요. {{프로젝트 이름}} 빌드 서비스({조직}) (프로젝트 컬렉션 빌드 서비스 계정({조직}) 그룹이 아닌 ID 선택합니다. 기본적으로 이 ID는 리포지토리에서 읽을 수 있지만 변경 내용을 다시 푸시할 수는 없습니다. 실행하려는 Git 명령에 필요한 권한을 부여합니다. 일반적으로 다음을 부여하려고 합니다.
- 분기 만들기: 허용
- 기여: 허용
- 읽기: 허용
- 태그 만들기: 허용
스크립트가 시스템 토큰에 액세스하도록 허용
로컬 리포지토리를 정리해야 합니다.
로컬 리포지토리에 대한 특정 종류의 변경 내용은 빌드 파이프라인에 의해 자동으로 정리되지 않습니다. 따라서 다음을 수행해야 합니다.
- 만든 로컬 분기를 삭제합니다.
- git 구성 변경 내용을 실행 취소합니다.
온-프레미스 에이전트를 사용하는 데 문제가 발생하면 리포지토리가 깨끗한지 확인합니다.
예시
리포지토리의 파일 나열
빌드 탭다음 작업을 추가합니다.
과업 | 주장들 |
---|---|
![]() 유틸리티: 명령줄 Git 리포지토리에 파일을 나열합니다. |
도구: git 인수: ls-files |
기능 브랜치를 메인에 병합
빌드가 성공하면 CI 빌드가 주 빌드에 병합되도록 합니다.
트리거 탭에서 연속 통합 (CI)를 선택하고, 빌드하려는 브랜치를 포함합니다.
리포지토리의 루트에 merge.bat
만듭니다.
@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
ECHO Building main branch so no merge is needed.
EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status
빌드 탭에서 이 작업을 마지막 작업으로 추가할 있습니다.
과업 | 주장들 |
---|---|
![]() 유틸리티: 일괄 처리 스크립트 merge.bat실행합니다. |
경로: merge.bat |
자주 묻는 질문(FAQ)
원격 리포지토리가 GitHub 또는 Bitbucket Cloud와 같은 다른 Git 서비스에 있는 경우 Git 명령을 실행할 수 있나요?
예
Git 명령을 실행하는 데 사용할 수 있는 작업은 무엇입니까?
스크립트가 푸시할 때 CI 빌드를 트리거하지 않도록 하려면 어떻게 해야 하나요?
커밋 메시지 또는 설명에 [skip ci]
추가합니다. 예제는 다음과 같습니다.
git commit -m "This is a commit message [skip ci]"
git merge origin/features/hello-world -m "Merge to main [skip ci]"
Azure Repos Git, Bitbucket Cloud, GitHub 및 GitHub Enterprise Server에 대한 커밋에 이러한 변형을 사용할 수도 있습니다.
-
[skip ci]
또는[ci skip]
-
skip-checks: true
또는skip-checks:true
-
[skip azurepipelines]
또는[azurepipelines skip]
-
[skip azpipelines]
또는[azpipelines skip]
-
[skip azp]
또는[azp skip]
***NO_CI***
에이전트가 필요한가요?
빌드 또는 릴리스를 실행하려면 하나 이상의 에이전트 필요합니다.
문제가 있습니다. 문제를 해결하려면 어떻게 해야 하나요?
기본 에이전트 풀을 선택할 수 없으며 빌드 또는 릴리스를 큐에 대기할 수 없습니다. 이 문제를 해결하려면 어떻게 해야 합니까?
에이전트 풀을 참조하세요.
"오류: 로컬 발급자 인증서를 가져올 수 없습니다."라는 오류로 NuGet 푸시 작업이 실패합니다. 이 문제를 해결하려면 어떻게 해야 하나요?
이 문제는 신뢰할 수 있는 루트 인증서를 추가하여 해결할 수 있습니다. 빌드 에이전트에 NODE_EXTRA_CA_CERTS=file
환경 변수를 추가하거나 파이프라인에 NODE.EXTRA.CA.CERTS=file
작업 변수를 추가할 수 있습니다. 이 변수에 대한 자세한 내용은 Node.js 설명서 참조하세요. 파이프라인에서 변수를 설정하는 방법에 대한 지침은 파이프라인 변수 설정을 참조하세요.
온-프레미스에서 TFS를 사용하며 이러한 기능 중 일부가 표시되지 않습니다. 왜 안 돼요?
이러한 기능 중 일부는 Azure Pipelines만 사용할 수 있으며 온-프레미스에서는 아직 사용할 수 없습니다. 최신 버전의 TFS으로