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 Gradle. 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 charger des artefacts à partir d’une exécution de workflow.
Les exécuteurs hébergés dans Vous devez installer les logiciels nécessaires sur vos exécuteurs autohébergés. Pour plus d’informations sur les exécuteurs autohébergés, consultez « Hébergement de vos propres exécuteurs ».
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 Gradle. Pour plus d’informations, consultez le manuel utilisateur de Gradle.
Utilisation du workflow de démarrage Gradle
GitHub fournit un workflow de démarrage Gradle qui fonctionnera pour la plupart des projets Java basés sur Gradle. Pour plus d’informations, consultez Workflow de démarrage Gradle. 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 Gradle 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.
Remarques :
- Ce workflow utilise des actions qui ne sont pas certifiées par GitHub. Elles sont fournies par un tiers et sont régies par des conditions d’utilisation du service, une politique de confidentialité et une documentation de support distinctes.
- GitHub recommande d’épingler les actions à un SHA de commit. Pour obtenir une version plus récente, vous devez mettre à jour le SHA. Vous pouvez également référencer une balise ou une branche, mais l’action peut changer sans avertissement.
# 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' # The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree. - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 # The "Build with Gradle" step does a build using the `gradle/gradle-build-action` action provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see [`gradle/gradle-build-action`](https://github.com/gradle/gradle-build-action). - name: Build with Gradle uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: build
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: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree.
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
The "Build with Gradle" step does a build using the gradle/gradle-build-action
action provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see gradle/gradle-build-action
.
# 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'
# The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree.
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
# The "Build with Gradle" step does a build using the `gradle/gradle-build-action` action provided by the Gradle organization on GitHub. The action takes care of invoking Gradle, collecting results, and caching state between jobs. For more information see [`gradle/gradle-build-action`](https://github.com/gradle/gradle-build-action).
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
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
.
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
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 tâche build
par défaut. Dans la configuration Gradle 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 tâche, vous pouvez les spécifier. Par exemple, vous pouvez exécuter la tâche package
qui est configurée dans votre fichier ci.gradle.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - name: Run the Gradle package task uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: -b ci.gradle package
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
- name: Run the Gradle package task
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: -b ci.gradle package
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 ».
Gradle crée généralement des fichiers de sortie comme les fichiers JAR, EAR ou WAR dans le répertoire build/libs
. Vous pouvez charger le contenu de ce répertoire à l’aide de l’action upload-artifact
.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3 - name: Build with Gradle uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629 with: arguments: build - uses: actions/upload-artifact@v3 with: name: Package path: build/libs
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@ccb4328a959376b642e027874838f60f8e596de3
- name: Build with Gradle
uses: gradle/gradle-build-action@749f47bda3e44aa060e82d7b3ef7e40d953bd629
with:
arguments: build
- uses: actions/upload-artifact@v3
with:
name: Package
path: build/libs