Edited at

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]をクリックします。

スクリーンショット_2019-09-04_16_33_03.jpg

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

スクリーンショット_2019-09-04_16_37_12.jpg

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

スクリーンショット_2019-09-04_17_29_19.jpg


Agentのダウンロードと設定

Agent Poolを選択 > [Agents]タブ

[New agent]をクリックします。

スクリーンショット_2019-09-04_16_38_18.jpg

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

スクリーンショット_2019-09-04_16_41_45.jpg

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

# 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の設定に成功すると、一覧に表示されます。

スクリーンショット 2019-09-04 17.02.11.png


Azupre Pipelinesで対象Agentを使う

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

スクリーンショット_2019-09-04_17_08_21.jpg


Agentの実行

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

$ ./run.sh

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

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

スクリーンショット_2019-09-04_17_05_17.jpg

この状態で対象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にすることはパイプライン構築のトライアンドエラーにうってつけです。