[LINUX] Was ist Jenkins? ] Die Installation und die Verwendung des automatischen Tests / der automatischen Bereitstellung werden auf einfachste Weise weltweit erklärt

Warum haben Sie sich entschieden, diesen Artikel zu schreiben?

Als freiberuflicher Ingenieur nehme ich an einem Projekt mit Jenkins teil, aber nach dem Studium wollen wir das Wissen verbreiten, indem wir einen Qiita-Artikel schreiben! Also habe ich beschlossen, es zu schreiben. Dieser Artikel steht kurz vor dem Schreiben, wird jedoch von Zeit zu Zeit aktualisiert. https://www.udemy.com/course/jenkins-from-zero-to-hero/learn/lecture/19367702 Während ich aus udemys Video lerne, schreibe ich während der Recherche, daher würde ich mich sehr freuen, wenn Sie auf Fehler hinweisen könnten.

Zielgruppe Leser

Menschen, die sich für Jenkins bei der Arbeit entschieden haben, aber keine Ahnung haben, wie sie es verwenden sollen Was ist Jenkins? Menschen Mac-Benutzer

Was ist Jenkins?

CI-Tool

Was ist ein CI-Tool?

CI steht für Continuous Integration, was wörtlich übersetzt als Continuous Integration übersetzt wird. Es wird auch als kontinuierliche Integration bezeichnet. Wenn Sie die Prüfung zum Ingenieur für grundlegende Informationstechnologie abgelegt haben, haben Sie möglicherweise nur die Station gesehen.

CircleCI, das in letzter Zeit populär geworden ist, ist auch eines der CI-Tools. Übrigens heißt es, dass alles, was Sie mit Jenkins tun können, mit CircleCI erledigt werden kann.

Es gibt jedoch immer noch viele Unternehmen, die Jenkins einsetzen, daher denke ich nicht, dass der Erwerb von Jenkins-Kenntnissen derzeit ein großer Kostenfaktor sein wird.

Ziel der CI-Tools ist es, die Entwicklungsgeschwindigkeit und Softwarequalität aufrechtzuerhalten, indem die Teile, die über Commit → Build → Test automatisiert werden können, effizient ausgeführt werden.

Übrigens steht CD, die oft als verwandtes Wort erscheint, für kontinuierliche Bereitstellung und ist ein aufwärtskompatibles Konzept von CI. Nicht nur Commit-> Build-> Test, sondern auch die nachfolgende Release-> Bereitstellung wird für eine effiziente Entwicklung automatisiert.

Vorteile von Jenkins

Mit Jenkins können Sie Builds und Tests automatisieren. Und wenn ein Build oder Test fehlschlägt, kann Jenkins ihn sofort überprüfen, was zur Früherkennung von Fehlern führen und zur Verbesserung der Softwarequalität beitragen kann.

Nachteile von Jenkins

Es braucht Zeit, um Jenkins zu lernen und eine Jenkins-Umgebung aufzubauen. Es scheint, dass viele Unternehmen jetzt zu CircleCI wechseln, sodass das, was Sie gelernt haben, möglicherweise verschwendet wird.

So installieren Sie Jenkins

Installieren Sie mit Homebrew. Homebrew ist eine Software zum Installieren von Software und Verwalten von installierter Software. Wenn Sie einen Mac verwenden, haben Sie ihn wahrscheinlich installiert. Wenn Sie ihn jedoch noch nicht installiert haben, geben Sie den folgenden Befehl in das Terminal ein, um ihn zu installieren.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Geben Sie dann den Befehl ein, um Jenkins mit Homebrew auf dem Terminal zu installieren. (Es wird einige Zeit in Anspruch nehmen)

brew install jenkins

Geben Sie nach Abschluss der Installation den Befehl zum Starten von Jenkins auf dem Terminal ein. (Da es sich um einen häufig verwendeten Befehl handelt, registriere ich ihn in clipy.)

launchctl start homebrew.mxcl.jenkins

Nachdem Jenkins gestartet wurde, öffnen Sie einen Browser und geben Sie "localhost: 8080" ein. Da Jenkins ein http-Server ist, greifen wir mit der Portnummer 8080 darauf zu.

スクリーンショット 2020-08-31 0.50.58.jpg

Nach einer Weile erscheint der folgende Bildschirm.

スクリーンショット 2020-08-31 0.51.29.jpg

Ich habe das Passwort in den rot dargestellten Pfad eingegeben und wurde aufgefordert, es einzugeben. Wenn Sie auf dem Terminal Folgendes tun, wird das Kennwort angezeigt.

cat Der Pfad wird rot angezeigt

Nach Eingabe des Passworts wird der folgende Bildschirm angezeigt.

スクリーンショット 2020-08-31 0.54.14.jpg

Sie werden gefragt, ob Sie das empfohlene Plug-In installieren oder das Plug-In auswählen und installieren möchten. Wenn Sie links auswählen, wird der folgende Bildschirm angezeigt und die empfohlene Plug-In-Installation wird gestartet.

スクリーンショット 2020-08-31 0.55.28.jpg

Nach Abschluss der Installation wird der folgende Bildschirm angezeigt. Geben Sie alle ein und drücken Sie Speichern und fahren Sie unten rechts fort. Denken Sie daran, was Sie eingeben, da es verwendet wird, um sich bei Jenkins anzumelden. スクリーンショット 2020-08-31 0.59.31.jpg

Wenn die Eingabe abgeschlossen ist, wird der folgende Bildschirm angezeigt. Sie werden gefragt, ob Sie die URL ändern möchten. Ändern Sie sie also nach Ihren Wünschen. Ich benutze es zum Lernen, also habe ich es nicht geändert. Klicken Sie auf Speichern und Fertig stellen. スクリーンショット 2020-08-31 1.01.53.jpg

Der folgende Bildschirm wird angezeigt. Klicken Sie also auf Start mit Jenkins. スクリーンショット 2020-08-31 1.03.05.jpg

