Skip to main content

Génération et test de code Java avec Ant

Vous pouvez créer un workflow d’intégration continue (CI) dans GitHub Actions pour générer et tester votre projet Java avec Ant.

Introduction

Ce guide explique comment créer un workflow qui effectue une intégration continue (CI) pour votre projet Java à l’aide du système de génération Ant. Le workflow que vous créez vous permet de voir à quel moment les commits de demande de tirage (pull request) entraînent des échecs de build ou de test dans votre branche par défaut. Cette approche peut vous aider à garantir l’intégrité de votre code. Vous pouvez étendre votre workflow d’intégration continue pour charger des artefacts à partir d’une exécution de workflow.

Les exécuteurs hébergés dans GitHub ont un cache d’outils où des logiciels sont préinstallés, notamment les Java Development Kits (JDKs) et Ant. Pour obtenir la liste des logiciels et des versions préinstallées de JDK et d’ANT, consultez « Using GitHub-hosted runners ».

Prérequis

Vous devez être familiarisé avec YAML et la syntaxe GitHub Actions. Pour plus d'informations, consultez les pages suivantes :

Il est recommandé d’avoir une compréhension de base de Java et du framework Ant. Pour plus d’informations, consultez le manuel Apache Ant.

Utilisation du workflow de démarrage Ant

GitHub fournit un workflow de démarrage Ant qui fonctionnera pour la plupart des projets Java basés sur Ant. Pour plus d’informations, consultez Workflow de démarrage Ant. Les workflows de démarrage par défaut sont d’excellents points de départ lorsque vous créez votre workflow de build et de test. En outre, vous pouvez personnaliser le workflow de démarrage en fonction des besoins de votre projet.

Pour commencer rapidement, vous pouvez choisir le workflow de démarrage Ant préconfiguré lorsque vous créez un workflow. Pour plus d’informations, consultez « Démarrage rapide pour GitHub Actions ».

Vous pouvez également ajouter ce workflow manuellement en créant un fichier dans le répertoire .github/workflows de votre dépôt.

YAML
name: Java CI

Nom du workflow. GitHub affiche les noms de vos workflows sous l’onglet « Actions » de votre référentiel. Si vous omettez name, GitHub affiche le chemin du fichier de workflow relatif à la racine du référentiel.

on: [push]
jobs:
  build:
    runs-on: ubuntu-latest

Vous pouvez exécuter ce workflow à l’aide d’un autre système d’exploitation.

Le workflow de démarrage configure les travaux à exécuter sur Linux, à l’aide d’exécuteurs ubuntu-latest hébergés par GitHub. Vous pouvez modifier la clé runs-on pour exécuter vos travaux sur un autre système d’exploitation.

Par exemple, vous pouvez utiliser des exécuteurs Windows hébergés sur GitHub en spécifiant runs-on: windows-latest. Vous pouvez également exécuter sur les exécuteurs de données macOS hébergés sur GitHub en utilisant runs-on: macos-latest.

Vous pouvez également exécuter des travaux dans des conteneurs Docker, ou vous pouvez fournir un exécuteur auto-hébergé qui s’exécute sur votre propre infrastructure. Pour plus d’informations, consultez « Workflow syntax for GitHub Actions ».

    steps:
      - uses: actions/checkout@v4

Cette étape utilise l’action actions/checkout pour télécharger une copie de votre référentiel sur l’exécuteur.

      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'

Cette étape utilise l’action actions/setup-java pour configurer le JDK Eclipse Temurin (Java) 17 d’Eclipse Adoptium.

      - name: Build with Ant
        run: ant -noinput -buildfile build.xml

This step runs the default target in your build.xml file in non-interactive mode.

# Nom du workflow. GitHub affiche les noms de vos workflows sous l’onglet « Actions » de votre référentiel. Si vous omettez `name`, GitHub affiche le chemin du fichier de workflow relatif à la racine du référentiel.
name: Java CI

