Erstellen Sie Azure-Pipelies mit Azure DevOps in einer selbst gehosteten Linux-Umgebung

In diesem Artikel wird beschrieben, wie Sie mit Azure DevOps eine selbst gehostete Agentenumgebung erstellen, die auf Ihrer eigenen virtuellen Maschine aufbaut.

Was sind Azure DevOps? Oder was kannst du tun? Da andere Leute ausführlich darüber geschrieben haben, werde ich es hier weglassen und nur das Hauptthema ansprechen.

Warum selbst hosten?

In Azure DevOps ist der Gebäudedienst Azure Pipelines. Standardmäßig werden Builds in einer von Microsoft gehosteten Umgebung ausgeführt. Darüber hinaus werden sie kostenlos zur Verfügung gestellt.

Warum also für die virtuelle Maschine bezahlen und Ihre eigene selbst gehostete Umgebung vorbereiten? Dies liegt daran, dass von Microsoft gehostete Umgebungen die folgenden Einschränkungen aufweisen: (Stand 20.02.2020)

Die Grenzwerte für von Microsoft gehostete Agenten sind wie folgt:

Wenn Sie es jedoch in einem Open Source-Projekt verwenden, sollten Sie es mit einem von Microsoft gehosteten Agenten erstellen können, es sei denn, es handelt sich um ein sehr großes Projekt.

In Unternehmenssystemen erfolgt die Systementwicklung jedoch häufig aus geschlossenen Quellen, und der einstündigen Einschränkung fehlt häufig die Zeit zum Erstellen und Testen. In solchen Fällen ist Self-Hosting eine praktikable Option.

Darüber hinaus können Sie mit ** Self-Hosting die Größe der virtuellen Maschine frei festlegen **, sodass Sie eine große virtuelle Maschine als Build-Maschine verwenden und die Gesamt-Build- und Testzeit verkürzen können.

Was möchten Sie in einer selbst gehosteten Umgebung erreichen?

Dieses Mal ist das, was wir erreichen wollen, einfach. Ermöglicht Azure Pipelines, Agenten aufzurufen, die auf von Ihnen selbst eingerichteten virtuellen Maschinen ausgeführt werden sollen. Das Gesamtbild sieht wie in der folgenden Abbildung aus.

セルフホスト環境

Die Abfolge der Flüsse wird in der Abbildung in numerischer Reihenfolge ausgeführt.

  1. Der Entwickler schiebt den Quellcode in den Hauptzweig
  2. Azure Repos startet die Azure Pipelines-Erstellungssequenz, die durch Push ausgelöst wird
  3. Azure Pipelines fordert einen selbst gehosteten Agenten auf der virtuellen Maschine zum Erstellen auf
  4. Der Agent auf der virtuellen Maschine erstellt den Quellcode
  5. Der Agent auf der virtuellen Maschine benachrichtigt Azure Pipelines über das Ergebnis, unabhängig vom Erfolg oder Misserfolg des Builds.
  6. Azure Pipelines sendet Entwicklern das Ergebnis des Builds per E-Mail

Voraussetzungen

Lassen Sie uns nun die Self-Hosting-Umgebung von hier aus einrichten, aber der Einfachheit halber werden wir einige Voraussetzungen schaffen.

Erstens müssen die Berechtigungen des Benutzers, der arbeitet, die folgenden Bedingungen erfüllen.

  1. Berechtigung zum Erstellen von Azure AD-Benutzern und -Gruppen
  2. Haben Sie die Rolle des Projektadministrators für Azure DevOps
  3. Sie haben die Berechtigung, virtuelle Ubuntu 18.04-Maschinen zu erstellen

Als Nächstes gehen wir davon aus, dass Sie auch einige Vorbereitungen für Azure-Ressourcen getroffen haben.

  1. Sie haben bereits eine Organisation in Azure DevOps erstellt
  2. Sie haben bereits ein Azure DevOps-Projekt erstellt
  3. Sie haben bereits ein Build-Repository in Azure Repos
  4. Sie haben bereits Ressourcengruppen und virtuelle Maschinen für das Selbsthosting eingerichtet.

