[Docker]Ubuntu 22.04でのAzure Pipelines エージェントのセルフ運用


Ubuntu 22.04ベースでAzure Pipelines agentsをコンテナ化する方法。

まず、Dockerを利用した方法は公式ドキュメントがある。
ただし、Ubuntu 20.04までの記載。

Docker でセルフホステッド エージェントを実行する – Azure Pipelines | Microsoft Learn

Ubuntu 22.04、20.04、18.04、16.04

こちらでは22.04が含まれているので、Dockerのドキュメントの問題。

Linux に Azure Pipelines エージェントを配置する – Azure Pipelines | Microsoft Learn

対応方法

  • .NETをインストールする記述を追加。
  • OpenSSL 1.x.xをインストールする記述を追加。
  • ./bin/installdependencies.shを動かさない。
    ここはMSの開発者の意識次第で今後も無視で良い。

問題発生とその原因

GitHubのコミュニティでOpenSSL 1.x.xに起因しているように見える。

[VSTS Agent] Unable to install vsts agent on Ubuntu Server 22.04 LTS · Issue #3834 · microsoft/azure-pipelines-agent (github.com)

エージェントの./bin/installdependencies.shにベタでOpenSSL 1.x.xのライブラリを標準リポジトリからインストールする記述があって、そこが原因で失敗する。
「20.04までしかサポートしてない」とか言ってるけど、Docker側の記述が古いだけ。
installdependencies.shのバグでコンテナか直接かは問題の本質ではない。

.NET SDKのインストールでの依存関係はパッケージの設定ファイルで制御すべき。
責務分担ができていないように見える。
これに限らず、パッケージの依存関係を片っ端からaptのinstallに記述する人っているけど、根本原因はそこだと思う。
(単なる他者のコピペかは知らないが)

そんな訳で./config.shを動かすと./bin/installdependencies.shを動かせって言われるし、
公式ドキュメントにも./bin/installdependencies.shを動かせって書いてあるけど、
このスクリプトが原因で上手くいかない。

尚、OpenSSL 1.x.xは2023年9月にEOL。
よって、この記事も寿命2ヶ月。

OpenSSL 1.1.1 End of Life Approaching – OpenSSL Blog

サンプル

tmplt-docker-compose/azure-pipelines-agent at main · rfull-development/tmplt-docker-compose (github.com)

, ,