[JAVA] Projet CI pour Maven chez CircleCI

Dans la continuité de l'article suivant, cette fois je vais essayer d'utiliser CircleCI. https://qiita.com/kasa_le/items/1b97b0d36c81785522a8

CircleCI Vous pouvez vous inscrire ici. Il n'y a qu'un moyen de créer un lien avec Github ou Bitbucket, alors veuillez abandonner les autres dépôts (rire) https://circleci.com/

Fonctionnalité

Il existe de nombreux modèles et une bibliothèque qui résume les tâches appelée Orb est distribuée, il semble donc que l'environnement de construction des principaux emplacements est en place. Vous pouvez également créer .NET, Android, etc.

La connexion à Github se fait en tant que ** Applications OAuth autorisées **. Il sera enregistré dans [Paramètres] - [Applications] - [Applications OAuth autorisées] de votre compte Github. (En interne, cela semble être une connexion avec la clé SSH.)

Il prend également en charge la fonction de cache.

L'image du système d'exploitation prend en charge Linux, Windows et macOS, mais j'ai pu extraire diverses images Docker, ce qui a été utile cette fois.

Frais

Je pense que le plan gratuit peut résister à une utilisation personnelle, mais sachez que l'image du système d'exploitation n'est compatible qu'avec Linux ou Windows. En dehors de cela, vous serez facturé mensuellement.

https://circleci.com/ja/pricing/ Il semble qu'il y ait une grande différence dans le montant d'argent entre les plans, mais si vous regardez en bas, il s'agit d'un système de facturation (montant mensuel) en fonction du nombre de membres de l'équipe et du montant d'utilisation.

Je pense qu'il est facile d'estimer si le projet a un fonctionnement CI stable. Par contre, pour un projet qui est entretenu et développé pendant une certaine période de temps et qui tourne beaucoup, mais qui ne circule pas beaucoup lors d'autres opérations, cela coûte un forfait mensuel minimum sans rien faire, alors je voudrais identifier et utiliser cette zone.

Et dans le cas de l'OSS

Offrez 400000 crédits mensuels aux clients avec des plans gratuits

Cependant, il semble que seul Linux puisse être utilisé (à partir de la FAQ sur https://circleci.com/ja/pricing/), alors soyez prudent.

Une version sur site est également disponible pour les entreprises (nous contacter). https://circleci.com/ja/enterprise/

Performance

C'est l'image d'un magasin établi de longue date. Par conséquent, il s'agit actuellement de la version 2.1, mais lorsque je l'ai recherchée, j'ai trouvé beaucoup d'informations de l'ancien temps, et il était un peu difficile d'accéder aux informations de la version actuelle.

De plus, il semble que l'interface utilisateur du site Web soit en train d'être modifiée, et la nouvelle interface utilisateur et l'ancienne interface utilisateur sont en désordre, donc je suis assez confus quant à "Comment puis-je revenir à cet écran?" Il dit que vous ne pourrez pas voir l'ancien écran après le 15 avril, il se peut donc qu'il se calme après cela.

Les informations de démarque lorsque vous attachez un badge de statut, etc. fournissent une page où vous pouvez définir votre propre projet, le nom de la succursale, etc. et le copier dans l'ancienne interface utilisateur, mais dans la nouvelle interface utilisateur, c'est cela C'est un peu gênant car la page a disparu et seul l'exemple est sur la page d'explication générale.

De plus, je ne peux pas exécuter le workflow manuellement. (Bien que vous puissiez [Réexécuter] celui exécuté)

Réglage

Utilisez uniquement le fichier yml. Créez un répertoire appelé .circleci directement sous la racine du projet, et placez config.yml en dessous.

En fin de compte, voici les paramètres qui ont bien fonctionné pour la construction et le test.

.circleci/config.yml


version: 2.1

jobs:
  build:
    docker:
      - image: 'cimg/openjdk:11.0.6'
    steps:
      - checkout
      - run: 
          name: Build and test
          command: mvn clean install 
      - store_artifacts:
          path: repository/target/repository.jar
      - store_artifacts:
          path: serverapi/target/serverapi.war
      - run:
          name: Save test results
          command: |
            mkdir -p ~/test-results/junit/
            find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \;
          when: always
      - store_test_results:
          path: ~/test-results
      - store_artifacts:
          path: ~/test-results/junit

workflows:
  version: 2
  maven_test:
    jobs:
      - build:
            filters:
              branches:
                  only: feature/for_circleci

Si vous sélectionnez Java (Maven) dans le premier modèle, il en créera un en utilisant Orb, mais dans cette image, il est dit qu'il n'y a pas de jar du référentiel du sous-module`, et cela en dépend. La construction du sous-module a échoué.

Pour Orb, je pouvais spécifier la version JDK avec ctag de Executor, donc j'ai essayé et essayé, mais je n'ai pas pu la passer car je ne comprenais pas yml.

Par conséquent, en se référant au code source d'Orb et en utilisant l'image Docker comme décrit ci-dessus, il est devenu possible de construire avec la dernière version d'OpenJDK 11 (version LTS), et cela a réussi.

Page de Maven Orb https://circleci.com/orbs/registry/orb/circleci/maven

Les étapes sont les suivantes.

Travail build

Flux de travail

Pour le travail build, nous avons défini un filtre qui limite la branche à festival / for_circleci.

Impressions

La partie (*) dans l'explication de l'étape ne prend pas en charge la spécification de chemin par des caractères génériques et des expressions régulières!

C'est très gênant ...

Par exemple, dans le pom de Maven, vous pouvez spécifier le nom de fichier du produit avec la balise <build> <fileName>, mais cette spécification est facultative. Si non spécifié, par défaut

repository-1.1-SNAPSHOP.jar

Peut être nommé comme. Il est livré avec une version. C'est plus facile à comprendre, mais si vous faites cela, vous devrez réécrire le nom du fichier d'artefact de yml plus tard lorsque vous mettez à niveau la version, ce qui est très gênant.

Donc cette fois, dans ce projet, j'ai essayé de résoudre le problème en le corrigeant en tant que repository.jar avec la balise <build> <fileName>, mais cela vous indiquera la version après le téléchargement du produit. Cela peut être difficile et difficile.

Recommended Posts

Projet CI pour Maven chez CircleCI
Projet CI pour Maven chez Github Actions
Projet CI pour Maven sur AppVeyor
Projet CI pour Maven dans Azure Pipelines
Créer un projet Maven
Pratique CI / CD pour débutants - Partie 3 - Préparation d'un projet de développement
Créer un projet Web Maven
Comment ajouter un autre projet en tant que bibliothèque Maven avec CircleCI et l'utiliser pour la construction
Présentez Maven au projet Tomcat
[Pour les super débutants] Super introduction à Maven