Skip to main content

Cette version de GitHub Enterprise Server n'est plus disponible depuis le 2024-07-09. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

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

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

Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.

Introduction

Ce guide explique comment créer un workflow qui effectue une intégration continue (CI) pour votre projet Java à l’aide de l’outil de gestion de projet logiciel Maven. 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 CI pour mettre en cache des fichiers et charger des artefacts à partir d’une exécution de workflow.

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

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 Maven. Pour plus d’informations, consultez Maven Getting Started Guide dans la documentation Maven.

Utilisation d’exécuteurs auto-hébergés sur GitHub Enterprise Server

Quand vous utilisez des actions de configuration (comme actions/setup-LANGUAGE) sur GitHub Enterprise Server avec des exécuteurs auto-hébergés, vous pouvez être amené à configurer le cache des outils sur les exécuteurs qui n’ont pas accès à Internet. Pour plus d’informations, consultez « Configuration du cache d’outils sur les exécuteurs auto-hébergés sans accès à Internet ».

Utilisation d’un workflow de démarrage pour Maven

Pour commencer rapidement, ajoutez le workflow de démarrage à l’annuaire .github/workflows de votre référentiel.

GitHub fournit un workflow de démarrage pour Maven qui devrait fonctionner pour la plupart des projets Java avec Maven. Les sections suivantes de ce guide donnent des exemples de la façon dont vous pouvez personnaliser ce workflow de démarrage.

  1. Dans votre instance GitHub Enterprise Server, accédez à la page principale du dépôt.

  2. Sous le nom de votre dépôt, cliquez sur Actions.

    Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.

  3. Si vous disposez déjà d’un workflow dans votre dépôt, cliquez sur Nouveau workflow.

  4. La page « Choisir un flux de travail » affiche une sélection de flux de travail de démarrage recommandés. Recherchez « Java avec Maven ».

  5. Dans le flux de travail « Java avec Maven », cliquez sur Configurer.

    Si vous ne trouvez pas le workflow de démarrage « Java avec Maven », copiez le code de workflow suivant dans un nouveau fichier appelé maven.yml dans l’annuaire .github/workflows de votre référentiel.

    YAML
    name: Java CI with Maven
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v4
        - name: Set up JDK 17
          uses: actions/setup-java@v4
          with:
            java-version: '17'
            distribution: 'temurin'
            cache: maven
        - name: Build with Maven
          run: mvn -B package --file pom.xml
    
        # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
        - name: Update dependency graph
          uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
    
  6. Modifiez le workflow en fonction des besoins. Par exemple, changez la version de Java.

  7. Cliquez sur Valider les changements.

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

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@v4
    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 package par défaut. Dans la configuration Maven par défaut, cette commande télécharge les dépendances, génère les classes, exécute les tests et empaquettent les classes dans un format distribuable, par exemple, dans un fichier JAR.

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

YAML
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Run the Maven verify phase
    run: mvn --batch-mode --update-snapshots verify

Mise en cache des dépendances

Vous pouvez mettre en cache vos dépendances pour accélérer vos exécutions de workflow. Une fois l’exécution réussie, votre dépôt Maven local est stocké dans un cache. Dans les prochaines exécutions de workflows, le cache sera restauré afin que les dépendances n’aient pas besoin d’être téléchargées à partir des dépôts Maven distants. Vous pouvez mettre en cache les dépendances à l’aide de l’action setup-java ou utiliser l’action cache pour une configuration personnalisée et plus avancée.

YAML
steps:
  - uses: actions/checkout@v4
  - name: Set up JDK 11
    uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
      cache: maven
  - name: Build with Maven
    run: mvn --batch-mode --update-snapshots verify

Ce workflow enregistre le contenu de votre dépôt Maven local, qui est situé dans le répertoire .m2 du répertoire de base de l’exécuteur. La clé de cache sera le contenu haché de pom.xml. Par conséquent, toute modification apportée à pom.xml rendra le cache non valide.

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 ».

Maven crée généralement des fichiers de sortie comme les fichiers JAR, EAR ou WAR dans le répertoire target. Pour charger ces fichiers en tant qu’artefacts, vous pouvez les copier dans un nouveau répertoire qui contient les artefacts à charger. Par exemple, vous pouvez créer un répertoire appelé staging. Vous pouvez ensuite charger le contenu de ce répertoire à l’aide de l’action upload-artifact.

YAML
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - run: mvn --batch-mode --update-snapshots verify
  - run: mkdir staging && cp target/*.jar staging
  - uses: actions/upload-artifact@v3
    with:
      name: Package
      path: staging