다음을 통해 공유


스크립트에서 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"

빌드 서비스에 버전 제어 권한 부여

  1. 조직 설정>일반>프로젝트조직의 프로젝트 설정 페이지로 이동합니다.

    조직 설정을 선택합니다.

  2. 편집할 프로젝트를 선택합니다.

    프로젝트를 선택합니다.

  3. 프로젝트 설정내에서 리포지토리선택합니다. Git 명령을 실행할 리포지토리를 선택합니다.

  4. 보안 선택하여 리포지토리 보안을 편집합니다.

    보안을 선택하여 리포지토리 보안을 편집합니다.

  5. Project Collection Build Service검색하세요. {{프로젝트 이름}} 빌드 서비스({조직}) (프로젝트 컬렉션 빌드 서비스 계정({조직}) 그룹이 아닌 ID 선택합니다. 기본적으로 이 ID는 리포지토리에서 읽을 수 있지만 변경 내용을 다시 푸시할 수는 없습니다. 실행하려는 Git 명령에 필요한 권한을 부여합니다. 일반적으로 다음을 부여하려고 합니다.

    • 분기 만들기: 허용
    • 기여: 허용
    • 읽기: 허용
    • 태그 만들기: 허용

스크립트가 시스템 토큰에 액세스하도록 허용

persistCredentialstrue로 설정하고 checkout 섹션을 추가합니다.

steps:
- checkout: self
  persistCredentials: true

에 대해 checkout자세히 알아보세요.

로컬 리포지토리를 정리해야 합니다.

로컬 리포지토리에 대한 특정 종류의 변경 내용은 빌드 파이프라인에 의해 자동으로 정리되지 않습니다. 따라서 다음을 수행해야 합니다.

  • 만든 로컬 분기를 삭제합니다.
  • git 구성 변경 내용을 실행 취소합니다.

온-프레미스 에이전트를 사용하는 데 문제가 발생하면 리포지토리가 깨끗한지 확인합니다.

checkoutcleantrue로 설정되어 있는지 확인합니다.

steps:
- checkout: self
  clean: true
  • 리포지토리 탭에서 클린 상태로 설정하십시오.

  • 변수 탭에서 Build.Clean 변수를 만들거나 수정한 다음, source로 설정하십시오.

예시

리포지토리의 파일 나열

빌드 탭다음 작업을 추가합니다.

과업 주장들

유틸리티: 명령줄
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 명령을 실행하는 데 사용할 수 있는 작업은 무엇입니까?

Batch 스크립트

명령줄

PowerShell

셸 스크립트

스크립트가 푸시할 때 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으로 업그레이드한 경우, 일부 기능을 온프레미스에서 사용할 수 있습니다.