Je vise à obtenir un emploi dans une entreprise développée en interne par des personnes inexpérimentées. J'ai décidé d'étudier CircleCI pour créer un bon portfolio.
Le niveau actuel de connaissances est le développement d'applications simples à l'aide de Ruby on rails, la gestion des versions à l'aide de git et le déploiement à l'aide d'heroku. J'espère que cela sera d'une certaine aide pour ceux qui envisagent d'essayer CircleCI à l'avenir au même niveau que leur propre mémorandum.
Comprenez ce qu'est CircleCI. Supprimez la base de l'écriture de CircleCI.
【Article associé】 [Challenge CircleCI from 0] Apprenez les bases de CircleCI [Challenge CircleCI from 0] Construire un test automatisé (Rails6.0 / mysql8.0 / Rspec) [Challenge CircleCI from 0] Comprendre AWS ECR / ECS [Challenge CircleCI from 0] Déploiement automatique avec CircleCI / AWS (ECR / ECS)
① À propos de CI / CD (2) Raisons du choix de CircleCI-Comparaison d'autres outils ③ Flux brut de tests avec CircleCI ④ À propos de la méthode de description du fichier de paramètres CircleCI
Allons vite.
CI (Continuous Integration) signifie intégration continue, et CD (Continuous Delivery / Deployment) signifie livraison continue ou déploiement continu. Pour être plus précis, il s'agit d'un mécanisme qui "lorsque vous poussez vers un système de gestion de version tel que git, il sera testé automatiquement, et si le test est effacé, il sera déployé automatiquement".
C'est parce que l'idée de «DevOps» s'est récemment étendue au monde de l'ingénierie. «DevOps» est l'idée de briser la barrière entre l'équipe de développement et l'équipe d'exploitation et de faire croître l'entreprise, et CI / CD attire l'attention comme une méthode pour pratiquer «DevOps».
Il existe des outils CI / CD bien connus. Comparons-les brièvement et voyons pourquoi CircleCI est choisi.
Jekins Un outil CI / CD de type local typique. Il est open source et possède une excellente extension avec des plug-ins.
CircleCI Outil CI / CD de type saas. Il fonctionne également bien avec GitHub et recommande d'utiliser Docker, qui a connu une croissance explosive ces dernières années. Vous pouvez également vous connecter via ssh.
Travis CI Il s'agit également d'un outil CI / CD de type saas. Sa force est qu'il prend en charge un large éventail de langues et peut introduire CI avec des paramètres simples.
Gitlab L'outil CI de Git, célèbre pour les logiciels de gestion de version. Apparemment, il n'a pas beaucoup de part dans l'industrie, mais il pourrait croître à l'avenir.
Les éléments ci-dessus sont considérés comme les principaux outils célèbres.
En ce qui concerne les critères de choix, décidez d'abord s'il s'agit d'un type sur site ou de type saas. Pour le développement personnel, le type saas, qui a un faible coût d'exploitation, est nettement meilleur. S'il s'agit d'un type saas, peu importe celui que vous utilisez, mais personnellement, je choisis CircleCI, qui est actuellement le plus populaire de l'industrie et recommande le docker de la technologie de contenu qui a attiré l'attention ces dernières années. Je pense que c'est le meilleur. (* Bien sûr, si vous utilisez Docker pour l'environnement de développement)
Le flux lui-même est très simple.
Une fois que vous avez écrit le code CircleCI, il n'est pas différent du flux de développement habituel utilisant git. Donc je pense que le cou sera la partie description du fichier (.circleci / config.yml).
Tous les paramètres CircleCI sont décrits dans le fichier YAML. Qu'est-ce qu'un fichier YAML? C'est un format qui décrit les données de la même manière que XML et JSON. À propos, YAML est une abréviation pour (yaml n'est pas un langage de balisage). J'ai le sentiment de me définir.
Et la caractéristique de YAML est qu'il est intuitif et facile à comprendre. Il se compose principalement des trois méthodes de description suivantes.
yaml
#① Liste → Arrangement
- 1
- 2
- 3
#② Carte → Hash
name: a
id : 1
text: ccc
#③ Scalaire → Autre que la liste et la carte
true false
null
123
Bien sûr, le fichier réel est un peu plus compliqué car ce qui précède est écrit sur plusieurs lignes. Cependant, il n'y a que trois principes de base, alors gardez cela à l'esprit.
Le fichier CircleCI est composé de plusieurs composants. Vérifions un par un.
Bien que cela n'ait rien à voir avec la description du fichier, le référentiel github est traité comme un seul projet dans CircleCI.
La plus petite unité d'un fichier. Plus précisément, il s'agit d'une liste de commandes à exécuter par CircleCI. (Bien qu'il s'agisse de la plus petite unité du concept de CircleCI, les étapes ne sont qu'une liste, elles peuvent donc s'étendre sur plusieurs lignes). À propos, il existe deux types d'étapes, l'étape d'exécution et l'étape d'intégration. La première est définie par l'utilisateur et la seconde est une étape spéciale préparée par CircleCI.
Un groupe d'étapes est appelé un travail.
Fait référence à l'environnement de l'étape de travail. Par exemple, s'il s'agit de «Docker Executor», exécutez les étapes dans l'environnement Docker. En plus de Docker, il y a "macOS Executor", "Machine Executor", "windows Executor", etc., et vous pouvez librement définir l'environnement.
C'est une règle d'ordre d'exécution des travaux. Fondamentalement, il y a plusieurs travaux dans un fichier et le flux de travail définit l'ordre dans lequel ils sont exécutés. Il peut également être exécuté en parallèle. Les flux de travail ont également des caches, des espaces de travail et des artefacts en tant que mécanismes de persistance des données. Prenons un exemple concret.
Par exemple, supposons que vous ayez un fichier qui est exécuté dans l'ordre "A job-> B job-> C job". Lorsque "Un travail" est terminé, supposons que vous souhaitiez reprendre le contenu de ce "travail A" et effectuer le "travail B". Cette méthode de partage des données du «travail A» au «travail B» est appelée *** espace de travail ***. Ensuite, supposons qu'une erreur se produise dans "tâche C" lors de l'exécution du fichier dans la procédure ci-dessus. Dans un tel cas, il est nécessaire d'exécuter à nouveau à partir de 1 après modification du fichier, c'est-à-dire à partir de "A job". Si "A job" ou "B job" comprend une étape pour lire un fichier lourd, cela prendra du temps. Dans un tel cas, la méthode de reprise du fichier qui a été effectuée la première fois et de partage des données afin que cela puisse être fait en douceur à partir de la deuxième fois est appelée *** cache ***. Et si vous exécutez le fichier comme ci-dessus, de nombreuses données sur le résultat de l'exécution du travail seront générées. Le stockage qui stocke les résultats de l'exécution de ce travail est appelé *** artefact ***. Cela peut être un peu déroutant, mais rappelons-nous.
En fait, vous pouvez créer plusieurs flux de travail et il existe un pipeline pour les assembler. Fondamentalement, CircleCI ne peut en avoir qu'un (.circleci / config.yml) pour un projet. En d'autres termes, il n'y a qu'un seul pipeline pour un projet, qui est le plus grand concept du fichier qui organise le flux de travail. * À propos, CircleCI implémentera de nouvelles fonctions basées sur le concept de ce pipeline.
ⅶ. Orbs Orbs est un ensemble d'une série de processus tels que des étapes et des tâches qui peuvent être utilisés à divers endroits. Vous pouvez créer des orbes vous-même, mais vous pouvez utiliser ceux publiés dans CircleCI orb Registry.
Cet article sera coupé ici. Dans le prochain article, j'écrirai un fichier spécifique et exécuterai un test automatisé.
Fondamentalement, contrairement à Docker, il était facile de comprendre le flux général et les rôles. Cependant, quand il s'agit d'écrire des fichiers à l'avenir, c'est un peu pénible. De plus, CircleCI a un peu de difficulté car il y a peu de matériaux japonais. Je continuerai à faire de mon mieux.
[Livre] "Introduction à la pratique CircleCI ── La vitesse et la qualité de développement apportées par CI / CD Masato Urai (Auteur), Tomoya Otake (Auteur), Hirokuni Kim (Auteur)"
【qiita】 "Je viens de démarrer CircleCI, donc je l'ai résumé d'une manière facile à comprendre"
Recommended Posts