Das Folgende ist nicht erforderlich, aber Sie können es für später einfacher finden.

--Erstellen Sie einen Schlüsseldepot in einer Ressourcengruppe, und der arbeitende Benutzer hat die Berechtigung, ein Geheimnis zu erstellen

Arbeitsübersicht

Für die zukünftige Automatisierung ist es wichtig, den Arbeitsfluss zu verstehen, bevor Sie mit der Einzelarbeit beginnen. Wenn Sie verstehen, was während der Arbeit festgelegt werden soll oder nicht, verstehen Sie die Bedeutung der Arbeit besser und können auswählen, was automatisiert werden soll, und die Arbeit aufteilen.

Die hier zu erledigende Arbeit kann grob in die folgenden drei Typen unterteilt werden.

  1. Einrichten und Zuordnen jeder Azure-Ressource
  2. Einrichten eines Agenten für eine virtuelle Maschine
  3. Erstellen Sie eine neue Pipeline

Was die für die letzte neue Pipeline erforderliche "azure-pipelines.yml" betrifft, kann Ops die Details je nach zu erstellendem Ziel möglicherweise nicht kennen, sodass Dev sie möglicherweise beschreiben kann.

Festlegen und Zuordnen jeder Azure-Ressource

Hier erstellen wir hauptsächlich das, was wir in Azure DevOps benötigen. Folgendes muss erstellt werden:

Dann werde ich Schritt für Schritt erklären.

Erstellen eines Benutzers zum Ausführen des Agenten

Die wichtigste Aufgabe besteht diesmal darin, Azure-Pipelines mit Agenten in einer selbst gehosteten Umgebung zu verknüpfen. Andernfalls kann Azure Pipelines nicht bestimmen, welcher Agent aufgerufen werden soll, und der Agent kann nicht bestimmen, welche Aufgabe ausgeführt werden soll.

Erstellen Sie dieses Mal einen neuen Benutzer und registrieren Sie sich als Agentenadministrator für Azure Pipelines. Beachten Sie, dass Sie diesen Schritt überspringen können, wenn Sie einem vorhandenen Benutzer einen Agentenadministrator zuordnen möchten.

Aufgrund der bequemen Verwendung des persönlichen Zugriffstokens des Agentenadministrators ist es jedoch (möglicherweise) einfacher, einen dedizierten Benutzer auf die Verwaltung des Tokens vorzubereiten.

Es ist eine Schande, aber mach dir keine Sorgen über die verschiedenen Themen in den Screenshots ...

Erstellen eines Azure Active Directory-Benutzers

Zunächst benötigen wir einen Benutzer zum Verwalten der Agentenwarteschlange. Erstellen Sie daher einen Azure AD-Benutzer mit den folgenden Informationen:

Elemente einstellen Wert einstellen
Nutzername Azure-Pipelines-Agent-Queue-Admin-001
Name Azure Pipelines Queue Admin 001
Name Admin - 001
Sex Azure Pipelines Agent Queue
Passwort Beliebiges Passwort
Verwendungsort Japan

Bearbeiten Sie außerdem die Authentifizierungskontaktinformationen und geben Sie die E-Mail-Adresse Ihres Azure AD-Administrators oder Ihrer Administrator-Mailingliste ein.

Hinzufügen von Benutzern zu Azure DevOps

Fügen Sie den in Azure Active Directory erstellten Benutzer zu Azure DevOps hinzu. Ein Benutzer mit Azure DevOps-Administratorrechten meldet sich bei Azure DevOps an und klickt in der folgenden Abbildung auf "Organisationseinstellungen", um den Bildschirm "Organisationseinstellungen" zu öffnen.

Organization settings

Wählen Sie dann im linken Bereich "Benutzer" aus.

Users

Geben Sie abschließend die Benutzerinformationen ein und klicken Sie auf "Hinzufügen".

Elemente einstellen Wert einstellen
Users Der gerade erstellte Azure AD-Benutzer
Access level Basic
Add to projects Projektname zum Hinzufügen
Azure DevOps Groups Project Contributors

User information

Erstellen eines persönlichen Zugriffstokens für einen Agentenadministrator

