0

質問: 次のコンテキストのために YAML パイプラインで CI/CD をどのようにセットアップしますか。

  • 主人
  • release/{英字名} ex. release/Albert 次のリリースは release/Bertrand などです。

環境

  • accept: マスターにプッシュされたものすべて
  • テスト: 最新リリース ex. リリース/ベルトラン
  • サンドボックス: 最新リリース -1 (ここでホットフィックスをテストできます) ex. リリース/アルバート
  • ライブ: 最新リリース -1 (ホットフィックスあり)

最も近い解

build: プロジェクト成果物 build.yml を作成します

trigger:
- master
- release/*

pool:
  vmImage: 'ubuntu-latest'

steps:

- powershell: |
    New-Item -Path . -Name "testfile1.txt" -ItemType "file" -Value "This is a text string."

- publish: $(Pipeline.workspace)
  artifact: testArtifact

release-phase1: master ブランチをデプロイして release-phase1.yml を受け入れる

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - master

pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

release-phase2: リリース ブランチをデプロイして release-phase2.yml をテストします

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - release/current

pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

release-phase3: release-1 ブランチをサンドボックスにデプロイし、手動承認後に release-phase3.yml をライブにデプロイします

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - release/previous


pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

このソリューションが私たちのニーズを満たさない理由:

  • リリース ブランチの名前は静的ではありません。
  • 最初にこのブランチでビルドを実行せずに release-phase3.yml パイプラインを実行できるはずです。そのブランチの最新ビルドからアーティファクトをダウンロードする必要があります。そうではありません。

目的の不足

4

1 に答える 1

0

複数のブランチ (マスター ブランチとリリース ブランチ) があるため、異なるブランチが構築され、異なる環境にデプロイされます。そのため、各ブランチで CI ビルド yaml パイプラインを作成し、CD 展開 yaml パイプラインをマスター ブランチのテンプレート yamlに入れることができます (このブランチでコードをビルドするには、各ブランチでビルド yaml ファイルを作成する必要があります。このスレッドを確認できます)。

以下は簡単な例です。

マスターブランチで

azure-pipelines.yml と template-deploy.yml があります。azure-pipelines.yml では、Environment値がパラメーターとして template-deploy.yml に渡されます。ビルドが対応する環境にデプロイされるようにします。

azure-pipelines.yml:

trigger: 
- master
- release/*

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: deploy
      type: git
      name: {project name}

jobs: 
- job: Build
  steps: 
  - script:  echo "start build job"

- template: template-deploy.yml@deploy
  parameters: 
    envir: "prod"

テンプレート-deploy.yml:

parameters:
  envir: ""

jobs:
- deployment: DeployWeb
  environment: '${{parameters.envir}}'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

リリースブランチで

以下の例のように、個々の ci build yaml を定義できます。

release-phase2 ブランチの azure-pipelines.yml:

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: deploy
      type: git
      name: {project name}

jobs: 
- job: Build
  steps: 
  - script:  echo "start build job"

- template: template-deploy.yml@deploy
  parameters: 
    envir: "test"
于 2020-02-10T02:21:41.463 に答える