[DOCKER] [Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI

Hintergrund

Ich möchte einen Job in einem eigens entwickelten Unternehmen von unerfahrenen bekommen. Ich habe mich entschlossen, CircleCI zu studieren, um ein gutes Portfolio zu erstellen.

Der aktuelle Wissensstand ist die einfache Anwendungsentwicklung mit Ruby on Rails, die Versionsverwaltung mit git und die Bereitstellung mit heroku. Ich hoffe, es wird denjenigen helfen, die darüber nachdenken, CircleCI in Zukunft auf der gleichen Ebene wie ihr eigenes Memorandum auszuprobieren.

Endziele

Verstehe, was CircleCI ist. Unterdrücken Sie die Grundlage für das Schreiben von CircleCI.

【Verwandter Artikel】 [CircleCI von 0 herausfordern] Lernen Sie die Grundlagen von CircleCI [CircleCI von 0 herausfordern] Erstellen Sie einen automatisierten Test (Rails6.0 / mysql8.0 / Rspec) [CircleCI von 0 herausfordern] AWS ECR / ECS verstehen [CircleCI von 0 herausfordern] Automatisch mit CircleCI / AWS (ECR / ECS) bereitstellen

Inhaltsverzeichnis

① Über CI / CD (2) Gründe für die Wahl des CircleCI-Vergleichs anderer Tools ③Rauer Testfluss mit CircleCI ④ Informationen zur Beschreibungsmethode der CircleCI-Einstellungsdatei

Lass uns schnell gehen.

① Über CI / CD

Bedeutung von CI / CD

CI (Continuous Integration) bedeutet kontinuierliche Integration, und CD (Continuous Delivery / Deployment) bedeutet kontinuierliche Bereitstellung oder kontinuierliche Bereitstellung. Genauer gesagt handelt es sich um einen Mechanismus, der "beim Pushen auf ein Versionsverwaltungssystem wie git automatisch getestet wird und wenn der Test gelöscht wird, automatisch bereitgestellt wird".

Warum CI / CD Aufmerksamkeit erregt

(2) Gründe für die Wahl des CircleCI-Vergleichs anderer Tools

Es gibt einige bekannte CI / CD-Tools. Vergleichen wir sie kurz und überlegen, warum CircleCI ausgewählt wird.

Jekins Ein typisches lokales CI / CD-Tool. Es ist Open Source und hat eine hervorragende Erweiterung mit Plug-Ins.

CircleCI Saas Typ CI / CD-Tool. Es funktioniert auch gut mit GitHub und empfiehlt die Verwendung von Docker, das in den letzten Jahren explosionsartig gewachsen ist. Sie können auch eine Verbindung über ssh herstellen.

Travis CI Dies ist auch ein CI / CD-Tool vom Typ Saas. Seine Stärke ist, dass es eine Vielzahl von Sprachen unterstützt und CI mit einfachen Einstellungen einführen kann.

Gitlab Gits CI-Tool, das für Versionsverwaltungssoftware bekannt ist. Anscheinend hat es nicht so viel Anteil an der Branche, aber es könnte in Zukunft wachsen.

Die oben genannten gelten als die bekanntesten Werkzeuge. In Bezug auf die Auswahlkriterien entscheiden Sie zunächst, ob es sich um einen On-Premise-Typ oder einen Saas-Typ handelt. Für die persönliche Entwicklung ist der Saas-Typ, der niedrige Betriebskosten hat, definitiv besser. Wenn es sich um einen Saas-Typ handelt, spielt es keine Rolle, welchen Sie verwenden, aber ich persönlich wähle CircleCI, das derzeit in der Branche am beliebtesten ist, und empfehle den Docker der Content-Technologie, der in den letzten Jahren Aufmerksamkeit erregt hat. Ich denke das ist das Beste. (* Natürlich, wenn Sie Docker für die Entwicklungsumgebung verwenden)

③Rauer Testfluss mit CircleCI

Der Ablauf selbst ist sehr einfach.

  1. Erstellen Sie ein circleCI-Konto (es ist derzeit einfacher, eine Verknüpfung mit einem Github-Konto herzustellen).
  2. Verknüpfen Sie mit github, nachdem Sie ein Konto erstellt haben
  3. Wählen Sie ein Repository aus github aus
  4. Erstellen Sie (.circleci / config.yml) im Stammverzeichnis des ausgewählten Repositorys
  5. Schreiben Sie Code für CircleCi
  6. Zum Git drücken
  7. Starten Sie den automatischen Test
  8. Das Ergebnis spiegelt sich in der Pull-Anforderung wider

Sobald Sie den CircleCI-Code geschrieben haben, unterscheidet er sich nicht mehr vom üblichen Entwicklungsablauf mit git. Ich denke also, dass der Hals der Beschreibungsteil der Datei sein wird (.circleci / config.yml).

④ Informationen zur Beschreibungsmethode der CircleCI-Einstellungsdatei

Über YAML-Dateien

Alle CircleCI-Einstellungen werden in der YAML-Datei beschrieben. Was ist eine YAML-Datei? Dieses Format beschreibt Daten auf dieselbe Weise wie XML und JSON. YAML ist übrigens eine Abkürzung für (yaml ist keine Markup-Sprache). Ich habe das Gefühl, mich selbst zu definieren.

Und das Merkmal von YAML ist, dass es intuitiv und leicht zu verstehen ist. Es besteht hauptsächlich aus den folgenden drei Beschreibungsmethoden.

yaml


#① Liste → Anordnung
- 1
- 2
- 3

#
name: a
id :  1
text: ccc

#③ Skalar → Außer Liste und Karte
true false
null
123

Natürlich ist die eigentliche Datei etwas komplizierter, da das Obige über mehrere Zeilen geschrieben ist. Es gibt jedoch nur drei Grundlagen. Denken Sie also daran.

Über die Grundstruktur der Datei

Die CircleCI-Datei besteht aus mehreren Komponenten. Lassen Sie uns eins nach dem anderen überprüfen.

I. Projekt

Obwohl es nichts mit der Dateibeschreibung zu tun hat, wird das Github-Repository in CircleCI als ein Projekt behandelt.

Ii. Schritt

Die kleinste Einheit in einer Datei. Insbesondere handelt es sich um eine Befehlsliste, die von CircleCI ausgeführt werden soll. (Obwohl es sich um die kleinste Einheit im Konzept von CircleCI handelt, sind die Schritte nur eine Liste, sodass sie mehrere Zeilen umfassen können.) Übrigens gibt es zwei Arten von Schritten: Schritt ausführen und Einbauschritt. Ersterer wird vom Benutzer definiert, letzterer ist ein spezieller Schritt, der von CircleCI erstellt wurde.

Iii. Job

Eine Gruppe von Schritten wird als Job bezeichnet.

Ⅳ Executor

Bezieht sich auf die Jobschrittumgebung. Wenn es sich beispielsweise um "Docker Executor" handelt, führen Sie die Schritte in der Docker-Umgebung aus. Neben Docker gibt es "macOS Executor", "Machine Executor", "Windows Executor" usw., und Sie können die Umgebung frei einstellen.

Ⅴ Workflow

Angenommen, Sie haben eine Datei, die in der Reihenfolge "A-Job-> B-Job-> C-Job" ausgeführt wird. Angenommen, Sie möchten nach Abschluss des "A-Jobs" den Inhalt des "A-Jobs" übernehmen und den "B-Job" ausführen. Diese Methode zum Teilen von Daten von "A-Job" zu "B-Job" wird als *** Arbeitsbereich *** bezeichnet. Nehmen wir als nächstes an, dass beim Ausführen der Datei in der obigen Prozedur ein Fehler in "C job" auftritt. In einem solchen Fall muss nach dem Ändern der Datei, dh von "A job", erneut von 1 ausgeführt werden. Wenn "A-Job" oder "B-Job" einen Schritt zum Lesen einer schweren Datei enthält, dauert es einige Zeit. In einem solchen Fall wird die Methode zum Teilen der Daten, damit die beim ersten Mal erstellte Datei nach dem zweiten Mal reibungslos übernommen werden kann, als *** Cache *** bezeichnet. Wenn Sie die Datei wie oben ausführen, werden viele Daten zum Ergebnis der Jobausführung generiert. Der Speicher, in dem die Ergebnisse der Ausführung dieses Jobs gespeichert sind, wird als *** Artefakt *** bezeichnet. Es mag etwas verwirrend sein, aber denken wir daran.

Ⅵ Pipeline

Tatsächlich können Sie mehrere Workflows erstellen, und es gibt eine Pipeline, um sie zusammenzustellen. Grundsätzlich kann CircleCI nur eine (.circleci / config.yml) für ein Projekt haben. Mit anderen Worten, es gibt nur eine Pipeline für ein Projekt. Dies ist das größte Konzept in der Datei, das den Workflow organisiert. * CircleCI wird übrigens neue Funktionen implementieren, die auf dem Konzept dieser Pipeline basieren.

ⅶ. Orbs Orbs ist ein Paket aus einer Reihe von Prozessen wie Schritten und Jobs, die an verschiedenen Orten verwendet werden können. Sie können Orbs selbst erstellen, aber Sie können die in CircleCI orb Registry veröffentlichten verwenden.


Dieser Artikel wird hier geschnitten. Im nächsten Artikel werde ich eine bestimmte Datei schreiben und einen automatisierten Test durchführen.

Zusammenfassung / Eindruck

Grundsätzlich war es im Gegensatz zu Docker leicht, den allgemeinen Ablauf und die Rollen zu verstehen. Wenn es jedoch darum geht, in Zukunft Dateien zu schreiben, ist das ein bisschen schmerzhaft. Außerdem hat CircleCI einige Schwierigkeiten, da es nur wenige japanische Materialien gibt. Ich werde weiterhin mein Bestes geben.

Referenz

[Buch] "Einführung in die CircleCI-Praxis ──Beide Entwicklungsgeschwindigkeit und -qualität von CI / CD Masato Urai (Autor), Tomoya Otake (Autor), Hirokuni Kim (Autor)"

【qiita】 "Ich habe gerade CircleCI gestartet und es daher leicht verständlich zusammengefasst"

Recommended Posts

[Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI
[Zusammenfassung der technischen Bücher] Zusammenfassung der Lektüre "Lernen Sie Docker aus den Grundlagen"
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
Über die Grundlagen der Android-Entwicklung
Die Grundlagen von SpringBoot + MyBatis + MySQL
Verstehen Sie die Grundlagen von Android Audio Record
[CircleCI von 0 herausfordern] AWS ECR / ECS verstehen
[Ruby] Von den Grundlagen bis zur Injektionsmethode
Jetzt habe ich die Grundlagen von RecyclerView zusammengefasst
[Docker von 0 herausfordern] Übersicht und Bedingungen von Docker
Die Geschichte von RxJava, das unter NoSuchElementException leidet
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
Rückblick auf die Grundlagen von Java
Finden Sie den Unterschied von einem Vielfachen von 10
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
[Ruby] Zusammenfassung der Klassendefinitionen. Beherrsche die Grundlagen.
Hat sich der Inhalt von useBodyEncodingForURI von Tomcat8 geändert?
Ich habe die Grundlagen der Zeicheneingabe verstanden
Ein junger Ingenieur lernte JUnit aus den Grundlagen
Grundlagen von Ruby
Lernen Sie den rudimentären Mechanismus und die Verwendung von Gradle 4.4 kennen
Lernen Sie beim Erstellen eines WEB-Servers die Einführung in die Entwicklung von WEB-Anwendungen anhand der Grundlagen
[SPA-Entwicklung mit Rails x Vue] Lernen Sie die Grundlagen von Vue.js (Übersicht über vue.js, Vorlagensyntax)
ArrayList und die Rolle der Schnittstelle aus List
Von der Einführung des Geräts bis zur Erstellung der Benutzertabelle
Band 3 Arten von Docker Compose aus dem Zweck betrachtet
Wie schreibe ich Scala aus der Perspektive von Java
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
Über die Nützlichkeit von Monaden aus einer objektorientierten Perspektive
Java-Sprache aus der Sicht von Kotlin und C #
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
Extrahieren Sie ein bestimmtes Element aus der Liste der Objekte
[Ruby] Klassenverschachtelung, Vererbung und die Grundlagen des Selbst
Eine Aufzeichnung über das Studium des Spring Framework von Grund auf neu
Die Welt der Clara-Regeln (2)
Beurteilung des Kalenders
Die Welt der Clara-Regeln (4)
Die Welt der Clara-Regeln (1)
Die Welt der Clara-Regeln (3)
Grundlagen der Try-with-Resources-Anweisung
Die Welt der Clara-Regeln (5)
Die Idee der schnellen Sortierung
Die Idee von jQuery
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Lernen aus den Grundlagen Lehrbuch für künstliche Intelligenz Kapitel 3 Kapitelende Probleme
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Die Geschichte des Werfens von BLOB-Daten von EXCEL in DBUnit
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
Lernen aus den Grundlagen Lehrbuch für künstliche Intelligenz Kapitel 4 Kapitelende Probleme
Aus der Gewohnheit, Wertobjekte für ein objektorientiertes Verständnis zu schaffen
Aggregieren Sie die Anzahl der Personen alle 10 Jahre aus Liste <Person>
Lernen aus den Grundlagen Lehrbuch für künstliche Intelligenz Kapitel 2 Kapitelende Probleme