Azure Pipelinesでローカル環境をAgentにする方法(Mac)


はじめに

Azure Pipelinesでローカル環境をAgentにする方法を紹介します。

環境

  • OS:macOS

ローカル環境をAgentにすることのメリデメ

メリット

ワークフォルダがローカルに残る
これはかなり大きなメリットです。
パイプラインの実行中に生成されたファイルを全て確認できるので、失敗時の調査がしやすいです。

Xcodeプロジェクトの場合、Carthageでビルドしたライブラリなども残るので、 2回目以降のビルド時間を大幅に短縮できます

デメリット

個人の環境に依存する
他のローカルCI/CD環境と同様のデメリットです。
個人の環境に依存してしまうため、本番で運用するにはCI/CD用のマシンを用意すべきです。

ローカル環境のCPUやメモリを圧迫する
当たり前ですがCPUやメモリを圧迫します。
そのため、開発用のマシンを本番用のAgentにするのは避けるべきです。

Agentのセットアップ

Agent Poolの作成(任意)

まずAgent Poolを作成します。
「Default」のAgent PoolにAgentを作成することもできるので、作成は任意です。
しかし、複数チームで使う場合はどのチームが何の目的で作成したAgentかわからなくなるため、作成すべきです。

1つのAgent Poolに複数のAgentがあるとランダムに使われるようなので、そういった意味でも作成すべきです。

Azure DevOps > Project Settings > Pipelines > Agent pools
[Add pool]をクリックします。

適当な名前を入力し、[Create]をクリックします。

これでAgent Poolの作成は完了です。

Agentのダウンロードと設定

Agent Poolを選択 > [Agents]タブ
[New agent]をクリックします。

[macOS]タブが選択されていることを確認し、[Download]をクリックします。

ローカル環境のターミナルで以下のコマンドを実行します。

# Agent用の適当なフォルダを作成して移動する
$ mkdir myagent && cd myagent

# ダウンロードしたAgentを解凍する
# 自動で解凍されてゴミ箱に移動されていることもある
$ tar zxvf ~/Downloads/vsts-agent-osx-x64-2.155.1.tar.gz

# Agentを設定する
$ ./config.sh

ライセンス契約の同意
→y

サーバーURL
https://dev.azure.com/{your-organization}
参考:https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-osx?view=azure-devops#server-url

認証の種類
→PAT

個人用アクセストークン(Personal Access Token, PAT)
→以下を参考にPATを生成
参考:https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-osx?view=azure-devops#permissions

エージェントプール
→任意のエージェントプール

エージェント名
→任意

作業フォルダー
→そのままEnter( _work フォルダ)

Agentの設定に成功すると、一覧に表示されます。

Azupre Pipelinesで対象Agentを使う

Azure Pipelines側で、[Agent pool]に対象Agentが含まれているAgent Poolを指定します。

Agentの実行

ローカル環境のターミナルで以下のコマンドを実行します。

$ ./run.sh
ツール機能をスキャンしています。
サーバーに接続しています。
2019-09-04 08:03:20Z: ジョブをリッスンしています

一覧のステータスが「Online」になっていればAgentの起動に成功しています。

この状態で対象Agent poolを指定したAzure Pipelinesを実行すると、ローカル環境のAgentが使われます。

2019-09-04 08:18:34Z: 実行中のジョブ: Xcode xcode102
Password:2019-09-04 08:21:19Z: ジョブ Xcode xcode102 が完了しました。結果: Canceled
2019-09-04 08:22:03Z: 実行中のジョブ: Xcode xcode102
2019-09-04 08:28:19Z: ジョブ Xcode xcode102 が完了しました。結果: Failed
2019-09-04 08:32:02Z: 実行中のジョブ: Xcode xcode102

おわりに

これでローカル環境をAzure PipelinesのAgentにすることができました!

ローカル環境をAgentにすることはパイプライン構築のトライアンドエラーにうってつけです。