Créez et testez des applications Java + Gradle avec Wercker
Bien que mon aspect du dossier de travail soit fort, j'ai créé la procédure pour Wercker sur la base du dossier de travail réel. Je suis nouveau dans CI lui-même, il peut donc y avoir des erreurs. Dans ce cas, veuillez le signaler.
Aperçu
Il s'agit de la procédure de construction automatique et de test automatique avec Wercker dans le référentiel GitHub des applications Java utilisant Gradle.
J'ai testé des référentiels publics ici, mais je pourrais aussi essayer des référentiels privés et ajouter des résultats.
Wercker
URL
https://app.wercker.com/
Aperçu
Wercker, la lecture est un travailleur. Récemment acquis par Oracle. Vous pouvez utiliser votre référentiel privé gratuitement. Vous pouvez créer un environnement de construction à l'aide de Docker.
table des matières
- Connexion Wercker
- Enregistrez le référentiel GitHub avec Wercker
- Créer wercker.yml, pousser vers le référentiel GitHub, compilation automatique, travaux de test automatiques
- Définissez wercker.yml pour que la construction réussisse
- Confirmez que si le test JUnit sur Gradle échoue, la compilation échouera également sur Wercker.
- Forcer Wercker à vérifier dans le référentiel GitHub et rejeter la fusion en cas de test NG
Connexion Wercker
- Accéder à Wercker
- Vous pouvez vous connecter avec votre compte GitHub
Enregistrer le référentiel GitHub avec Wercker
- Cliquez sur le bouton Créer votre première application sur Wercker
- Sélectionnez l'écran Utilisateur et SCM
- Select a user from the doropdown begin.*
- Le compte du commerçant est affiché, sélectionnez le compte à utiliser
2. Select SCM
- Pris en charge par GitHub, Bitbucket et GitLab
――Cet article utilise GitHub, alors sélectionnez GitHub
- Sélectionnez l'écran Repository
- Sélectionnez le référentiel GitHub à ajouter à Wercker
--Seules les référentiels avec les privilèges d'administrateur sont affichés (devrait être, lisez la documentation Wercker, mais indiquez si c'est faux)
- Écran de configuration de la clé SSH
- wercker will check out the code without using an SSH key
--Wercker extrait le référentiel cible sans clé SSH
- Sélectionnez ceci car il est recommandé
- Add the deploy key to the selected repository for me
- Enregistrez la clé SSH pour accéder au référentiel
- Déconseillé, probablement parce que vous ne passez pas facilement les opérations de dépôt
- Écran de révision
1.Assurez-vous que les paramètres sont ceux que vous avez sélectionnés
- Make my app public
- Si cochée, les informations de déploiement peuvent être publiées lorsque vous cliquez sur le badge qui apparaît plus tard.
- Ne pas vérifier si ce n'est pas nécessaire
- Ajout de l'application sur Wercker terminé
Créez wercker.yml et transférez-le dans le référentiel GitHub
- À partir de l'écran de fin d'enregistrement du référentiel, l'écran d'ajout de yml est ouvert tel quel
- Sélectionnez Java Gradle dans la boîte de sélection intitulée Sélectionnez une langue
- Le contenu de wercker.yml sera affiché, alors copiez-le dans le presse-papiers.
- Créez un fichier avec le contenu copié sous forme de fichier wercker.yml directement sous la racine du référentiel.
- La version Java devra peut-être être modifiée en conséquence
- Changé de
`box: openjdk: 8-jdk``` à` `box: openjdk: 10.0.1-jdk``` --box est synonyme de pull in Dockerfile -Reportez-vous à [openjdk official DockerHub](https://hub.docker.com/_/openjdk/) et décrit la partie
10.0.1-jdk ''.
- Poussez wercker.yml vers le référentiel
- Attrapez la poussée et exécutez automatiquement sur Wercker
- Succès ou erreur
--Dans mon travail, j'ai échoué avec une erreur lors de la phase de construction de werkker.
- Le journal que Gradle 4.2 a été spécifié au moment de l'exécution a été généré, mais comme Gradle 4.2 ne prend pas en charge Java 10, une erreur se produit.
--Depuis qu'il a été développé avec Gradle 4.8, la version Gradle utilisée est faible.
- Expliquez la résolution de l'erreur en la matière
Contenu wercker.yml par défaut de Wercker
# This references an OpenJDK container from the
# Docker Hub https://hub.docker.com/_/openjdk/
# Read more about containers on our dev center
# http://devcenter.wercker.com/docs/containers/index.html
box: openjdk:8-jdk
# This is the build pipeline. Pipelines are the core of wercker
# Read more about pipelines on our dev center
# http://devcenter.wercker.com/docs/pipelines/index.html
build:
# Steps make up the actions in your pipeline
# Read more about steps on our dev center:
# http://devcenter.wercker.com/docs/steps/index.html
steps:
# https://github.com/wercker/step-gradle
- java/gradle:
task: build
cache_project_cache: true
Définissez wercker.yml pour que la construction passe
Contre-mesures
- Si vous définissez la version: dans l'élément de construction de wercker.yml, java / gradle, vous devriez pouvoir en créer n'importe quelle version.
- échoué
--Peut être spécifié dans java / gradle de wercker.yml, donc 4.8.0 a été défini
- La version référencée ici est gérée dans le GitHub Repository, mais à ce stade, il ne s'agissait que de 4.2.
- Par conséquent, Gradle 4.8 ne peut pas être obtenu et ne peut pas être installé.
- Si vous utilisez le wrapper gradle au lieu de vous fier à java / gradle de wercker.yml, vous devriez pouvoir l'exécuter avec n'importe quelle version.
- Changement de wercker.yml selon Wercker Official Guide
- Comme cela se reflète dans le contenu final, voir ci-dessous pour plus de détails.
- Suppression de l'élément d'étape de construction initialement écrit
--Exécuter gradlew bootRun sur l'élément de développement
--Exécuter gradlew build sur l'élément de construction
- échoué
--Lorsque Wercker entre dans la phase de construction,
Erreur: Impossible de trouver ou de charger la classe principale org.gradle.wrapper.GradleWrapperMain
se produit
- Ajoutez gradle-wrapper.jar au référentiel pour que gradlew puisse s'exécuter
- Tous les .jars n'étaient pas validés avec .gitignore
--La classe n'a pas pu être trouvée car il n'y a pas de gradle-wrapper.jar dans le répertoire gradle / wrapper directement sous le répertoire racine du référentiel.
- Ajout de ``! Gradle-wrapper.jar '' à .gitignore et ajout de gradle-wrapper.jar pour valider
- C'est aussi un fichier jar nécessaire pour ceux qui n'installent pas gradle et ne l'exécutent pas avec gradlew, il est donc normal d'en faire une cible de gestion de référentiel
- Construction réussie sur Wercker
Final werkker.yml
# This references an OpenJDK container from the
# Docker Hub https://hub.docker.com/_/openjdk/
# Read more about containers on our dev center
# http://devcenter.wercker.com/docs/containers/index.html
box: openjdk:10.0.1-jdk
# defining the dev pipeline
dev:
steps:
# A step that executes `gradle bootRun` command
- script:
name: run gradle
code: |
./gradlew bootRun
# Build definition
build:
# The steps that will be executed on build
steps:
# A step that executes `gradle build` command
- script:
name: run gradle
code: |
./gradlew --full-stacktrace -q --project-cache-dir=$WERCKER_CACHE_DIR build
Confirmez que si le test JUnit sur Gradle échoue, la compilation échouera également sur Wercker.
- Osez changer le code de test pour que NG apparaisse dans la classe de test
- Validez et envoyez le code contenant le test NG vers le référentiel GitHub
- Confirmez que la compilation échoue sur Wercker
――Je l'ai essayé et j'ai confirmé que la phase de construction avait échoué.
Forcer Wercker à vérifier dans le référentiel GitHub et rejeter la fusion en cas de test NG
- Ouvrez les paramètres dans le référentiel GutHub
- Branches ouvertes
- Sélectionnez et ouvrez la branche principale
- Cochez Exiger que les vérifications d'état soient réussies avant la fusion
- Vérifiez l'élément wercker / build
- Les demandes d'extraction ultérieures vers le maître ne peuvent pas être fusionnées sans une compilation réussie de Wercker
finalement
À ce stade, vous pouvez attraper la transmission vers GitHub sur Wercker et vérifier si la construction (test effectué en même temps que la construction) réussit ou échoue automatiquement.
Il y a encore beaucoup de choses à faire en définissant le flux de travail, je prévois donc de les laisser dans un article séparé si j'essaye à nouveau.
prime
Documentation du développeur Wercker
Comment fonctionne Wercker, comment faire votre propre boîte et étape