[JAVA] Ajouter JDK au conteneur de l'agent TeamCity Build

Objectif

Vous pouvez préparer un conteneur pour l'environnement d'agent de build qui convient à votre environnement.

Créer une politique de configuration de l'agent

Il existe deux stratégies pour la configuration de l'agent de création.

1: agent de construction riche

Il n'y a que deux agents de build dans le niveau gratuit, donc pour une petite utilisation de projet, vous voudrez qu'un agent ait plusieurs environnements de build (sauf si vous payez). Probablement la même chose pour un usage personnel.

2: agent de construction minimal

En minimisant l'agent de build, la configuration de l'environnement de build est facile et le Dockerfile est petit. D'autre part, vous devez gérer l'agent manuellement.

Etude de base

Sauf si vous avez une exigence spécifique, c'est une bonne idée de commencer avec le conteneur d'agent régulier (https://github.com/JetBrains/teamcity-docker-agent). Il semble que l'environnement a été configuré pour la construction .NET et le déploiement de Docker. D'un autre côté, si vous voulez rendre le conteneur aussi petit que possible pour une utilisation intensive de projets, ou si vous ne voulez pas ajouter d'éléments supplémentaires pour une gestion complète, [Minimum Agent Container](https://github.com/JetBrains/teamcity- docker-minimal-agent) peut être utilisé.

Dans tous les cas, Java 8 est inclus comme environnement d'exécution de l'agent lui-même. (Il semble que vous utilisez Amazon Coretto dérivé d'OpenJDK)

Sujet principal: Ajout de JDK

Cette fois, j'ai décidé d'ajouter un JDK à partir de Minimum Agent Container. Le conteneur utilisé est le dernier tag linux (Ubuntu).

Où ajouter Java

Si vous vous référez à Détection automatique de l'environnement Java de l'agent, il sera automatiquement détecté dans les répertoires suivants. .. Après cela, il semble que vous puissiez définir le chemin de destination de la recherche dans le fichier de paramètres.

Unix

The following directories are searched for Java subdirectories:

/usr/local/java /usr/local /usr/java /usr/lib/jvm /usr

Exemple: Amazon Correto 11

Exemple Dockerfile lors de l'ajout de jdk11. N'oubliez pas d'ajouter le JDK pour Minimum Agent Container.

Dockerfile


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
##################################

Il est plus facile à gérer sur le serveur si vous nommez l'agent avec AGENT_NAME.

docker-compose.yml


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

Spécifiez JDK11 à l'étape de construction

Si l'étape de construction est la valeur par défaut, le JDK de l'agent de construction JAVA_HOME est utilisé, spécifiez donc l'ensemble JDK.

image.png

Référence: attribuer des agents aux pools

S'il est difficile de gérer avec le pool default seul, divisez les agents de manière appropriée en pools et attribuez-les à chaque projet.

image.png

Ijo.

Recommended Posts

Ajouter JDK au conteneur de l'agent TeamCity Build
4 Ajoutez println à l'interpréteur
Ajouter des attributs étendus au fichier
Comment ajouter la fonction de suppression
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Je voulais ajouter @VisibleForTesting à la méthode
[Docker] Comment créer lorsque le code source est monté en liaison sur le conteneur
La construction du conteneur Docker ne parvient pas à installer php-radis
Comment vérifier le journal dans le conteneur Docker
Changer le fuseau horaire du conteneur https-portal en JST
Ajouter classpath: au chemin spécifié dans spring.datasource.schema
Comment créer la blockchain la plus simple de Ruby
Organisé comment interagir avec le JDK par étapes
Je souhaite ajouter une fonction de suppression à la fonction de commentaire