Comment utiliser le JDK 19 avec Azure Pipeline ?

De base, les agents de build hébergé par Microsoft n’incluent pas le JDK 19 d’Oracle (depuis le passage à Open JDK, il n'y a plus de support des nouveaux JDK d'Oracle). Si vous voulez à tout prix reposer sur celui-ci, il reste alors deux solutions :

  • Modifier la build afin d’inclure des tâches de téléchargement et d’installation du JDK.
  • Héberger son propre agent et y installer le JDK.

La première approche est la plus rapide à mettre en place. Cependant, celle-ci allonge la durée de la build.

Si vous avez besoin de builds rapides, la seconde option est préférable. Je ne vous cache pas qu’il s’agit de mon approche préférée. Les agents sont plus rapidement disponibles. Ils peuvent profiter du cache de précédentes builds (binaires générés, code, et dépendances téléchargées).

L’installation

Il suffit d’installer le JDK sur le serveur. Il faut ensuite créer la variable d’environnement JAVA_HOME et y stocker le chemin vers le JDK (par défaut sur Windows: C :\Program Files\Java\jdk-19).

Si vous avez besoin de Maven, l’installation est relativement proche. La création de la variable d’environnement MAVEN_HOME n’est pas indispensable (mais elle peut être requise pour certains outils). Par contre, il faut impérativement ajouter le chemin vers les binaires de Maven à la variable d’environnement PATH du serveur.

Bien évidemment, si l’agent de build Azure Pipeline a été installé avant les outils Java, il faut redémarrer son service.

Après installation, une build comme celle-ci passera sans problèmes :


trigger:
- main

steps:
- task: Maven@3
  displayName: 'Création du package'
  inputs:
    mavenPomFile: 'sources/appname/pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    goals: 'package'

- task: PowerShell@2
  displayName: 'Déplacer les .jar'
  inputs:
    targetType: inline
    script: 
      Move-Item -Path $(system.defaultworkingdirectory)/sources/appname/target/*.jar -Destination $(Build.artifactStagingDirectory)

- task: PublishBuildArtifacts@1
  displayName: 'Publication des artefacts'
  inputs:
    pathtoPublish: '$(Build.artifactStagingDirectory)'
    artifactName: 'Application'

Conclusion

Comme toujours avec Azure Pipeline, rien n’est impossible.

L’installation d’outils pour Java me rebute toujours un peu, mais on s’y fait. Il faut juste aimer créer des variables d’environnement.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.