Azure DevOps에서 슬래시가 있는 지점 이름을 얻는 방법
Azure Devops는 현재 git 브랜치 이름에 대한 정보를 포함하는 두 가지 변수를 제공합니다.$(Build.SourceBranchName)
그리고.$(Build.SourceBranch)
.
하는 동안에SourceBranch
에는 브런치에 대한 완전한 참조가 포함되어 있습니다.SourceBranchName
에는 짧은 브랜치 이름만 포함됩니다.
안타깝게도 브랜치 이름에 슬래시가 포함되어 있는 경우 이 동작은 약간 예기치 않습니다./
):
+---------------------------------------------------------------------------------------------------------+
| Situation | Git branch name | Build.SourceBranch | Build.SourceBranchName |
|---------------------------------------------------------------------------------------------------------|
| branch name contains no slash | mybranch | refs/heads/mybranch | mybranch |
| branch name contains slash | release/mybranch | refs/heads/release/mybranch | mybranch |
+---------------------------------------------------------------------------------------------------------+
슬래시 앞의 분기 이름 부분은 분기 이름의 일부로 간주되지 않습니다.동료는 이것이 Azure Devops의 기록된 동작이라고 지적했습니다.
Git repo 분기 또는 풀 요청:참조의 마지막 경로 세그먼트.예를 들어, refs/heads/master에서 이 값은 master입니다.refs/heads/feature/tools에서 이 값은 도구입니다.
이 동작이 특별히 도움이 될지 잘 모르겠습니다.브런치를 체크 아웃 하고 싶은데, 슬래시를 포함할 브랜치명이 필요합니다.또한 슬래시 앞의 부분이 제거되면 이름이 모호할 수 있으므로 실제 경로에 대한 혼란이 발생할 수 있습니다.
슬래시를 포함한 지점 이름이 필요합니다.쉽게 구할 수 있는 방법이 없을까요?안전을 위해 항상 전체 심판과 함께 일해야 합니까?
나는 항상 사용한다Build.SourceBranch
내 대본에서.새 변수에 할당하고 제거만 하면 됩니다.refs/heads/
처음부터요.CI 및 PR에만 사용합니다.
- CI를 위해서요.
Build.SourceBranch
없는 변수refs/heads
PowerShell을 사용하고 있습니다.
$branchSource = "$(빌드).소스 브랜치)"
$branchSourcePath = $branchSource - 대체 "refs/heads/", "
- PR용.사용하고 있다
System.PullRequest.SourceBranch
없는 변수refs/heads
왜냐면Build.SourceBranch
에 리모트 PR에 대한 경로를 나타냅니다.첫 번째 옵션에서 올바른 변수를 사용하는 것과 같습니다.
$branchSource = "$(시스템).PullRequest(PullRequest(풀 요구)소스 브랜치)"
$branchSourcePath = $branchSource - 대체 "refs/heads/", "
이 형제를 써라
variables:
BRANCH_NAME: $[replace(variables['Build.SourceBranch'], 'refs/heads/', '')]
이렇게 사용(편집 오타)
$(BRANCH_NAME)
PR을 기반으로 구축하면System.PullRequest.SourceBranch
그리고.System.PullRequest.TargetBranch
변수입니다.
System.PullRequest.타깃 브랜치
풀 요청의 대상이 되는 브랜치.예를 들어 다음과 같습니다.
refs/heads/master
이 변수는 분기 정책의 영향을 받는 Git PR 때문에 빌드가 실행된 경우에만 초기화됩니다.
또한 전체 경로 또는 짧은 경로를 사용할 경우 필요에 따라 자체 변수를 정의할 수도 있습니다.
변수에 더 짧은 분기 이름을 할당하는 bash 스크립트를 생성하기만 하면 됩니다.
# Bash script
BRANCH_NAME=$(echo "$(System.PullRequest.TargetBranch)" | awk -F/ '{print $NF}')
echo "##vso[task.setvariable variable=PullRequest_Target_Branch;]$BRANCH_NAME"
그런 다음 나중에 파이프라인에서 $(PullRequest_Target_Branch)를 참조할 수 있습니다.
아직 이에 대한 적절한 해결책이 없다니 말도 안 된다.
여기 우리가 가진 것이 있습니다. 제가 검색한 몇 가지를 조합한 결과입니다.이것은 지점 및 홍보용입니다.
variables:
${{ if startsWith(variables['Build.SourceBranch'], 'refs/heads/') }}:
BRANCH_NAME: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ]
DOCKER_IMAGE_TAG: $[ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), '/', '_') ]
${{ if startsWith(variables['Build.SourceBranch'], 'refs/pull/') }}:
BRANCH_NAME: $[ replace(variables['System.PullRequest.SourceBranch'], 'refs/heads/', '') ]
DOCKER_IMAGE_TAG: $[ replace(replace(variables['System.PullRequest.SourceBranch'], 'refs/heads/', ''), '/', '_') ]
BRANCH_NAME
슬래시가 포함됩니다. ★★★★★★★★★★★★★★★★★.refs/heads/mybranch
되다mybranch
refs/heads/feature/mybranch
되다feature/mybranch
.
DOCKER_IMAGE_TAG
「이것」, 「이것」을 가 있습니다./
_
의 경우 " " "
아래의 azure-pipelines.yml에서 사용할 수 있습니다.
branch=$(Build.SourceBranch)
export branch=$(echo "${branch}" | sed 's/refs\/heads\///g')
언급URL : https://stackoverflow.com/questions/59956206/how-to-get-a-branch-name-with-a-slash-in-azure-devops
'programing' 카테고리의 다른 글
두 SELECT 문 결과 결합 (0) | 2023.04.22 |
---|---|
문자열에 다른 문자열이 포함되어 있는지 확인합니다. (0) | 2023.04.22 |
"NODE_ENV"는 내부 또는 외부 명령어, 작동 가능한 명령어 또는 배치 파일로 인식되지 않습니다. (0) | 2023.04.22 |
SQL에서 union과 함께 주문하려면 어떻게 해야 합니까? (0) | 2023.04.22 |
GCC에서 "문자열 상수에서 "char*"로 사용되지 않는 변환" 경고를 제거하는 방법 (0) | 2023.04.22 |