Wenn der folgende Bildschirm angezeigt wird, ist die Installation von Jenkins abgeschlossen. スクリーンショット 2020-08-31 1.03.37.jpg

So verlassen Sie Jenkins

Ich glaube, Sie haben Jenkins während der Installation mit dem folgenden Befehl gestartet.

launchctl start homebrew.mxcl.jenkins

Wenn Sie nach dem Start den Befehl end nicht in Terminal eingeben, wird er weiterhin gestartet. Geben Sie daher den folgenden Befehl in terminal ein, um zu beenden. (Da es sich um einen häufig verwendeten Befehl handelt, registriere ich ihn in clipy.)

launchctl stop homebrew.mxcl.jenkins

Ich werde es beenden, wenn ich damit fertig bin.

So deinstallieren Sie Jenkins vollständig

Da ich Jenkins mit Brew installiert habe, deinstalliere ich es auch mit Brew. Geben Sie den folgenden Befehl auf dem Terminal ein, um ihn zu deinstallieren.

brew uninstall jenkins

Allein damit bleiben jedoch verschiedene Daten wie der beim Starten von Jenkins festgelegte Benutzername und das Kennwort erhalten. Wenn Sie also Jenkins erneut installieren, werden Sie mit diesen Informationen angemeldet. Wenn Sie es löschen möchten, können Sie es vollständig löschen, indem Sie den folgenden Befehl auf dem Terminal eingeben. Unter dem Benutzerverzeichnis befindet sich ein Benutzernamenverzeichnis und darunter ein .jenkins-Verzeichnis. Löschen Sie es daher mit dem Befehl rm -rf. (Der Pfad ist für jede Person unterschiedlich. Bitte lesen Sie ihn.)

cd /Users/Nutzername/.jenkins
cd ../
rm -rf .jenkins

2020/09/02

Versuchen wir es mit Jenkins

Jenkins hat das Konzept von Jobs. Ein Job hier ist eine Gruppe von automatisierten Prozeduren. Ich denke, dass sich das Verständnis verbessern wird, wenn Sie versuchen, einen zu erstellen. Lassen Sie uns also sofort einen Job erstellen.

Klicken Sie auf dem Bildschirm unten auf Neuen Job erstellen. スクリーンショット 2020-09-02 22.24.32.jpg

Zum Bildschirm zum Erstellen von Jobs verschoben.

スクリーンショット 2020-09-02 22.26.22.jpg

Geben Sie einen Artikelnamen ein, der den Jobnamen darstellt. Geben Sie einen beliebigen Namen ein.

スクリーンショット 2020-09-02 22.34.05.jpg

Geben Sie einen Namen Ihrer Wahl ein und wählen Sie Build Freestyle Project. Es ist ein kleines altes Tool, daher habe ich ein paar Macken bei der Arbeit mit der Benutzeroberfläche.

[Tips]
Wenn Sie ein Freestyle-Projekt erstellen, können Sie die grundlegendsten Jobs erstellen.
Beliebiges SCM(source code manager:Github oder Subversion)Quellcode von
Sie können es abrufen und das Projekt auf jedem Build-System erstellen.
Außerdem kann es für verschiedene beliebige Automatisierungen verwendet werden.
Ich bin mir immer noch nicht sicher, was die anderen Gegenstände sind, deshalb werde ich sie später erklären.
Diesmal ist es zum Testen, also in diesem Freestyle-Projekt
"Ich bin der allererste Job bei Jenkins"
Führen Sie ein Shell-Skript aus, das angezeigt wird.

Klicken Sie unten links auf OK, um den folgenden Bildschirm anzuzeigen.

スクリーンショット 2020-09-02 22.34.26.jpg

Es gibt verschiedene Einstellungen, aber diesmal möchte ich die Zeichenfolge mithilfe eines Shell-Skripts anzeigen. Daher verwende ich die meisten Einstellungen nicht.

Wenn Sie nach unten scrollen, gibt es ein Element namens "Erstellen". Wählen Sie "Shell ausführen" unter "Build-Prozedur hinzufügen".

スクリーンショット 2020-09-02 22.36.48.jpg

Anschließend wird ein Formular zur Eingabe von Shell-Befehlen angezeigt. Geben Sie Folgendes ein.

echo "Ich bin der allererste Job bei Jenkins"

スクリーンショット 2020-09-02 22.40.03.jpg

Wenn Sie fertig sind, klicken Sie auf Speichern.

スクリーンショット 2020-09-02 22.40.56.jpg

Sie haben jetzt Ihren ersten Job erstellt. Klicken Sie dann links im Menü auf Build ausführen. Diese Operation wird als "Erstellen eines Jobs" bezeichnet.

スクリーンショット 2020-09-02 22.41.56.jpg

Beim Erstellen des Jobs wurde ● </ font> # 1 </ u> im Erstellungsverlauf erstellt. Dies repräsentiert das Build-Ergebnis. Es bedeutet ● </ font>, aber wenn es ● (blau) </ font> ist, ist der Build erfolgreich und ● ( Rot) </ font> zeigt einen Buildfehler an. Wenn Sie den Build in der Mitte abbrechen, lautet er ● (grau) </ font>. Da \ # 1 ein Link ist, klicken Sie darauf.

スクリーンショット 2020-09-02 22.50.36.jpg

Anschließend können Sie die Erstellungszeit überprüfen und im Menü auf der linken Seite verschiedene Dinge für das Erstellungsergebnis überprüfen. Detaillierte Informationen zur Erstellungszeit finden Sie unter "Konsolenausgabe". Klicken Sie also, um sie zu öffnen.

スクリーンショット 2020-09-02 22.57.01.jpg

Dies zeigt das Protokoll, als der Job erstellt wurde. In der zweiten Zeile von unten steht "Ich bin der allererste Job in Jenkins". Mit anderen Worten, Sie können bestätigen, dass das im Formular eingegebene Shell-Skript erfolgreich ausgeführt wurde.

Die tatsächliche automatische Erstellung und der automatische Test erfordern etwas kompliziertere Einstellungen. Dies ist jedoch der allgemeine Ablauf beim Erstellen eines Jobs.

