GitLab bietet uns viel Flexibilität, um sich wiederholende Aufgaben zu automatisieren und Änderungen und Aktionen beim Erstellen von Anwendungen und Ausführen von Skripten, die die Anwendungen für uns bereitstellen, zu verfolgen. Unabhängig von der Projektkomplexität gibt es eine Sache, die erledigt werden muss: Variablen deklarieren.
Warum? Durch das Deklarieren von Variablen können Sie den Workflow Ihrer Skripte steuern und Konfigurationen innerhalb Ihrer Umgebung definieren.
Was ist GitLab?
GitLab ist ein von GitLab Inc. entwickeltes Repository-Hosting-Manager-Tool, das optimierte Software-Workflows erstellen und so den Softwareentwicklungsprozess beschleunigen soll. Es bietet Benutzern eine Vielzahl von Verwaltungstools, mit denen sie den kollaborativen Workflow optimieren und den Softwareentwicklungszyklus abschließen können. Entwickler können das Tool auch verwenden, um das Repository aus BitBucket, Google Code und anderen ähnlichen Plattformen zu importieren.
Hier ist ein kurzer Überblick über die Funktionen von GitLab:
- Open-Source-Community-Edition-Repository-Verwaltungsplattform
- Bietet nützliche Tools wie Zeiterfassung und Issue-Tracker, Gruppenmeilensteine und viele andere für eine effektive Softwareentwicklung
- Einfache Repository-Wartung auf einem Server
- Spontane Benutzeroberfläche und Authentifizierungsfunktionen
- Erweiterte Benutzerberechtigungen und verzweigter Schutz
Was sind überhaupt GitLab CI/CD-Variablen?
GitLab CI/CD-Variablen (Continuous Integration/Continuous Delivery) sind Umgebungsvariablen, die global für das gesamte Projekt verfügbar sind. Sie können sie für Folgendes verwenden:
- Steuern und Ausführen von Aufträgen in Pipelines
- Speichern Sie Werte, die vom Skript verwendet werden sollen
- Verhindern Sie die Wiederholung desselben Wertes für alle Zweige
- Vermeiden Sie die Festcodierung von Werten in Ihrer .gitlab-ci.yml-Datei
Die Beziehung zwischen Variablen und GitLab-Umgebungen verstehen
Die Softwareentwicklung als Prozess umfasst verschiedene Phasen, um ein Produkt zu testen, bevor es den Benutzern zur Verfügung gestellt wird. Andererseits sind Umgebungen praktisch, um zu definieren, wie die Phasen aussehen, und können sich zwischen Teams und Organisationen unterscheiden.
Zwischen diesen beiden Begriffen stehen Variablen, also Datenwerte, die sich durch die Interaktion des Benutzers mit Ihrem Produkt ändern können. So können beispielsweise Vorlieben, Geschlecht oder Alter des Benutzers – oder andere Angaben – den nächsten Schritt im Produkt-Taskflow bestimmen.
Möglicherweise haben Sie auch schon von Umgebungsvariablen gehört. Dabei handelt es sich um Variablen, die in einer bestimmten Umgebung, aber außerhalb der Anwendung definiert sind. GitLab-Umgebungsvariablen ermöglichen es Entwicklern, Werte in ihrem Code zu konfigurieren. Mit ihnen können Sie sicherstellen, dass Ihr Code flexibel bleibt, und eine in einer bestimmten Umgebung bereitgestellte Anwendung ändern, ohne Änderungen am Code vorzunehmen.
Sie können auch Tests ausführen und Dienste von Drittanbietern integrieren, indem Sie eine Konfigurationsumgebungsvariable außerhalb der Anwendung berechnen.
So funktionieren GitLab CI/CD-Variablen
In GitLab werden CI/CD-Variablen verwendet, um Jobs anzupassen, indem Werte definiert und gespeichert werden. Je nach Umständen und Anforderungen können Sie vordefinierte CI/CD-Variablen verwenden oder benutzerdefinierte definieren:
- Variablen .gitlab-ci.yml-Datei
- Projekt-CI/CD-Variablen
- Gruppieren von CI/CD-Variablen
- Instanz-C/CD-Variablen
Lassen Sie uns diese Begriffe weiter unten genauer besprechen.
Vordefinierte CI/CD-Variablen
GitLab CI/CD verfügt über einen Standardsatz vordefinierter CI/CD-Variablen. Sie können diese in der Pipeline-Konfiguration und in Job-Skripten verwenden. Sie können beispielsweise vordefinierte CI/CD-Variablen in Ihrer .gitlab-ci.yml-Datei verwenden, ohne sie vorher zu deklarieren.
Hier ist ein Beispiel, das Ihnen zeigt, wie Sie das Zweigstellenteam mithilfe der vordefinierten Variable CI_COMMIT_REF_NAME ausgeben:
ob:
Stadium: vor
Skript:
– echo „$CI_COMMIT_REF_NAME“
Benutzerdefinierte CI/CD-Variablen
Sie können benutzerdefinierte CI/CD-Variablen auf drei Arten erstellen:
- Für ein Projekt (in der .gitlab-ci.yml-Datei des Projekts, in den Projekteinstellungen und mit der API)
- Für alle Projekte einer Gruppe im Gruppensetting
- Für alle Projekte in einer GitLab-Instanz in den Einstellungen der Instanz
Lassen Sie uns verstehen, wie Sie Variablen in der Datei .gitlab-ci.yml erstellen können.
Geben Sie die Variable und den Wert mit dem Schlüsselwort „variables“ an. Platzieren Sie die Schlüsselwortvariable auf der obersten Ebene der Datei .gitlab-ci.yml. Alternativ können Sie sie in einem Job und auf einer Stage-Ebene platzieren.
Sie können die Variable für bestimmte Fälle auf der obersten Ebene definieren, sodass sie von beliebigen Jobs verwendet werden kann. Wenn sie jedoch bereits in einem Job beschrieben ist, kann nur dieser Job die Variable verwenden. Eine weitere Möglichkeit besteht darin, Variablenwerte für eine bestimmte Pipeline manuell zu überschreiben oder sie in manuellen Pipelines vorab ausfüllen zu lassen.
Es gibt zwei Typen von Variablen: Datei und Variable .
Variablennamen werden durch die Shell beschränkt, die Sie zum Ausführen von Skripten verwenden, wobei jede Shell ihren eigenen Satz reservierter Variablennamen hat. Sie sind dafür verantwortlich, sicherzustellen, dass jede Variable für den Bereich, für den Sie sie verwenden möchten, richtig definiert ist.
Außerdem haben Pipelines aus gegabelten Projekten keinen Zugriff auf CI/CD-Variablen im übergeordneten Projekt. Dies ist eine Standardeinstellung. Wenn Sie jedoch eine Merger-Request-Pipeline im übergeordneten Projekt für einen Merger-Request aus einem gegabelten Projekt ausführen, werden alle Variablen für die Pipeline verfügbar.
Projekt-CI/CD-Variablen
Das Erstellen von CI/CD-Variablen für die Einstellungen eines Projekts ist ebenfalls möglich, aber nur Projektmitglieder mit der Rolle „Maintainer“ können diese Variablen erstellen oder bearbeiten.
Um ein CI/CD-Variablengeheimnis zu konfigurieren, müssen Sie es in den Projekteinstellungen und nicht in der Datei .gitlab-ci.yml festlegen. Wenn Sie diese Variablen verwenden, müssen Sie keine Werte fest codieren. Sie können definiert werden, indem Sie zu Einstellungen > CI/CD > Variablen gehen .
Gruppieren von CI/CD-Variablen
Das Erstellen einer Gruppen-CI/CD-Variable ist Voraussetzung für das Erstellen einer CI/CD-Variable und deren Bereitstellung für alle Projekte in einer Gruppe. Die Verwendung von Gruppenvariablen ist auch sinnvoll, um Passwörter einzugeben, Anmeldeinformationen einzugeben und öffentliche/private SSH-Schlüssel zu verwalten.
Um eine Gruppen-CI/CD-Variable zu erstellen, öffnen Sie „Einstellungen“ und anschließend „CI/CD“ in Ihrer Gruppe.
Instanz-CI/CD-Variablen
Wenn Sie eine CI/CD-Variable erstellen und sie für alle Projekte und Gruppen in einer gesamten GitLab-Instanz sichtbar machen möchten, müssen Sie eine Instanz-CI/CD-Variable einfügen. Dies ist nur möglich, wenn Sie der Administrator der Instanz sind.
Hierzu haben Sie zwei Möglichkeiten:
- Gehen Sie direkt zu dieser Adresse: https://<your-gitlab>/admin/application_settings/ci_cd
- Geben Sie Instanzvariablen über die Benutzeroberfläche oder API an.
Führen Sie die folgenden Schritte aus, um eine Instanzvariable zu erstellen:
- Klicken Sie in der oberen Leiste auf „ Menü“ und dann auf „Admin“ .
- Wählen Sie in der linken Seitenleiste „ Einstellungen“ aus . Klicken Sie auf CI/CD und öffnen Sie dann den Abschnitt „Variablen“ .
- Wählen Sie die Schaltfläche „Variable hinzufügen“ aus und geben Sie die Schlüssel- und Wertdetails ein .
Hier werden Sie auch zwei Flags bemerken, die optional sind, aber in bestimmten Szenarien kritisch sein können. Sie sind:
Die Schutzvariable ist die Variable, die in Pipelines verfügbar ist, die ausschließlich auf geschützten Zweigen oder Tags ausgeführt werden.
Maskenvariable bezieht sich auf den Variablenwert, der in den Protokollausgaben der Jobs maskiert wird. Außerdem können Sie nur Variablen speichern, die die folgenden Anforderungen erfüllen:
- Der Wert der Variablen muss eine einzelne Zeile sein
- Der Wert der Variablen muss mindestens acht Zeichen lang sein und aus Zeichen des Base64-Alphabets , den Zeichen @ und : , dem Zeichen . und dem Zeichen ~ bestehen.
So verwenden Sie Variablen in anderen Variablen
Variablen können auch zum Definieren neuer Variablen verwendet werden. Hier ist der Code dazu:
Variablen:
GLOBAL_VAR: „Diese Variable ist für alle Jobs sichtbar.“
job_1:
Variablen:
JOB_LOCAL_VAR: „Nur job_1 kann den Wert dieser Variablen verwenden.“
Skript:
– echo „$GLOBAL_VAR“ und „$JOB_LOCAL_VAR.“
Hilfreiche Beiträge zur Navigation in GitLab
Nachdem Sie nun mit GitLab CI/CD vertraut sind, empfehlen wir Ihnen, sich andere GitLab-bezogene Beiträge anzusehen, um die Plattform noch besser zu verstehen.
Wenn Ihr Workflow Jira umfasst, werfen Sie einen Blick auf unseren Artikel Das ultimative Handbuch zur GitLab-Jira-Integration . Oder wenn Sie mehr über SSH-Schlüssel-Setups erfahren möchten, behandelt unser Beitrag Das ultimative Handbuch für die GitLab-SSH-Schlüssel-Einrichtung die Funktion ausführlicher.
Mehr lesen: Tellonym, eine anonyme Nachrichten-App, versetzt Eltern in Angst und Schrecken
Fazit
Die CI/CD-Variablenimplementierung von GitLab macht die Pipeline-Konfiguration leistungsfähiger und flexibler als je zuvor. Eines der größten Probleme beim Definieren von Variablen besteht darin, alle Stellen zu identifizieren, an denen ein Wert platziert werden soll.
Normalerweise können Sie auf Gruppenebene so viele Werte platzieren, wie Sie möchten. So sparen Sie sich die Zeit und den Aufwand, dies in Projekten zu wiederholen. Sie können eine Variable später immer noch in bestimmten Projekten überschreiben, die einen anderen Wert benötigen.
Darüber hinaus verwenden selbst gehostete GitLab-Administratoren normalerweise Instanzvariablen, um gemeinsam genutzte Werte offenzulegen. Beachten Sie jedoch, dass dies zu einer unbeabsichtigten Offenlegung von Informationen führen kann, wenn Sie es nicht richtig verwalten.