다른 파이프라인에서 Azure Devops 파이프라인 트리거
Azure DevOps의 다른 파이프라인에서 파이프라인을 트리거하는 데 문제가 있습니다.CI 파이프라인이 있으며 CI가 마스터 분기를 통과할 때마다 Deploy Pipeline을 트리거하려고 합니다.이것은 기술적으로 가능한 것처럼 보이지만, 문서는 명확하지 않습니다.
다음이 표시됩니다.
# this is being defined in app-ci pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
- releases/*
- master
그러나 a) 트리거 파이프라인(CI 파이프라인)에 이 기능이 적용되는지 아니면 트리거 파이프라인(구현 파이프라인)에 적용되는지는 명확하지 않습니다.
또한 무엇이 무엇인지에 대해서도 명확하지 않습니다.pipeline
그리고.source
참조하십시오. 그리고 이 변수들을 어떻게 찾을 수 있습니까?둘 다 파이프라인 이름인가요?저는 다양한 종류의 순열을 시도해 보았지만 아무 것도 효과가 없는 것 같습니다.
편집 2
마지막으로 Microsoft는 YAML의 파이프라인 트리거와 관련된 문서를 개선했습니다!여기 링크가 있습니다.
편집
Microsoft는 제 답변을 작성한 후 기존 파이프라인을 통해 빌드 완료 트리거를 사용하여 이 문제를 해결할 수 있는 다른 솔루션을 개발했습니다.솔루션은 여기에서 확인할 수 있습니다.
트리거 파이프라인에서 아티팩트를 게시하지 않으면 트리거된 파이프라인이 트리거되지 않습니다.
또한, 이러한 유형의 트리거 사용에 매우 큰 제한이 있습니다.를 변경할 가 있습니다.defaultBranch for manual and scheduled builds
에 시대에depends
파이프라인, 작업 분기에 연결합니다.그렇지 않으면 그것은 마지막에 시작되지 않을 것입니다.source
파이프라인의 시공그래서, 당신이 연구하고 있다고 가정해 봅시다.feature
지점, 그고리.defaultBranch
으로 설정됨feature
코드를 커밋하면 모든 것이 예상대로 실행됩니다.source
파프라인시이고작되에마막, 지이막,에▁pipeline▁kicks▁the,depends
파이프라인이 트리거됩니다.좋요아때! 하지만 하당만으로 는.master
▁the▁you면▁do▁change않으를 변경하지 않으면defaultBranch
,depends
▁of▁end 끝에 않습니다.source
파이프라인변경 방법을 설명합니다.defaultBranch
대답의 끝에
파이프라인 트리거 설정 방법
저는 이것을 미니멀리즘 프로젝트에서 실행할 수 있었습니다.여기서 코드와 Azure DevOps에 대한 프로젝트를 볼 수 있습니다.제가 어떻게 했는지 안내해 드리며, 게시물에서 질문하신 내용에 대해 답변해 드리겠습니다.
트리거된 파이프라인을 다음과 같이 호출합니다.depends
및 을 파이라파이인으로 합니다.source
파이프라인
source
파이프라인, 아티팩트를 게시하는 것 외에는 아무것도 할 필요가 없습니다.의 아티팩트를 게시하지 않는 경우source
파이프라인, 작동하지 않을 것입니다.가 더미에 .source
파이프라인나는 그것이 트리거되기를 원합니다.master
브랜치, 그리고 마지막으로 아티팩트를 확실히 게시하고 싶습니다.
trigger:
branches:
include: # branch names which will trigger a build
- master
pr: none
steps:
# required to cause pipeline triggering downstream
- task: CopyFiles@2
inputs:
contents: $(System.DefaultWorkingDirectory)/**/*.yml
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)
artifactName: dummy-$(Build.BuildId)
depends
파이프라인(아래에 표시된 코드), 사용하지 않도록 설정해야 합니다.CI
그리고.PR
이때 이 은 "", "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""CI
트리거, 그리고 실행이 끝날 때까지.source
은 제두 첫 됩니다.이 작업은 제 코드의 첫 두 줄에 의해 수행됩니다. 저는 그럼그파이의라는 .source
은 (이것이바로바)입니다.source
에서 YAML에 포함된 YAML에 포함됩니다.Pipelining
(project
이YAML 속성)를 .depends
시 ) 업데트시파라인프이이master
분점.
trigger: none
pr: none
resources:
pipelines:
- pipeline: source
project: Pipelining
source: source
trigger:
branches:
include:
- master
steps:
- checkout: none
- script: echo 'triggered depends'
그게 말이 되는 건가요?이 Azure DevOps와 합니다.property
YAML에서.depends
파이프라인 코드.나에게는 그것이Pipelining
만아라니뿐라.source
YAML , 다시 YAML에서.depends
파이프라인 코드.
변할내용을 합니다.default
를 defaultBranch
위서언문이때제에, 파을편합야니다집해인경우라프문이당신한급은에이▁because▁((,depends
위에 세 에서 파프라인이오, 그다쪽상단모선서리점택의다세니표됩시개에른런음▁on▁pipeline),다를 선택합니다.Triggers
다음 다을선니다합택음▁the를 선택합니다.YAML
탭을 누르면 아래 이미지에 표시된 화면으로 이동하여 작업 분기를 설정할 수 있습니다.
위의 yaml 파이프라인 트리거는 트리거된 파이프라인(파이프라인 배포)에 정의되어야 합니다.
- pipeline: string
여기에 있는 문자열은 이 파이프라인 리소스에 지정한 식별자입니다.어떤 문자열이든 가능합니다.
source: string
여기서 문자열은 트리거 파이프라인의 정의 이름(CI 파이프라인의 이름)입니다.
아래 yaml은 문서 파이프라인 리소스에서 가져온 것입니다.
resources:
pipelines:
- pipeline: string # identifier for the pipeline resource
project: string # project for the build pipeline; optional input for current project
source: string # source pipeline definition name
branch: string # branch to pick the artifact, optional; defaults to all branches
version: string # pipeline run number to pick artifact, optional; defaults to last successfully completed run
trigger: # optional; triggers are not enabled by default.
branches:
include: [string] # branches to consider the trigger events, optional; defaults to all branches.
exclude: [string] # branches to discard the trigger events, optional; defaults to none.
옵션: UI 페이지에서 파이프라인 트리거를 설정할 수도 있습니다.트리거된 yaml 파이프라인(파이프라인 배포)의 편집 페이지로 이동하여 점 3개를 클릭하고 트리거를 선택합니다.
트리거--> 빌드 완료로 이동하고 추가를 클릭합니다.--> 트리거링 파이프라인(CI 파이프라인)을 선택
업데이트:
zure-deploy.yml의 파이프라인 리소스는 아래와 같이 정의되어 있습니다.
resources:
pipelines:
- pipeline: 'Deploy to Development'
source: 'DFE-Digital.dfe-teachers-payment-service'
trigger:
branches:
include:
- "master"
- "release-stuff"
트리거 요소의 들여쓰기를 소스 요소와 동일하게 변경해 보십시오.아래 예를 확인하십시오.
resources:
pipelines:
- pipeline: 'Deploy to Development'
source: 'DFE-Digital.dfe-teachers-payment-service'
trigger:
branches:
include:
- "master"
- "release-stuff"
다음을 찾았습니다.
소스 파이프라인에서 아티팩트를 생성할 필요가 없었습니다.
In depends pipeline 소스 브랜치를 커밋한 후 빌드하려면 다음 작업을 수행할 수 있습니다.
trigger: none
pr: none
resources:
pipelines:
- pipeline: 'depends'
source: 'common-gulp-trigger'
trigger: true
당신은 마스터 브랜치에서 일하고 있지 않은 것으로 추정됩니다, 그렇죠?이전에도 같은 문제가 있었습니다.하지만 MS 문서의 트리거에 대한 기본 분기 섹션을 읽은 후.왜 그런지 이해합니다.트리거는 기본적으로 마스터 분기의 yaml 파일만 검사합니다.즉, 마스터 분기의 yaml 파일에 있는 트리거 정의에 의해서만 파이프라인이 트리거됩니다.
따라서 마스터가 아닌 다른 분기의 yaml 파일 트리거 섹션에 추가하는 분기는 모두 활성화되지 않습니다.마스터가 아닌 현재 분기의 yaml 파일을 보려면 파이프라인을 변경해야 합니다.문서의 지시에 따라 기본 트리거 분기를 변경합니다.당신은 그것을 작동시킬 것입니다.
작업을 마스터로 병합한 후에는 기본 트리거 분기를 마스터로 다시 변경해야 합니다.
언급URL : https://stackoverflow.com/questions/60643528/triggering-an-azure-devops-pipeline-from-another-pipeline
'code' 카테고리의 다른 글
git + LaTeX 워크플로우 (0) | 2023.05.23 |
---|---|
Linq에서 캐스트() 및 Oftype()을 사용하는 경우 (0) | 2023.05.23 |
"npm install"을 실행하면 "ERR! code EINTENTITY"(npm 5.3.0)로 반환됩니다. (0) | 2023.05.23 |
Express에 등록된 모든 경로를 가져오는 방법은 무엇입니까? (0) | 2023.05.23 |
모범 사례? - 핵심 데이터 엔티티 속성으로서의 어레이/사전 (0) | 2023.05.23 |