Sie können zur oberen Seite zurückkehren, indem Sie oben links auf das Jenkins-Banner klicken.

スクリーンショット 2020-09-05 12.24.26.jpg

Sie können sehen, dass der Job erstellt wurde und sich die Anzeige geändert hat. Der Jobname des zuvor erstellten Jobs wird angezeigt. Sie können S und W auf der linken Seite sehen.

Für S wird ein farbiges ● angezeigt. Repräsentiert das endgültige Build-Ergebnis. ● </ font> erfolgreich ● </ font> schlägt fehl ● </ font> wurde nicht ausgeführt oder abgebrochen

W kann herausfinden, wie viele der neuesten erfolgreich waren. : sonnig: sind alle erfolgreich : teilweise_sunny: ist ein wenig erfolgreich : umbrella2: alles fehlgeschlagen

Lassen Sie uns den erstellten Job bearbeiten

Sie können den erstellten Job bearbeiten. Ich habe die Zeichenfolge im Shell-Skript angezeigt, aber jetzt verwenden wir das Datum des Shell-Befehls, um das Datum anzuzeigen, und den whoami-Befehl, um meinen Benutzernamen zu kennen.

Wählen Sie auf der oberen Seite einen Job aus und klicken Sie in der linken Menüleiste auf Einstellungen.

スクリーンショット 2020-09-05 12.32.54.jpg

Schreiben Sie das Shell-Skript wie folgt um.

Vor der Korrektur

echo "Ich bin der allererste Job bei Jenkins"

Überarbeitet

echo "$(whoami)Herr Hallo! Datum und Uhrzeit von heute$(date)ist"

スクリーンショット 2020-09-05 12.40.17.jpg

Klicken Sie nach dem Umschreiben auf Speichern, um den Build auszuführen, und versuchen Sie, die Konsolenausgabe aus dem neuesten Build-Ergebnis zu öffnen.

スクリーンショット 2020-09-05 12.41.14.jpg

Sie können bestätigen, dass Sie den Job bearbeiten konnten.

In welchem Verzeichnis wird ein Job ausgeführt, wenn ich ihn in Jenkins ausführe?

Wenn Sie Jenkins auf Ihrem Mac installiert haben, wird der Job im folgenden Verzeichnis ausgeführt:

/Users/Nutzername/.jenkins/workspace/Job, der Zeichen in der Shell ausgibt

Sie können dieses Verzeichnis anzeigen, indem Sie den Befehl pwd ausführen, der das aktuelle Verzeichnis im Shell-Skript Ihres Jobs anzeigt.

Es ist anders, wenn Sie Jenkins unter Amazon Linux von EC2 unter AWS oder Jenkins unter Linux von VirtualBox erstellen. Wenn Sie es nicht wissen, können Sie dies überprüfen, indem Sie ein Shell-Skript erstellen und erstellen, das pwd in Ihrem Job ausführt.

Unter Mac ist der Bereich unter dem Verzeichnis .jenkins ein versteckter Ordner. Sie müssen ihn daher so einstellen, dass der versteckte Ordner angezeigt wird, wenn Sie ihn mit dem Finder anzeigen.

Wo werden Jenkins Jobdaten gespeichert?

Wenn Sie Jenkins auf Ihrem Mac installiert haben, werden die Auftragsdaten im folgenden Verzeichnis gespeichert.

/Users/Nutzername/.jenkins/jobs/Job, der Zeichen in der Shell ausgibt

Sie können Protokolle auch direkt von hier erhalten. Wenn Sie damit herumspielen, kann Jenkins die Jobdaten möglicherweise nicht lesen und es kann zu einem Fehler kommen. Sie sollten daher erst dann damit spielen, wenn Sie sich daran gewöhnt haben. (Geschichte erleben)

Lassen Sie uns keinen Job in Jenkins aufbauen

Bis zu diesem Zeitpunkt gab es nur ein Erfolgsmuster, daher werde ich versuchen, absichtlich zu scheitern. Wählen Sie einen Job aus und gehen Sie zu dem Bildschirm, auf dem Sie das Shell-Skript über die Einstellungen eingeben können.

Löschen Sie das "" am Ende.

Vor der Korrektur

echo "$(whoami)Herr Hallo! Datum und Uhrzeit von heute$(date)ist"

Überarbeitet

echo "$(whoami)Herr Hallo! Datum und Uhrzeit von heute$(date)ist

スクリーンショット 2020-09-05 13.08.38.jpg

Klicken Sie auf Speichern und dann auf Build ausführen.

スクリーンショット 2020-09-05 13.27.21.jpg

Sie können sehen, dass der Build-Verlauf rot geworden ist. Das heißt, der Build ist fehlgeschlagen. In diesem Fall weiß ich, warum der Build fehlgeschlagen ist, aber lassen Sie uns überprüfen, warum der Build fehlgeschlagen ist. Folgen Sie dem rötlichen Link aus dem Build-Verlauf und klicken Sie auf Konsolenausgabe.

スクリーンショット 2020-09-05 13.32.24.jpg

Sie können die folgenden Informationen aus dem Protokoll lesen

Welche Zeile hat den Fehler

