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/
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.
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/
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é)
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
pom.xml
du côté du projet Maven concernant les noms de fichiers de jar
et war
, donc peut-être que cette version fonctionnait avec les paramètres par défaut. Hmm.Les étapes sont les suivantes.
build
docker
--Spécifiez le chemin de l'image supprimée de https: // hub.docker.com / r /
steps
checkout
Build and test
mvn clean install
store_artifacts
--Enregistrer repository.jar
et serverapi.war
comme artefacts (*)Save test results
store_test_results
store_artifacts
--Enregistrer les résultats des tests sous forme d'artefactsPour le travail build
, nous avons défini un filtre qui limite la branche à festival / for_circleci
.
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