Melden Sie sich mit dem gerade erstellten Benutzer bei Azure DevOps an. Bearbeiten Sie nach der Anmeldung Ihr Profil, damit Ihre E-Mail-Adresse gültig bleibt.

Wählen Sie nach der Anmeldung Ihr Projekt aus und klicken Sie im Profil oben rechts auf dem Bildschirm auf "Persönliche Zugriffstoken".

User Profile

Da zu diesem Zeitpunkt keine Zugriffstoken ausgegeben werden sollten, klicken Sie im rechten Bereich auf "Neues Token".

New Token

Auf der rechten Seite des Bildschirms wird ein Eingabedialog geöffnet. Geben Sie daher die erforderlichen Informationen ein.

Config Token

Legen Sie Berechtigungen für die folgenden Bereiche fest.

Umfang Wert einstellen
Agent Pools Read & manage
Build Read & execute
Packaging Read, write, & manage
Release Read, write, execute, & manage
Test Management Read & write

Wenn Sie auf "Erstellen" klicken, wird das persönliche Zugriffstoken wie unten gezeigt angezeigt. Klicken Sie auf das Kopiersymbol und speichern Sie es irgendwo.

Success Creation PAT

Bitte beachten Sie, dass ** Azure DevOps dieses persönliche Zugriffstoken nicht speichert **. Stellen Sie sicher, dass Sie es irgendwo speichern, damit Sie es vergessen können.

Hier ist ein Tipp, aber es ist eine gute Idee, sowohl Ihr Passwort als auch Ihr persönliches Zugriffstoken als Key Vault-Geheimnis zu verwalten. Wenn Sie dies einer benutzerdefinierten Richtlinie zuordnen, die das Ablaufdatum von Key Vault überprüft und überwacht, können Sie ein neues persönliches Zugriffstoken ausstellen und immer ein gültiges Token verwenden, bevor das persönliche Zugriffstoken abläuft. Ich werde.

Tatsächlich wird das persönliche Zugriffstoken nur zum Zeitpunkt der Erstellung benötigt ...?

Erstellen eines Agentenpools

Hier ist die Erstellung des Agentenpools, der Punkt dieser Zeit.

Wählen Sie ein Projekt aus und klicken Sie auf "Projekteinstellungen".

Project settings

Klicken Sie im linken Bereich auf "Agentenpools".

Agent pools

Klicken Sie oben rechts im rechten Bereich auf "Pool hinzufügen".

Add pool

Geben Sie die erforderlichen Informationen ein und klicken Sie auf "Erstellen". Dieses Mal werden wir es "Hosted Agent Pool" nennen.

Config pool

Der Agentenpool wurde erstellt. Klicken Sie darauf.

Hosted Agent Pool

Klicken Sie im rechten Bereich auf "Neuer Agent".

New Agent

Ein Dialogfeld für den Agenten wird angezeigt. Klicken Sie auf die Registerkarte "Linux", stellen Sie sicher, dass die Plattform "x64" ist, klicken Sie auf das Kopiersymbol und speichern Sie den Download-Link.

Copy Download Link

Einrichten eines Agenten für eine virtuelle Maschine

Gehen Sie folgendermaßen vor, um den Agenten früher herunterzuladen:

  1. Melden Sie sich bei der virtuellen Maschine an, die Sie bereits vorbereitet haben.
  2. Erstellen Sie ein Verzeichnis mit dem Namen "myagent".
  3. Verwenden Sie den Download-Link, um den Agenten herunterzuladen und die komprimierte Datei zu entpacken.

Der Befehl lautet:

mkdir myagent && cd myagent
wget https://vstsagentpackage.azureedge.net/agent/2.164.8/vsts-agent-linux-x64-2.164.8.tar.gz
tar zxvf vsts-agent-linux-x64-2.164.8.tar.gz

Konfigurieren Sie als Nächstes den Agenten.

./config.sh

Sie sehen eine Eingabeaufforderung ähnlich der folgenden:


  ___                      ______ _            _ _
 / _ \                     | ___ (_)          | (_)