/var/folders/sp/s32xwxcx69343zl_szqw02kw0000gn/T/jenkins13410237169821088770.sh: line 2: unexpected EOF while looking for matching `"'

Warum ist der Fehler aufgetreten?

Build step 'Shell ausführen' marked build as failure

Das Ergebnis schlägt fehl

Finished: FAILURE

Wenn der Build fehlschlägt, überprüfen Sie zuerst die Konsolenausgabe, um die Ursache zu ermitteln.

Da das Shell-Skript am Ende kein "" enthält, stellen Sie es wieder her und führen Sie den Build erneut aus.

Vor der Korrektur

echo "$(whoami)Herr Hallo! Datum und Uhrzeit von heute$(date)ist

Überarbeitet

echo "$(whoami)Herr Hallo! Datum und Uhrzeit von heute$(date)ist"

スクリーンショット 2020-09-05 13.36.51.jpg

スクリーンショット 2020-09-05 13.37.31.jpg

Jetzt wird derjenige, der nicht gebaut werden konnte, wieder erfolgreich sein.

Erstellen wir einen Job, der ein aus Jenkins erstelltes Shell-Skript aufruft

Bisher habe ich das Shell-Skript direkt auf Jenkins geschrieben, aber jetzt rufen wir das erstellte Shell-Skript auf.

"Aber wo legst du das Shell-Skript ab?"

Jenkins hat das Konzept des Arbeitsbereichs. Sie können mit Jenkins lesen, was Sie in diesen Arbeitsbereich gestellt haben. Seien Sie versichert, ich werde alles in den folgenden Schritten erklären.

"Warum muss ich ein Shell-Skript aufrufen?"

Wenn Sie sich an dieses Verfahren erinnern, können Sie Ihren Arbeitsbereich nutzen und Anwendungen effektiver gestalten.

Erstellen Sie sofort einen neuen Job.

スクリーンショット 2020-09-05 14.33.50.jpg

Nennen Sie den Job "Job zum Aufrufen des Shell-Skripts", machen Sie ihn zu einem Build eines Freestyle-Projekts und klicken Sie auf OK.

スクリーンショット 2020-09-05 14.35.56.jpg

Klicken Sie auf Build-Prozedur hinzufügen → Shell ausführen und dann auf Speichern.

Zu diesem Zeitpunkt ist das Shell-Skriptformular leer und in Ordnung.

スクリーンショット 2020-09-05 14.36.49.jpg

Klicken Sie auf den Arbeitsbereich. Wenn Sie entweder auf die im Menü links oder rechts angezeigte klicken, gelangen Sie zur gleichen Seite.

Wenn Sie Zweifel haben, wählen Sie bitte gemäß der Krapika-Theorie.

Leorio "Warum ist es in einem solchen Fall links?
In diesem Fall bin ich nicht auf der linken Seite, also bin ich nicht ruhig. "

Krapika "Sicher aus der Perspektive des Verhaltens, wenn Menschen sich verlaufen oder einen unbekannten Weg wählen
Es scheint, dass es viele Fälle gibt, in denen Sie unwissentlich die linke auswählen. "

クラピカ理論.jpg

スクリーンショット 2020-09-05 14.40.10.jpg

Wenn Sie den Arbeitsbereich öffnen, können Sie feststellen, dass der Arbeitsbereich nicht vorhanden ist. Es heißt Fehler, aber das ist normal.

Wenn Sie das Shell-Skript in den Arbeitsbereich einfügen, kann es von Jenkins aus ausgeführt werden. Die Spezifikation lautet jedoch, dass der Arbeitsbereich nur erstellt wird, wenn er einmal erstellt wurde.

Führen Sie den Build also einmal aus und öffnen Sie den Arbeitsbereich erneut.

スクリーンショット 2020-09-05 14.44.32.jpg

Wenn der Bildschirm wie oben aussieht, wurde der Arbeitsbereich erstellt.

Wo ist dieser Arbeitsbereich?

/Users/Nutzername/.jenkins/workspace/Job, der ein Shell-Skript aufruft

Es ist in.

Ich habe verschiedene Dinge ausprobiert, aber ich konnte die Skriptdatei nicht von Jenkins ablegen, also habe ich ein Shell-Skript im obigen Pfad von Finder erstellt. (Ich weiß nicht, ob Jenkins das kann, also erkläre ich es so)

Erstellen Sie eine script.sh-Datei im obigen Arbeitsbereich und beschreiben Sie den Inhalt wie folgt.

script.sh

#Gibt den verwendeten Shell-Typ aus
echo "(Die Shell, die Sie verwenden, ist "$SHELL ")"

#Name anzeigen
LASTNAME=$1 #Übergeben Sie den Namen als erstes Argument
FIRSTNAME=$2 #Übergeben Sie den Nachnamen als zweites Argument
NAME=$FIRSTNAME$LASTNAME #Fügen Sie den Vornamen und den Vornamen hinzu
echo "Hallo,$NAME"

Dieses Shell-Skript gibt den Namen basierend auf der verwendeten Shell und den Argumenten aus.

Nach der Erstellung kehren Sie zur Arbeit mit Jenkins zurück.

スクリーンショット 2020-09-05 15.04.12.jpg

Sie können auch die Existenz von script.sh auf Jenkins überprüfen. Wenn es nicht angezeigt wird, können Sie es überprüfen, indem Sie die Seite aktualisieren. Wenn es immer noch nicht angezeigt wird, liegt ein Fehler in dem Verzeichnis vor, in dem Sie das Shell-Skript erstellen.

Klicken Sie auf Auftragseinstellungen.

スクリーンショット 2020-09-05 15.07.40.jpg

Gib Folgendes ein:

sh script.sh Ryuken Yamamoto

Dies bedeutet, dass in einer Shell namens sh das erste Argument "Ryuken" und das zweite Argument "Yamamoto" an script.sh übergeben und ausgeführt werden.

Klicken Sie nach der Eingabe auf Speichern und dann auf Build ausführen.

スクリーンショット 2020-09-05 20.24.02.jpg

Wenn der Build-Verlauf ● </ font> lautet, ist er erfolgreich. Klicken Sie auf den neuesten Build-Verlauf und dann auf Konsolenausgabe.

スクリーンショット 2020-09-05 20.25.04.jpg

(Die Shell, die Sie verwenden, ist "/bin/zsh ")
Hallo, Yamamoto Ryûken Mr.

Wird angezeigt, ist es erfolgreich.

Sie haben jetzt einen Job erstellt, der ein Skript ausführt, das Sie in Ihrem Arbeitsbereich platziert haben.

Sie können dieses Kapitel hier beenden. Um sich jedoch an das Shell-Skript zu gewöhnen, ändern Sie das Jenkins-Shell-Skript, um eine Variable zu erstellen, und übergeben Sie es dann an script.sh.

Öffnen Sie die Einstellungen des Jobs und gehen Sie wie folgt vor:

Vor der Korrektur

sh script.sh Ryuken Yamamoto

Überarbeitet

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

※Hinweis

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

,

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

Wenn Sie nach und = ein Leerzeichen setzen, schlägt die Joberstellung fehl.

スクリーンショット 2020-09-05 21.27.52.jpg

Klicken Sie auf Speichern, um den Build auszuführen und den neuesten Build-Verlauf zu öffnen, um die Konsolenausgabe anzuzeigen.

スクリーンショット 2020-09-05 21.29.30.jpg

Das Ergebnis ist ähnlich.

Nutzen Sie die Jenkins-Build-Parametrisierung

Ich habe es oft ignoriert, aber zum ersten Mal möchte ich eine der Optionen "Build Parametrization" verwenden.

スクリーンショット 2020-09-05 21.46.17.jpg

Jetzt werden im Shell-Skript die Variablen FIRSTNAME und LASTNAME vorbereitet und die Werte festgelegt und verwendet.

スクリーンショット 2020-09-05 21.47.34.jpg

Parametrieren Sie diese zum Erstellen. Überprüfen Sie die Build-Parametrisierung.

スクリーンショット 2020-09-05 21.50.18.jpg

Wählen Sie dann eine Zeichenfolge unter Parameter hinzufügen.

スクリーンショット 2020-09-05 21.50.59.jpg

Anschließend wurde ein Feld zur Eingabe des Namens, des Standardwerts und der Beschreibung angezeigt.

スクリーンショット 2020-09-05 21.51.22.jpg

Geben Sie FIRSTNAME als Namen, Yamamoto als Standardwert und Nachname als Beschreibung ein.

スクリーンショット 2020-09-05 21.52.53.jpg

Sie haben jetzt eine Variable für Ihren Build parametrisiert. Als nächstes erstellen Sie eine andere.

Wählen Sie die Zeichenfolge erneut unter Parameter hinzufügen aus.

スクリーンショット 2020-09-05 21.54.14.jpg

Geben Sie LASTNAME als Namen, Ryuken als Standardwert und name als Beschreibung ein.

スクリーンショット 2020-09-05 21.55.06.jpg

Sie haben jetzt die beiden Variablen in Ihrem Build parametrisiert.

Entfernen Sie abschließend die unnötige Beschreibung aus dem Jenkins-Shell-Skript und schreiben Sie sie wie folgt neu.

Vor der Korrektur

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

Überarbeitet

sh script.sh $LASTNAME $FIRSTNAME

スクリーンショット 2020-09-05 21.58.32.jpg

Jetzt wird das Shell-Skript aktualisiert. Dies allein fühlt sich wie ein Vorteil an, ist aber nicht der einzige Vorteil. Hier sind die Vorteile einer echten Build-Parametrisierung. Klicken Sie auf Speichern.

スクリーンショット 2020-09-05 21.59.13.jpg

An diesem Punkt werden Sie feststellen, dass sich eine Anzeige geändert hat. Der Teil, der früher eine Build-Ausführung war, wurde in einen parametrisierten Build geändert.

Klicken wir gleich darauf.

スクリーンショット 2020-09-05 21.59.59.jpg

Die Build-Ausführung wurde sofort gestartet, als ich auf die Build-Ausführung geklickt habe. Durch Festlegen der Parametrisierung des Builds ist es jetzt möglich, den Wert der Variablen vor der Build-Ausführung zu ändern.

Klicken Sie auf Einmal erstellen, und öffnen Sie anschließend die Konsolenausgabe aus dem letzten Erstellungsverlauf.

スクリーンショット 2020-09-05 22.03.51.jpg

Die angezeigte Zeichenfolge ist dieselbe wie im vorherigen Kapitel. Kehren Sie dann zum Projekt → Mit Parametern erstellen zurück. Dieses Mal werde ich den Nachnamen und den Namen noch einmal machen.

スクリーンショット 2020-09-05 22.05.16.jpg

Klicken Sie auf Erstellen. Wenn Sie fertig sind, öffnen Sie die Konsolenausgabe aus dem neuesten Erstellungsverlauf.

スクリーンショット 2020-09-05 22.06.35.jpg

Sie können sehen, dass sich der angezeigte Name geändert hat. Durch Festlegen der Build-Parametrisierung ist es jetzt möglich, Variablen bei jeder Ausführung eines Builds zu ändern. Sie können auch Standardwerte festlegen. Dies ist eine nützliche Funktion, wenn Sie bei jeder Ausführung eines Builds Variablen ändern müssen.

Die Verwendung von Build-Parametern ist endlos. In diesem Kapitel ist es in Ordnung, wenn Sie feststellen, dass die Build-Parametrisierung auf verschiedene Arten verwendet werden kann.

Machen Sie Jenkins Build-Parametrisierung selektiv

Die Build-Parametrisierung kann ausgewählt und eine Zeichenfolge eingegeben werden. Schließen Sie alle Build-Parametrierungen einmal ab.

スクリーンショット 2020-09-05 22.18.42.jpg

Wählen Sie dann zusätzliche Parameter aus.

スクリーンショット 2020-09-05 22.19.12.jpg

Nehmen Sie Einstellungen vor, um den Nachnamen und den Vornamen gemäß dem folgenden Bild auswählbar zu machen. Sie können den Nachnamen aus "Yamamoto", "Katsumata" und "Bannai" auswählen. Sie können auf die gleiche Weise einen Namen erstellen und zwischen "Ryuken", "Kenta" und "Manabu" auswählen.

スクリーンショット 2020-09-05 22.20.39.jpg

Klicken Sie auf Speichern und dann auf Mit Parametern erstellen.

スクリーンショット 2020-09-05 22.23.23.jpg

Ich konnte bestätigen, dass der Nachname und der Vorname auswählbar sind. Ändern Sie den Nachnamen in "Bannai" und den Namen in "Manabu".

スクリーンショット 2020-09-05 22.24.18.jpg

cool. (Nachahmung eines ausländischen Lehrers)

Klicken Sie dann auf Erstellen und dann auf Konsolenausgabe aus dem letzten Erstellungsverlauf.

スクリーンショット 2020-09-05 22.25.23.jpg

Es wurde bestätigt, dass die ausgewählten Namen "Bannai" und "Manabu" angezeigt werden. Abgesehen davon ist Manab genauso alt wie ich und vier Monate auseinander.

Sie haben jetzt die Build-Parametrisierung selektiv gemacht.

Ein- / Ausblenden mit Jenkins Build-Parametrisierung

Früher habe ich gezeigt, welche Shell ich verwendet habe, aber da ich sie nicht jedes Mal anzeigen muss, werde ich die Build-Parametrisierung verwenden, um sie anzuzeigen oder auszublenden.

Wählen Sie in den Jobeinstellungen einen booleschen Wert unter Parameter hinzufügen aus. スクリーンショット 2020-09-05 22.36.48.jpg

Der Name ist SHOWSHELL, die Standardeinstellung ist deaktiviert, da ich sie ausblenden möchte, und die Beschreibung kann überprüft werden, um die von Ihnen verwendete Shell anzuzeigen. Wird besorgt.

スクリーンショット 2020-09-05 22.38.26.jpg

Klicken Sie auf Speichern.

Schreiben Sie als Nächstes die Datei script.sh im Arbeitsbereich neu, sodass die Shell angezeigt wird, wenn SHOWSHELL true ist (1), und die Shell nicht angezeigt wird, wenn SHOWSHELL false ist (0).

Vor der Korrektur

/Users/Nutzername/.jenkins/workspace/Job, der Zeichen in der Shell ausgibt/script.sh


#Gibt den verwendeten Shell-Typ aus
echo "(Die Shell, die Sie verwenden, ist "$SHELL ")"

#Name anzeigen
LASTNAME=$1 #Übergeben Sie den Namen als erstes Argument
FIRSTNAME=$2 #Übergeben Sie den Nachnamen als zweites Argument
NAME=$FIRSTNAME$LASTNAME #Fügen Sie den Vornamen und den Vornamen hinzu
echo "Hallo,$NAME"

Überarbeitet

/Users/Nutzername/.jenkins/workspace/Job, der Zeichen in der Shell ausgibt/script.sh


#Variablendefinition
LASTNAME=$1 #Übergeben Sie den Namen als erstes Argument
FIRSTNAME=$2 #Übergeben Sie den Nachnamen als zweites Argument
SHOWSHELL=$3 #Übergeben Sie dem dritten Argument ein Flag, ob die Shell gedruckt werden soll

#Gibt den verwendeten Shell-Typ aus
if [ "$SHOWSHELL" = "true" ]; then
	echo "(Die Shell, die Sie verwenden, ist "$SHELL ")"
fi

#Name anzeigen
NAME=$FIRSTNAME$LASTNAME #Fügen Sie den Vornamen und den Vornamen hinzu
echo "Hallo,$NAME"

Kehren Sie zur Arbeit mit Jenkins zurück und klicken Sie auf Mit Parametern erstellen.

スクリーンショット 2020-09-05 22.44.30.jpg

Dieses Mal wird die von mir verwendete Shell nicht mehr angezeigt. Klicken Sie einfach auf Erstellen, um die Konsolenausgabe aus dem neuesten Build-Verlauf anzuzeigen.

スクリーンショット 2020-09-05 22.48.09.jpg

Es wurde bestätigt, dass der bisher angezeigte Shell-Typ nicht mehr angezeigt wird.

Sie können es jetzt mithilfe der Build-Parametrisierung ein- oder ausblenden.

Autotest-Schienenanwendungen mit Jenkins

Bringen Sie die Rails-Anwendung von GitHub und erstellen Sie einen Job zum Testen und zur statischen Analyse in Jenkins.

So erstellen Sie eine Rails-Anwendung, wie installieren Sie Homebrew, eine Software zur Installation von rbenv und dessen rbenv, mit der die Version von ruby, rspec, die in automatischen Tests verwendet wird, und rubocop, das als statisches Analysetool verwendet wird, problemlos umgeschrieben werden kann Ich werde die Einführungsmethode weglassen. Auf dem folgenden GitHub sind persönliche Apps mit rspec und rubocop installiert, daher werde ich dies anhand eines Beispiels erläutern. https://github.com/EL93019205/stuctive.git Rails verwendet 5.2.3 und Ruby verwendet 2.5.1.

Es gibt einen Artikel, in dem die Vorgehensweise zum Installieren des Plug-Ins vorgestellt wird. Es ist jedoch kein Plug-In erforderlich, außer dem Standard-Plug-In. ~~ Das Plug-In ist total alt und nicht sehr nützlich ~~

Jetzt erstellen wir einen neuen Job.

スクリーンショット 2020-09-22 12.57.22.jpg

Jobname ist Schienen Muss der Einfachheit halber auf Englisch sein. Setzen Sie es diesmal auf "stuctive_auto_test".

Der Jobtyp sollte Freestyle Project Build sein.

スクリーンショット 2020-09-22 14.32.57.jpg

Klicken Sie auf OK, wenn Sie fertig sind. スクリーンショット 2020-09-22 13.00.03.jpg

Da es ein Element namens Quellcodeverwaltung gibt, werde ich es Git machen. Dann wird der folgende Bildschirm angezeigt.

スクリーンショット 2020-09-22 13.03.48.jpg

GitHub in der Repository-URL Was soll ich nun in die Repository-URL eingeben? Die Antwort ist auf GitHub.

Klicken Sie unter der folgenden URL (der URL zu meinem persönlichen App-Repository) auf die grüne Schaltfläche Code und dann auf das Symbol rechts neben der URL. Dieses Symbol steht für eine Kopie. Es ist ein öffentliches Repository, daher denke ich, dass jeder es kopieren und verwenden kann. https://github.com/EL93019205/stuctive スクリーンショット 2020-09-22 13.04.55.jpg

Fügen Sie dann "https://github.com/EL93019205/stuctive.git" wie unten gezeigt in die Repository-URL ein. スクリーンショット 2020-09-22 13.08.35.jpg

Dies ist die einzige Einstellung für die Quellcodeverwaltung. Sie müssen mit nichts anderem spielen.

Hast du gedacht: "Was? Das ist es?" Ja das ist es.

Wenn Sie über eine sichere Einstellung verfügen, müssen Sie möglicherweise Anmeldeinformationen festlegen. Wenn der zu automatisierende Zweig nicht Master ist, müssen Sie möglicherweise den zu erstellenden Zweig ändern, aber meine persönliche App befindet sich im öffentlichen Repository. Und da der Zweig, den Sie automatisieren möchten, Master ist, müssen Sie sich nicht damit anlegen.

Diese Einstellung klont die Rails-Anwendung in Ihren Arbeitsbereich.

Klicken Sie auf Einmal speichern. スクリーンショット 2020-09-22 13.16.03.jpg

Öffnen Sie den Arbeitsbereich. スクリーンショット 2020-09-22 13.16.48.jpg

Sie können sehen, dass der Arbeitsbereich nicht vorhanden ist.

スクリーンショット 2020-09-22 13.16.59.jpg

Wie ich oben geschrieben habe, wird der Arbeitsbereich nur erstellt, wenn der Build einmal ausgeführt wird. Klicken Sie also auf Build ausführen.

スクリーンショット 2020-09-22 13.18.27.jpg

Sie können sehen, dass der Build-Verlauf blau geworden ist.

スクリーンショット 2020-09-22 13.18.55.jpg

Öffnen Sie den Arbeitsbereich erneut.

スクリーンショット 2020-09-22 13.20.12.jpg

Es ist wie folgt. Wenn Sie jemals eine Rails-Anwendung geschrieben haben, sind Sie wahrscheinlich mit allen Dateien vertraut.

スクリーンショット 2020-09-22 14.51.40.jpg

Diese Daten sind genau die gleichen wie die Daten auf GitHub unten. https://github.com/EL93019205/stuctive スクリーンショット 2020-09-22 13.21.25.jpg

Auf diese Weise ist es sehr einfach, eine Reihe von Rails-Anwendungsdaten auf GitHub in Ihren Jenkins-Arbeitsbereich zu kopieren.

Sie müssen lediglich den automatisierten Testbefehl mit diesen abgerufenen Daten in dem Verzeichnis ausführen, das die Gem-Datei enthält. Der automatische Testbefehl ist je nach Version der Schienen völlig unterschiedlich. Da wir diesmal jedoch Schienen 5.2.3 verwenden, kann er mit dem folgenden Befehl ausgeführt werden.

bundle exec rspec
bundle exec rubocop

Lass uns das machen.

Öffnen Sie die Einstellungen. スクリーンショット 2020-09-22 13.28.01.jpg

Scrollen Sie nach unten und fügen Sie den vorherigen Befehl in Run Shell ein. Dieser Befehl wird im Arbeitsbereichsverzeichnis ausgeführt. Mit anderen Worten, es wird in dem Verzeichnis ausgeführt, in dem sich die Gem-Datei befindet. Klicken Sie auf Speichern, wenn Sie fertig sind.

スクリーンショット 2020-09-22 13.28.38.jpg

Führen Sie dann den Build aus.

スクリーンショット 2020-09-22 13.30.24.jpg

Ah, die Build-Geschichte wurde rot. Was war die Ursache? スクリーンショット 2020-09-22 13.30.41.jpg

Klicken Sie auf ● </ font> # 2, um die Konsolenausgabe zu öffnen.

Unten sehen Sie das folgende Fehlerprotokoll.

スクリーンショット 2020-09-22 13.31.59.jpg

Dies bedeutet, dass Sie eine Bundle-Installation benötigen. Es ist ein erwartetes Verhalten, also habe ich es gewagt, einen Fehler zu machen.

Kehren Sie also zu den Einstellungen zurück und fügen Sie die Bundle-Installation hinzu.

スクリーンショット 2020-09-22 13.34.26.jpg

Speichern und Build erneut ausführen

スクリーンショット 2020-09-22 13.35.37.jpg

Ich bekomme wieder einen Fehler. Klicken Sie auf ● </ font> # 3, um die Konsolenausgabe zu öffnen.

スクリーンショット 2020-09-22 13.36.07.jpg

Die Ruby-Version ist 2.6.3, aber die Gemfile sagt, dass es 2.5.1 ist, also bin ich wütend, dass ich die Installation nicht bündeln kann.

スクリーンショット 2020-09-22 13.36.46.jpg

Ich denke, dies ist der Teil, in dem ein solcher Fehler je nach Person auftreten kann oder nicht. Möglicherweise werden auch andere Fehler angezeigt. Schließlich ist die Umgebung je nach PC sehr unterschiedlich.

Es ist eine schlechte Idee, rbenv zu installieren oder Homebrew hier zu installieren. Ich bin süchtig nach dem Schlamm. Ich war süchtig danach.

Aufgrund verschiedener Untersuchungen scheint die Umgebungsvariable PATH beim Ausführen des Jenkins-Builds überschrieben zu werden.

Die Umgebungsvariablen für Jenkins sind so konzipiert, dass sie verwendet werden können. Daher ist es unwahrscheinlich, dass dies geschieht.

Machen wir es also so, dass die Umgebungsvariable PATH nach dem Ausführen des Builds mit dem PATH des lokalen PCs überschrieben wird.

Führen Sie den folgenden Befehl auf dem Mac-Terminal aus, um die Umgebungsvariable PATH zu überprüfen. Dieser Befehl ist ein Befehl zum Abrufen einer Liste aller Umgebungsvariablen mit dem Befehl printenv, zum Verbinden mit | basierend auf dem Ergebnis und zum Anzeigen nur der Zeilen, die PATH enthalten, mit dem Befehl grep.

printenv | grep PATH

Anschließend wird der Wert der Umgebungsvariablen PATH angezeigt. スクリーンショット 2020-09-22 13.45.08.jpg

Dies ist von Person zu Person unterschiedlich, aber Jenkins muss diesen Pfad zurückgeben.

Schreiben Sie daher wie folgt um.

export PATH="Fügen Sie den Inhalt des zuvor kopierten Pfads ein"
bundle exec rspec
bundle exec rubocop

In meinem Fall sieht es so aus: Bitte lesen Sie den PFAD, da er von Person zu Person unterschiedlich ist.

スクリーンショット 2020-09-22 14.56.33.jpg

Speichern Sie nun und klicken Sie erneut auf Build ausführen.

スクリーンショット 2020-09-22 14.59.44.jpg

Der Build war erfolgreich!

Öffnen Sie die Konsolenausgabe von ● </ font> # 4 und sehen Sie sich das Protokoll an.

Zunächst können Sie sehen, dass das Bundle-Installationsprotokoll angezeigt wird. スクリーンショット 2020-09-22 15.04.50.jpg

Als nächstes können Sie sehen, dass das Bundle exec rspec protokolliert wird.

スクリーンショット 2020-09-22 15.06.17.jpg

Schließlich können Sie sehen, dass das Bundle exec rspec protokolliert ist.

スクリーンショット 2020-09-22 15.06.34.jpg

Sie können jetzt einen Job erstellen, der Ihre Rails-Anwendung automatisch testet, indem Sie einen Build ausführen.

Hier "Ein Shell-Skript zum Verzweigen, ob ● </ font> oder ● </ font> verwendet werden soll, abhängig vom Ausführungsergebnis von rubocop oder rspec. Sie haben sich vielleicht gefragt: "Ist es nicht notwendig, es zu erstellen?"

Zusammenfassend ist es nicht notwendig. Die Befehle bundle exec rspec und bundle exec rubocop geben im Fehlerfall einen Fehlercode zurück, und Jenkins überprüft den Fehlercode und entweder ● </ font> oder <font Es entscheidet, ob color = "red"> ● </ font> verwendet wird. Das ist praktisch!

Wenn Sie Shell-Skripte, Shells, Befehle wie grep und printenv sowie die Bedeutung von Umgebungsvariablen nicht verstehen, verfügen Sie nicht über Linux-Kenntnisse. Lesen Sie daher die folgenden Bücher. ~~ Ich habe auch ein erfrischendes Linux, also denke ich darüber nach, dieses Buch zu kaufen und zu studieren. ~~ https://www.amazon.co.jp/dp/B072K1NH76/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1 スクリーンショット 2020-09-22 13.13.37.jpg

Das ist alles für diese Zeit.

Sie können einen Webhook verwenden, um in den Themenzweig eines Remote-Repositorys zu wechseln und einen automatisierten Test auszuführen. Ich möchte dies jedoch an einem anderen Tag vorstellen.

Rails-Anwendungen mit Jenkins automatisch bereitstellen

Achtung! Selbst wenn Sie die Prozedur so kopieren, wie sie ist, kann sie hier nicht automatisch bereitgestellt werden. Weil ich den master.key für die Rails-Anwendung besitze. Außerdem ist meine persönliche App bereits so erstellt, dass sie mit einem einzigen Befehl mit Capistrano in der Produktionsumgebung bereitgestellt werden kann. Die Methode wird nicht beschrieben. Es ist schwierig, aber ich werde Ihnen unten zeigen, wie Sie die Produktionsumgebung erstellen. https://drive.google.com/drive/folders/14F4AmgnK0n022uYLatlQbvuPIGLGLFgt

Ich werde Ihnen nur zeigen, wie es geht. Mit Jenkins ist das ganz einfach.

Klicken Sie auf Neuen Job erstellen.

スクリーンショット 2020-09-22 15.22.17.jpg

Setzen Sie den Jobnamen auf "stuctive_auto_deploy" und den Jobtyp auf Freestyle Project und klicken Sie auf OK.

スクリーンショット 2020-09-22 15.22.50.jpg

スクリーンショット 2020-09-22 15.22.53.jpg

Stellen Sie die Quellcodeverwaltung auf Git und die Repository-URL auf https://github.com/EL93019205/stuctive.git (meine persönliche App) ein.

Wählen Sie unter "Build-Prozedur für Build hinzufügen" die Option "Shell ausführen" aus und lassen Sie das Shell-Skript folgendermaßen aussehen:

スクリーンショット 2020-09-22 15.43.10.jpg

Ich mache drei Dinge. -Overwrite Jenkins PATH mit lokalem PC PATH (wie beim automatischen Test) ・ Kopieren Sie master.key von master.key in den Arbeitsbereich und rufen Sie es ab

  • Führen Sie den automatischen Bereitstellungsbefehl von Capistrano aus

Klicken Sie auf Speichern und dann auf Build ausführen.

スクリーンショット 2020-09-22 15.34.31.jpg

Nach dem Ausführen des Builds lautet der Build-Verlauf ● </ font> # 1.

スクリーンショット 2020-09-22 15.34.05.jpg

Klicken Sie auf ● </ font> # 1 und klicken Sie auf Konsolenausgabe, um zu bestätigen, dass das Protokoll für die automatische Bereitstellung angezeigt wird.

スクリーンショット 2020-09-22 15.35.51.jpg

Sie können jetzt Rails-Anwendungen in Jenkins automatisch bereitstellen, indem Sie einen Build ausführen.

Vielleicht können Sie einen Webhook verwenden, um die automatische Bereitstellung auszuführen, wenn der Hauptzweig des Remote-Repositorys aktualisiert wird, aber ich studiere das noch, daher möchte ich ihn an einem anderen Tag vorstellen.

Am Ende

Wenn Sie etwas schwer zu verstehen finden, lassen Sie es bitte in den Kommentaren. Vielen Dank für das Lesen bis zum Ende.

Recommended Posts