Azure Pipeline の承認 (approvals) 機能は、ステージ (stage) の開始前にしか使えないのと、 Apache Maven ではライフサイクル途中からの実行が原則としてできないことから、デプロイ処理だけ承認を必要とするパイプラインを構成するのがやや難しかったのですが、承認の有無でステージを分けて condition で選択する方法で実現してみました。
主要部分を抜粋すると以下のような形となります。ご参考まで。
stages:
- stage: Default
condition: >-
not(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))
jobs:
- job: Build
pool:
vmImage: ubuntu-latest
steps:
- task: Maven@3
- stage: Release
condition: >-
startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')
jobs:
- job: BuildAndDeploy
displayName: Build and deploy
pool:
vmImage: ubuntu-latest
steps:
- task: MavenAuthenticate@0
inputs:
mavenServiceConnections: ossrh
- task: Maven@3
inputs:
goals: package gpg:sign nexus-staging:deploy