/ /_\ \_____   _ _ __ ___  | |_/ /_ _ __   ___| |_ _ __   ___  ___
|  _  |_  / | | | '__/ _ \ |  __/| | '_ \ / _ \ | | '_ \ / _ \/ __|
| | | |/ /| |_| | | |  __/ | |   | | |_) |  __/ | | | | |  __/\__ \
\_| |_/___|\__,_|_|  \___| \_|   |_| .__/ \___|_|_|_| |_|\___||___/
                                   | |
        agent v2.164.8             |_|          (commit 99c93e1)


>>Lizenzvereinbarung:

Um die Quelle aus dem TFVC-Repository zu erstellen, müssen Sie die Lizenzvereinbarung für Team Explorer Everywhere akzeptieren. Dieser Schritt ist nicht erforderlich, wenn Sie die Quelle aus dem Git-Repository erstellen.

Eine Kopie der Team Explorer Everywhere-Lizenzvereinbarung finden Sie hier:
  /home/hayashi_toshiki/myagent/externals/tee/license.html

(Y/N)Akzeptieren Sie jetzt die Lizenzvereinbarung für Team Explorer Everywhere??Eingeben(Wenn N, drücken Sie die Eingabetaste) >

Das Eingabeverfahren ist wie folgt.

  1. Geben Sie "Y" ein und drücken Sie die Eingabetaste.
  2. Geben Sie die URL des Servers ein. Der Wert lautet "https://dev.azure.com/ {Name der Organisation}". Drücken Sie während der Eingabe die Eingabetaste.
  3. Geben Sie den Authentifizierungstyp ein. Da wir ein persönliches Zugriffstoken verwenden, drücken Sie einfach die Eingabetaste.
  4. Geben Sie den Agentenpool ein. Geben Sie "Hosted Agent Pool" ein und drücken Sie die Eingabetaste.
  5. Geben Sie den Agentennamen ein. Wir werden die Standardeinstellung verwenden, drücken Sie einfach die Eingabetaste.
  6. Geben Sie Ihren Arbeitsordner ein. Wir werden die Standardeinstellung verwenden, drücken Sie einfach die Eingabetaste.

Serviceregistrierung

Registrieren Sie sich als Dienst (Daemon), damit der Agent der virtuellen Maschine automatisch ausgeführt werden kann.

Der Befehl zum Registrieren des Dienstes lautet:

cd ~/myagent
sudo ./svc.sh install

Geben Sie dann den Befehl ein, um den Dienst zu starten.

sudo ./svc.sh start

Damit ist die Agenteneinrichtung auf der virtuellen Maschine abgeschlossen.

Der Befehl zum Abrufen des Servicestatus lautet wie folgt.

sudo ./svc.sh status

Neue Pipeline erstellen

Erstellen Sie eine neue Pipeline, um zu überprüfen, ob Azure-Pipelines und der selbst gehostete Agent ordnungsgemäß zugeordnet sind.

Klicken Sie in Azure DevOps im linken Bereich auf "Builds" aus "Pipelines".

Builds

Klicken Sie im rechten Bereich auf "Neue Pipeline".

New Pipeline

Dieses Mal durchsuchen wir das Azure Repos-Repository. Klicken Sie also auf "Azure Repos Git".

Azure Repos Git

Anschließend werden Sie aufgefordert, ein Repository auszuwählen. Bitte wählen Sie ein Repository aus.

Als nächstes erstellen Sie eine neue azure-pipelines.yml? Oder verwenden Sie eine vorhandene? Wählen Sie ungefähr. Dieses Mal erstellen wir eine einfache YAML-Datei. Wählen Sie also "Starter-Pipeline".

DevOps-Pipelines-Configure-Edited.png

Schließlich wird die Bearbeitungsseite für die YAML-Datei angezeigt. Bearbeiten Sie sie wie folgt.

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- master

# ----------------------------------------------------
#Es ist wichtig, hier den Namen des Agentenpools anzugeben.
# ----------------------------------------------------
pool: Hosted Agent Pool

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script'

- script: |
    echo Add other tasks to build, test, and deploy your project.
    echo See https://aka.ms/yaml
  displayName: 'Run a multi-line script'

