Azure Pipelines Tips 8 選

本記事は [Azure DevOps | Advent Calendar 2021](https://qiita.com/advent-calendar/2021/azuredevops)  4 日目の記事です。
Pipelines 観点から見て、よくありそうで使えそうなものを集めました。

## Microsoft-hosted agents で IP フィルターがかかっているネットワークや、社内ネットワークにアクセスしたい

weekly JSON file を許可する必要があります。
[Microsoft-hosted agents for Azure Pipelines - Azure Pipelines | Microsoft Docs](https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#networking)

週次チェックの管理コストが嫌な場合は Self-hosted agents または Scale set agents を使ったほうが安心です。

また、厳格なセキュリティが必要なければ一時的に IP フィルタを解除するというタスクを Pipeline に組み込んでもよいです。
[管理対象サーバーに SSH の IP フィルタリングがされているとき / Azure Pipelines で Ansible を使う - Qiita](https://qiita.com/KoKeCross/items/63d395976c3a295a2d09#%E7%AE%A1%E7%90%86%E5%AF%BE%E8%B1%A1%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB-ssh-%E3%81%AE-ip-%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%8C%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D)

## Self-hosted Agents のコストを削減したい

Scale set agents なら保持しておくマシン設定を 0 にすることで休日や夜間など、 VM を起動する必要がない時間帯のコストを削減できます。
[Azure Pipelines で VMSS agents も便利だよ、という話 - Qiita](https://qiita.com/KoKeCross/items/c886c4e7448165b6aa29)

## Microsoft-hosted agents の vmImage をバージョンアップするときの注意点

ここに現在使っている vmImage にプリインストールされているソフトウェアが書いてあります。
[GitHub - actions/virtual-environments: GitHub Actions virtual environments](https://github.com/actions/virtual-environments)

vmImage をバージョンアップする場合、使っているソフトウェアがインストールされているか確認しましょう。もしインストールされていない場合かつ、そのソフトウェアを使いたい場合は、 Pipeline のタスクとして手動でソフトウェアをインストール＆それを使うような処理を追加する必要があります。

### 例: ubuntu-18.04 & PHP 7.3 を使っているプロジェクトで ubuntu-20.04 にアップデートする場合

ubuntu-20.04 には PHP 7.3 が含まれていないため、 Pipeline のタスクとして PHP 7.3 をインストールする＆後続の処理で 7.3 を使うようにする 2 つのタスクを追加する必要があります。
[PHP / virtual-environments/Ubuntu2004-README.md at main · actions/virtual-environments · GitHub](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#php)

## Microsoft-hosted agents にプリインストールするソフトウェアを追加したい

ここの Issue を検索してなければ Tool request の Issue を書きましょう。テンプレートになっているので書きやすいです。
[Issues · actions/virtual-environments](https://github.com/actions/virtual-environments/issues?q=is%3Aissue+label%3A%22feature+request%22)
[New Issue · actions/virtual-environments](https://github.com/actions/virtual-environments/issues/new/choose)

## Self-hosted agents がキューに残り続ける

該当のエージェントプールを見て、 Agent がオンラインかつ Enabled になっていることを確認しましょう。
[Agents pools - Azure Pipelines | Microsoft Docs](https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser)

## Self-hosted agents のディスク容量枯渇問題

メンテナンスジョブを使って古い作業ディレクトリとリポジトリを定期的にクリーンアップしましょう。
[What is a maintenance job? / Agents pools - Azure Pipelines | Microsoft Docs](https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser#what-is-a-maintenance-job)

## 自動作成したサービスプリンシパルの有効期限延長

サービスプリンシパルを開いて Edit して Save するだけ。
[Service principal's token expired / Troubleshoot Azure Resource Manager service connections - Azure Pipelines | Microsoft Docs](https://docs.microsoft.com/en-us/azure/devops/pipelines/release/azure-rm-endpoint?view=azure-devops#service-principals-token-expired)

## サービスが止まっているかどうか確認したい

ここから見られます。過去の履歴も見られます。ごく稀に一部の機能のパフォーマンスが悪くなったりしています。
[Azure DevOps - Status](https://status.dev.azure.com/)