目的
自分の環境にあったビルドエージェント環境のコンテナを用意できる。
ビルドエージェント構成方針
ビルドエージェントの構成は2つの方針がある。
1:リッチなビルドエージェント
ビルドエージェントは無料枠では2つまでなので、小さなプロジェクトユースでは(費用を払わない限り)1つのエージェントに複数のビルド環境をもたせたいだろう。
おそらく、個人ユースでもおおよそ同じと思う。
2:最小限のビルドエージェント
ビルドエージェントを最小限にすることで、ビルド環境のセットアップは簡単に済ませることができるし、Dockerfileも小さくて済む。
反面、エージェントの管理を手動で行わなければならない。
ベース検討
特に要件がない場合には、通常のエージェントコンテナを出発点として作業するのがいいだろう。.NETビルドやDockerデプロイ用の環境セットアップもなされているようだ。
一方、ハードなプロジェクトユースでコンテナを少しでも小さくしたかったり、完全に管理するため余計なものを入れたくない場合には最小のエージェントコンテナを利用するかもしれない。
どちらにせよ、エージェント自体の実行環境としてJava8は入っている。(OpenJDK派生のAmazon Corettoを利用しているようだ)
本題:JDKの追加
今回は最小のエージェントコンテナを出発点としてJDKを追加することにした。
使用するコンテナはlinux
(Ubuntu)タグのlatest
である。
Javaの追加先
エージェントのJava環境自動検知を参照すると以下のディレクトリ群で自動検知されるとのこと。
あとは設定ファイルに探索先パスを設定できるようだ。
Unix
The following directories are searched for Java subdirectories:
/usr/local/java
/usr/local
/usr/java
/usr/lib/jvm
/usr
サンプル:Amazon Correto 11
jdk11を追加する場合のDockerfileサンプル。
最小のエージェントコンテナのJDK追加をパクってドン。
FROM jetbrains/teamcity-minimal-agent:latest
LABEL maintainer=""
# JDK preparation start
# Amazon Coretto 11
ARG MD5SUM='08a0cea184824c5477a62ce6a6a0fb0b'
ARG JDK_URL='https://d3pxv6yz143wms.cloudfront.net/11.0.3.7.1/amazon-corretto-11.0.3.7.1-linux-x64.tar.gz'
RUN set -eux; \
curl -LfsSo /tmp/openjdk.tar.gz ${JDK_URL}; \
echo "${MD5SUM} */tmp/openjdk.tar.gz" | md5sum -c -; \
mkdir -p /usr/local/java/openjdk; \
cd /usr/local/java/openjdk; \
tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
rm -rf /tmp/openjdk.tar.gz;
# JDK preparation end
##################################
AGENT_NAMEを使ってエージェントに名前をつけておくとサーバーで管理しやすい。
version: '3'
services:
ci-agent-java11:
build: ./ci/ci-agent/
environment:
- SERVER_URL=ci:8111
- AGENT_NAME=Java11
ports:
- 9090:9090
volumes:
- ./ci/agent-java11/conf:/data/teamcity_agent/conf
ビルドステップにJDK11を指定する
ビルドステップはデフォルトだとビルドエージェントのJAVA_HOME
のJDKを使用するので設定したJDKを指定する
参考:エージェントをプールに割り当てる
default
プールのみでは管理しにくい場合はエージェントを適切にプールで分けてプロジェクトごとに割り当てましょう。
いじょ。