#
on: [push]
#
jobs:
  build:
    # <!-- This is a YAML comment for use in annotated code examples. -->
    # Vous pouvez exécuter ce workflow à l’aide d’un autre système d’exploitation.
    #
    # Le workflow de démarrage configure les travaux à exécuter sur Linux, à l’aide d’exécuteurs `ubuntu-latest` hébergés par GitHub. Vous pouvez modifier la clé `runs-on` pour exécuter vos travaux sur un autre système d’exploitation.
    #
    # Par exemple, vous pouvez utiliser des exécuteurs Windows hébergés sur GitHub en spécifiant `runs-on: windows-latest`. Vous pouvez également exécuter sur les exécuteurs de données macOS hébergés sur GitHub en utilisant `runs-on: macos-latest`.
    #
    # Vous pouvez également exécuter des travaux dans des conteneurs Docker, ou vous pouvez fournir un exécuteur auto-hébergé qui s’exécute sur votre propre infrastructure. Pour plus d’informations, consultez « [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on) ».
    runs-on: ubuntu-latest
#
    steps:
      # Cette étape utilise l’action `actions/checkout` pour télécharger une copie de votre référentiel sur l’exécuteur.
      - uses: actions/checkout@v4
      # Cette étape utilise l’action `actions/setup-java` pour configurer le JDK Eclipse Temurin (Java) 17 d’Eclipse Adoptium.
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      # This step runs the default target in your `build.xml` file in non-interactive mode.
      - name: Build with Ant
        run: ant -noinput -buildfile build.xml

Spécification de la version et de l’architecture de JVM

Le workflow de démarrage configure le PATH pour contenir OpenJDK 8 pour la plateforme x64. Si vous souhaitez utiliser une autre version de Java ou cibler une architecture différente (x64 ou x86), vous pouvez utiliser l’action setup-java pour choisir un autre environnement d’exécution Java.

Par exemple, pour utiliser la version 11 du JDK fourni par Adoptium pour la plateforme x64, vous pouvez utiliser l’action setup-java et configurer les paramètres java-version, distribution et architecture sur '11', 'temurin' et x64.

YAML
steps:
  - uses: actions/checkout@v4
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v3
    with:
      java-version: '11'
      distribution: 'temurin'
      architecture: x64

Pour plus d’informations, consultez l’action setup-java.

Génération et test de votre code

Vous pouvez utiliser les mêmes commandes que celles que vous utilisez localement pour générer et tester votre code.

Le workflow de démarrage exécute la cible par défaut spécifiée dans votre fichier build.xml. Votre cible par défaut est généralement définie pour générer des classes, exécuter des tests et empaqueter les classes dans leur format distribuable, par exemple sous forme de fichier JAR.

Si vous utilisez différentes commandes pour générer votre projet ou si vous souhaitez exécuter une autre cible, vous pouvez les spécifier. Par exemple, vous pouvez exécuter la cible jar qui est configurée dans un fichier _build-ci.xml_.

YAML
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-java@v3
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Run the Ant jar target
    run: ant -noinput -buildfile build-ci.xml jar

Empaquetage des données de workflow en tant qu’artefacts

Une fois que votre build a été générée et que vos tests ont réussi, vous pouvez charger les packages Java résultants en tant qu’artefacts de build. Cela stockera les packages générés dans le cadre de l’exécution du workflow et vous permettra de les télécharger. Les artefacts peuvent vous aider à tester et à déboguer des demandes de tirage dans votre environnement local avant qu’elles ne soient fusionnées. Pour plus d’informations, consultez « Stockage des données de workflow en tant qu’artefacts ».

Ant crée généralement des fichiers de sortie comme les fichiers JAR, EAR ou WAR dans le répertoire build/jar. Vous pouvez charger le contenu de ce répertoire à l’aide de l’action upload-artifact.

YAML
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-java@v3
    with:
      java-version: '17'
      distribution: 'temurin'

  - run: ant -noinput -buildfile build.xml
  - uses: actions/upload-artifact@v3
    with:
      name: Package
      path: build/jar