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に起因しているように見える。
エージェントの./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