Azure Pipelinesとの連携によるCI/CD自動化(2)
デプロイの定義
最後にDeployステージの内容を追記します。
# (9)NuGetパッケージのAzure Artifactsへの公開
- stage: Deploy
displayName: 'Azure Artifacts公開段階'
dependsOn: Package
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: PublishToArtifacts
displayName: 'Azure Artifactsへの公開'
environment: 'Production'
strategy:
runOnce:
deploy:
steps:
# ⑩Azure Artifacts自動認証
- task: NuGetAuthenticate@1
displayName: 'Azure Artifacts認証'
# パッケージ公開
- task: DotNetCoreCLI@2
displayName: 'Azure Artifactsへ公開'
inputs:
command: 'push'
packagesToPush: '$(Pipeline.Workspace)/**/*.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: '$(System.TeamProject)/WingsLibraries'
DeployステージではPackageステージで作成したNuGetパッケージをAzure Artifactsに公開します。
(9)NuGetパッケージのAzure Artifactsへの公開
deploymentジョブタイプを使用してNuGetパッケージを公開することにより、デプロイ履歴が自動記録されるので、いつ、誰が、どのバージョンを公開したのかを追跡できるようになります。environmentを指定することにより、どの環境向けのデプロイであるのかも記録できます。
またデプロイにrunOnce戦略を用いることで、以降に記述したデプロイ処理は一度だけ実行されることが保証されるので、Azure Artifactsへの公開が誤って繰り返し行われてしまうなどのトラブルを防げます。
(10)Azure Artifacts自動認証
NuGetAuthenticate@1タスクにより、Azure DevOpsのサービスコネクションを使用した自動認証が行われます。
これにより、前回ローカル環境からAzure Artifactsにパッケージを公開する際に作成したPersonal Access Token(サービスとの認証を行うためのトークン)の手動管理が不要になり、セキュリティが向上します。
パイプラインのプッシュとAzure DevOps上での動作
azure-pipelines.ymlファイルを作成したら、リポジトリにコミット・プッシュして、Azure DevOps上でパイプラインを設定・実行します。
(1)YAMLファイルのコミット・プッシュ
Visual Studio Codeのターミナルで以下のコマンドを実行し、YAMLファイルをリポジトリにプッシュします。
bash # YAMLファイルをGitに追加 git add azure-pipelines.yml git commit -m "Add CI/CD pipeline configuration for Azure Artifacts integration" git push origin main
プッシュまで成功したことを確認したら、次のステップに進みます。
(2)Azure DevOpsでのパイプライン作成と実行
Azure DevOpsプロジェクトの左側メニューから「Pipelines」を選択し、画面右上の「New Pipeline」ボタンをクリックします。
ソースコードの場所として「Azure Repos Git」を選択し、Wings.MathLibraryリポジトリを選択します。
先ほど作成したazure-pipelines.ymlファイルの内容が表示されるので、設定内容を確認し、「Run」ボタンでパイプラインを実行します。
パイプラインが実行されると、各ステージの進行状況をリアルタイムで確認できる画面に遷移します。次のステップでもこの画面での操作が必要となるので、そのまま表示しておきます。
(3)実行結果の確認
今回のパイプラインでは初回実行時にAzure Artifactsへのアクセス権限の承認が必要な場合があります。以下のように「Permission needed」というメッセージが表示されたら、「View」ボタンを選択して承認を行います。
次に表示された画面で「Permit」ボタンを選択することでパイプラインに対し、Azure Artifactsへのアクセス権限が付与されます。
権限の付与が完了すると、止まっていたパイプラインのステップが再開します。しばらく待つとパイプラインが終了します。
パイプラインが終了し、成功した場合は上図の表示になります。各ステップを選択することで詳細な実行時のログを確認できるので、パイプラインの失敗時などはログを確認して原因を特定できます。
(4)Azure Artifactsでの公開確認
パイプラインの実行が成功すると、Azure Artifactsにパッケージが公開されます。「Artifacts」メニューから該当フィードを開き、新しいパッケージバージョンを確認します。
まとめ
今回はAzure DevOps上でのパイプライン実行により、ライブラリのコードコミットから品質チェック、パッケージ公開まで完全に自動化されたワークフローを実現しました。次回以降は、このパイプラインを改良して別の検証機能を追加したり、Azure Boardsと連携したりする方法について紹介する予定です。
