やる気駆動型エンジニアの備忘録

WPF(XAML+C#)の話題を中心に.NET/Android/CI やたまに趣味に関するブログです

Azure DevOps でErgoDox EZ のキーマップをビルドする

前回、Circle CI を使ってErgoDox EZ のキーマップをビルドする方法を紹介しました。 今回は"Azure DevOps"版です。

なお、今回の記事ではAzure Pipelines を使用します。ビルド対象のリポジトリGitHub にあるものを使用します。 要はAzure DevOps にリポジトリを作成する必要はありません。

下準備

Azure DevOps も同じようにビルドの設定を行います。Azure Pipelines を使用するにはProject を作成しておく必要があります。取り敢えず適当に名前をつけてProject を作成しましょう。

私はこんな感じで"ErgoDox"としました。

f:id:iyemon018:20190124221514p:plain

Azure Pipelines でビルド

次にビルド設定を追加します。 [Pipelines] - [Builds] - [+ New] を選択してビルド定義の編集画面へ進みます。

ビルド対象のリポジトリGitHub にあるものを使用します。 "Select a source"から [GitHub] を選択してリポジトリとブランチを選択します。

f:id:iyemon018:20190124222002p:plain

[Continue]を選択するとビルド定義のテンプレート選択画面が表示されます。 今回はLinux 上でスクリプトの実行ができればいいので"Empty Job"でOKです。

なお、YAML ファイルをゴリゴリかける方はそちらでもいいと思います。私はGUIYAML 生成という手順で実行しました。

Agent pool はお好みでいいですが、今回は"Hosted Ubuntu 1604"としました。

次に以下のタスクを追加します。

  • Bash
  • Copy Files
  • Publish Build Artifacts

それぞれ次のように設定しました。

Bash

ここではスクリプトを呼び出しているだけです。前回のCircle CI でビルドしたスクリプトを実行しています。

f:id:iyemon018:20190124222619p:plain

Copy Files

スクリプトの実行後に出来上がる .hex ファイルをコピーします。これがないと成果物を保存できません! Source Folder は現在リポジトリに存在しないフォルダでもいいみたいです。Contents には成果物であるファイル名を指定してください。

f:id:iyemon018:20190124222633p:plain

Publish Build Artifacts

成果物をAzure DevOps に保存します。 Path to publish は例にある通り"$(Build.ArtifactStagingDirectory)"としました。特に変更する必要もないので。 Artifact name は成果物につける名称なので何でもいいのです。私はわかりやすさ重視で".build"としました。

f:id:iyemon018:20190124222644p:plain

トリガーを設定する

ビルド タスクの設定ができたらリポジトリへのPush を検知できるようにします。 手動で行いたい場合はこの手順は不要です。

[Trigger] - [Continuous integration] - [Enable continuous integration] のチェックをON にします。 検知対象のブランチは適宜設定してください。

成果物を保存する

あとはSave してキーマップを編集、Push するか、手動でビルドすると成果物が保存されます。 生成されたファイルはビルド結果の[Artifacts] - [<成果物の名称>]を選択します。

f:id:iyemon018:20190124224358p:plain

Artifacts explorer が表示されるのでファイルを選択して[Download]を選択してください。

f:id:iyemon018:20190124224442p:plain

Azure DevOps だとビルド タスクの作成がGUI でできるため、他のCI サービスと比べると格段に敷居が下がる印象です。(もちろんそれ以前にCI とAzure DevOps の知識は必須ですが) また、Azure DevOps では手動ビルドすることも可能です。Circle CI なんかは軽く調べただけでは手動ビルド方法がわかりませんでした… ちなみに今回作成したタスクをYAML で生成するとこんな感じになりました。

gist74e418a550fce6402027c6e8e12fe056

https://pbs.twimg.com/media/Dkt3fnqUcAAVaUN.jpg:large