以下の記事の続きで、今回はAzurePipelinesを使ってみます。
https://qiita.com/kasa_le/items/b152f91a61315a2b12b2
Azure Pipelines
言わずとしれた、MicrosoftのクラウドサービスAzureの中の、Azure DevOpsに含まれるCIになります。
https://azure.microsoft.com/ja-jp/services/devops/
特徴
Azure Repos(AzureのGitリポジトリサービス)だけでなく、Githubや汎用Gitとも接続できます(※)。
当然、.NETやC#のプロジェクトのビルド環境が充実していて、Windows開発者は、実質AppVeyorかこちらかの二者択一でしょうね。もっとも、少し前まではAppVeyorしかなかったので、選択肢ができたことは良いことではないでしょうか。
Visual StudioやVisual Studio Codeとの連携やExtensionが充実しているのも流石です。
※ただし、SSH公開鍵方式での接続には非対応で、かつ、汎用Gitの場合は、Classic Editorというものでしか設定が出来ません。
料金
Azure Pipelinesのみの場合、5ユーザーまで、月1,800分まで1並列ジョブが無料で使えます。セルフホステッドの場合は、毎月の利用制限はありません(1並列ジョブ)。
成果物をアップロードするのはAzure Artifactsというのを使い、こちらは2GBまでは無料で使えます。
詳しくはこちらで。
https://azure.microsoft.com/ja-jp/pricing/details/devops/azure-devops-services/
実績
まあ、なんといっても、Microsoftですから(汗)
どうてもいいですけどEラーニングコースが、物語形式でとても読むのに疲れます(苦笑)
英語しか用意されてないのですが、かといってあれが日本語になっていても変なので、あえて訳を用意していないのかも^^;
設定
Classic Editorという物を使う方法と、yml
ファイルを書く方法と2種類あります。
基本的なMavenビルド、テストなら、テンプレートでMavenを選んだそのままでいけます。
以下は、YAMLモードでのテンプレート初期設定のままです。JerseySampleはこの設定のままで行けました。
# Maven
# Build your Java project and run tests with Apache Maven.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/java
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
テスト結果はパイプラインのページで確認できます。
jdkVersionOption
の指定で、Version11が、1.11
と指定しなければならないのが気持ち悪いですね(汗)
Github同様、OpenJDKはAzul Zuluが使われます。(Azul Zuluは基本的に有償ですが、Azure Pipelinesでの使用は無償となっています。あれ?Github Actionsは??)
https://github.com/actions/virtual-environments/blob/master/images/linux/Ubuntu1804-README.md
諸事情により、AdoptOpenJDKでもビルドできる必要があるので入れられるか調べたのですが、便利なExtensionを公開してくださっている方がいました。
https://marketplace.visualstudio.com/items?itemName=hanabi1224.adopt-openjdk-installer
こちらは、Classic Editorから使えます。
Classic Editorは、Pipelineを作るときに、YAMLではなくて[Classic Editor]という小さなリンクが最初のページに有るので、それをクリックすると使えます。
また、Classic Editorで作ったうえで、そのyml
を参考にすることも出来ます。
ただ、Classic Editorは非推奨になっているので、いつメニューから消えてもおかしくはありません。
感想
操作は割としやすいですが、メニュー構成はちょっと慣れが必要です。
英語のラーニングパスや下記の記事のチュートリアルを多少でもやっておかないと、どこに何があるか分かりづらいかもしれません。
https://docs.microsoft.com/ja-jp/azure/devops/pipelines/create-first-pipeline?view=azure-devops&tabs=java%2Cyaml%2Cbrowser%2Ctfs-2018-2
個人的には、一番テスト結果が見やすいかなあと感じました。また、手動で実行するのもわかりやすくボタンがあるので良いですね。
Slackとの統合も簡単そうなのも良いです。
個人や小規模チームは無料枠でいけますし、サブスクリプションをすでに持っているような場合も使いやすいんじゃないでしょうか。
ちなみに、最初の設定からビルド、テスト実行され、テスト結果を見られる状態にするまでは、他のCIサービスと比べて、Azure Pipelinesが一番早かったです。
追記
CI回したら、GithubにPRが作成されてCheckページにも表示が追加されていました。
これは便利なようですが、毎回PR作成も嫌なので、ちょっと調査が必要ですね・・・