Klicken Sie auf "Speichern und ausführen", um die YAML zu speichern und die Pipeline auszuführen.

Save and Run

Ein Dialogfeld wird angezeigt, in dem Sie die Festschreibungsnachricht für die bearbeitete YAML-Datei eingeben können. Klicken Sie einfach auf "Speichern und ausführen".

Run

Nach einer Weile wird der Job ausgeführt und es wird eine Seite ähnlich der folgenden angezeigt, die angibt, dass der Hosted Agent Pool erfolgreich erstellt wurde.

Build Succeeded

Sie haben jetzt überprüft, ob der Agent in Ihrer selbst gehosteten Umgebung und Azure Pipelines zusammenarbeiten.

Schließlich

Dieses Mal habe ich erklärt, wie Sie einen Agenten in einer selbst gehosteten Umgebung einrichten und Ihre eigene Build-Umgebung verwenden.

Die folgenden Themen werden der Kürze halber in diesem Artikel nicht erwähnt.

Ich würde gerne darüber schreiben, wenn ich noch eine Chance habe.

Wir hoffen, dass Sie dies für alle hilfreich finden, die Azure DevOps ausprobieren möchten.

Recommended Posts

Erstellen Sie Azure-Pipelies mit Azure DevOps in einer selbst gehosteten Linux-Umgebung
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Erstellen Sie eine LAMP-Umgebung mit Vagrant (Linux + Apache + MySQL + PHP)
Erstellen Sie in kürzester Zeit eine Selenium-Umgebung unter Amazon Linux 2
Erstellen Sie mit Laragon ganz einfach eine Entwicklungsumgebung
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Erstellen Sie mit Docker-Compose eine schnelle API-Umgebung
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
Erstellen Sie in kürzester Zeit eine LAMP-Umgebung
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Starten Sie Django in einer virtuellen Umgebung mit Pipenv
Erstellen Sie eine virtuelle Umgebung mit conda in Python
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
[Memo] Erstellen Sie eine virtuelle Umgebung mit Pyenv + anaconda
Legen Sie eine feste IP in der Linux-Umgebung fest
Erstellen Sie eine virtuelle Umgebung mit pyenv und venv
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Erstellen einer Python-Umgebung mit OSX Elcapitan
Erstellen Sie mit Eclipse eine Minecraft-Plug-Entwicklungsumgebung
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Erstellen Sie eine mruby-Entwicklungsumgebung für ESP32 (Linux Edition)
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
[Linux] WSL2 Erstellen Sie mit Ubuntu 20.04 eine Umgebung für laravel7
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Erstellen einer numerischen Berechnungsumgebung mit pyenv und miniconda3
Ich habe versucht, eine Umgebung mit WSL + Ubuntu + VS-Code in einer Windows-Umgebung zu erstellen
Versuchen Sie, Python in der mit pipenv erstellten Django-Umgebung auszuführen
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
Erstellen Sie mit VirtualBox und Ubuntu eine Scikit-Lernumgebung für maschinelles Lernen
[Memo] Erstellen Sie mit Docker eine Entwicklungsumgebung für Django + Nuxt.js
SSH-Einschränkungen in der Linux-Umgebung
Erstellen Sie eine Go-Entwicklungsumgebung mit den Remote-Containern von VS Code
Erstellen Sie eine Python-Entwicklungsumgebung mit Eclipse (fügen Sie einen HTML-Editor hinzu).
Erstellen Sie eine LAMP-Umgebung [CentOS 7]
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Keine Dual-Boots oder VMs mehr! Erstellen wir eine Linux-Umgebung mit WSL2 und Windows Terminal [WSL2]
Wovon ich süchtig war, als ich mit riesigen Dateien in einer Linux 32-Bit-Umgebung umging
Erstellen Sie mit direnv eine Python-Umgebung
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Erstellen Sie mit VSCode x Remote Development x Pipenv eine komfortable Entwicklungsumgebung
Erstellen Sie eine maschinelle Lernumgebung
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
Erstellen Sie eine Python-Umgebung mit pyenv (OS X El Capitan 10.11.3).