스크립트에서 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. 조직 설정>General Projects에서 조직의 프로젝트 설정 페이지로>이동합니다.

    조직 설정을 선택합니다.

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

    프로젝트를 선택합니다.

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

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

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

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

    • 분기 만들기: 허용
    • 참가: 허용
    • 읽기: 허용
    • 태그 만들기: 허용

버전 제어판 탭으로 이동

  • Azure Repos: https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol

  • 온-프레미스: https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol

프로젝트 관리

이 페이지가 표시되면 리포지토리를 선택한 다음 링크를 선택합니다.

컨트롤 패널 위쪽에서 프로젝트로

제어판 프로젝트 버전 제어 탭

버전 제어 탭에서 Git 명령을 실행할 리포지토리를 선택한 다음 프로젝트 컬렉션 빌드 서비스를 선택합니다. 기본적으로 이 ID는 리포지토리에서 읽을 수 있지만 변경 내용을 다시 푸시할 수는 없습니다.

permissions

실행하려는 Git 명령에 필요한 권한을 부여합니다. 일반적으로 다음을 부여하려고 합니다.

  • 분기 만들기: 허용
  • 참가: 허용
  • 읽기: 허용
  • 태그 만들기: 허용

사용 권한 부여가 완료되면 변경 내용 저장을 선택해야 합니다.

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

checkout 로 설정된 섹션 persistCredentials 을 추가합니다true.

steps:
- checkout: self
  persistCredentials: true

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

로컬 리포지토리를 클린 확인합니다.

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

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

온-프레미스 에이전트를 사용하는 데 문제가 발생하면 리포지토리가 클린.

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

steps:
- checkout: self
  clean: true
  • 리포지토리 탭에서 정리를 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

빌드 탭에서 이 작업을 마지막 작업으로 추가합니다.

작업 인수

유틸리티: Batch 스크립트
merge.bat 실행합니다.
경로: merge.bat

FAQ

원격 리포지토리가 GitHub 또는 Bitbucket Cloud와 같은 다른 Git 서비스에 있는 경우 Git 명령을 실행할 수 있나요?

Git 명령을 실행하는 데 사용할 수 있는 작업은 무엇입니까?

Batch 스크립트

명령줄

PowerShell

셸 스크립트

스크립트가 푸시할 때 CI 빌드를 트리거하지 어떻게 할까요??

커밋 메시지 추가 ***NO_CI*** 합니다. 예제는 다음과 같습니다.

  • git commit -m "This is a commit message ***NO_CI***"
  • git merge origin/features/hello-world -m "Merge to main ***NO_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로 업그레이드한 경우 일부 기능을 온-프레미스에서 사용할 수 있습니다.