Synchronisieren eines GitHub-Repositorys in Workflow Orchestration Manager
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Hinweis
Dieses Feature befindet sich in der Phase der öffentlichen Vorschau. Workflow Orchestration Manager wird von Apache Airflow unterstützt.
In diesem Artikel erfahren Sie, wie Sie Ihr GitHub-Repository in Azure Data Factory Workflow Orchestration Manager auf zwei verschiedene Arten synchronisieren können:
- Mithilfe von Git-Synchronisierung aktivieren in der Workflow Orchestration Manager-Benutzeroberfläche.
- Mithilfe der REST-API.
Voraussetzungen
- Azure-Abonnement: Wenn Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen, bevor Sie beginnen. Erstellen oder Auswählen einer vorhandenen Data Factory-Instanz in einer Region, in der die Vorschau von Workflow Orchestration Manager unterstützt wird.
- GitHub-Repository: Sie brauchen Zugriff auf ein GitHub-Repository.
Verwenden der Workflow Orchestration Manager-Benutzeroberfläche
So synchronisieren Sie Ihr GitHub-Repository mithilfe der Workflow Orchestration Manager-Benutzeroberfläche:
Vergewissern Sie sich, dass Ihr Repository die erforderlichen Ordner und Dateien enthält:
dags/: für gerichtete azyklische Graphen (DAGs) in Apache Airflow (erforderlich).
Plugins/: für die Integration externer Funktionen in Airflow.
Wenn Sie eine Workflow Orchestration Manager Integration Runtime erstellen, wählen Sie im Dialogfeld Airflow-Umgebung einrichten die OptionGit-Synchronisierung aktivieren aus.
Wählen Sie einen der folgenden unterstützten Git-Diensttypen aus:
- GitHub
- ADO
- GitLab
- BitBucket
Wählen Sie einen Anmeldeinformationstyp aus:
Kein (für ein öffentliches Repository): Wenn Sie diese Option auswählen, stellen Sie sicher, dass ihr Repository öffentlich sichtbar ist. Dann füllen Sie die Details aus:
- Git Repository URL (erforderlich): Die Klon-URL für das gewünschte GitHub-Repository
- Git-Branch (erforderlich): Der aktuelle Branch, in dem sich das gewünschte Git-Repository befindet.
Git personal access token: Nachdem Sie diese Option für ein persönliches Zugriffstoken (PAT) ausgewählt haben, füllen Sie die verbleibenden Felder basierend auf dem ausgewählten Git-Diensttyp aus:
- Persönliches GitHub-Zugriffstoken
- ADO persönliches Zugriffstoken
- GitLab persönliches Zugriffstoken
- BitBucket persönliches Zugriffstoken
SPN (Dienstprinzipalname): Nur ADO unterstützt diesen Anmeldeinformationstyp. Nachdem Sie diese Option ausgewählt haben, füllen Sie die restlichen Felder basierend auf dem ausgewählten Git-Diensttyp aus:
- Git-Repository-URL (erforderlich): Die Klon-URL für das zu synchronisierende Git-Repository
- Git-Branch (erforderlich): Der zu synchronisierende Branch im Repository
- Dienstprinzipal-App-ID (erforderlich): Die Dienstprinzipal-App-ID mit Zugriff auf das zu synchronisierende ADO-Repository
- Dienstprinzipalgeheimnis (erforderlich): Ein manuell generiertes Geheimnis im Dienstprinzipal, dessen Wert für die Authentifizierung und den Zugriff auf das ADO-Repository verwendet wird
- Dienstprinzipalmandanten-ID (erforderlich): Die Dienstprinzipalmandanten-ID
Füllen Sie die restlichen Felder mit den erforderlichen Informationen aus.
Klicken Sie auf Erstellen.
Verwenden der REST-API
So synchronisieren Sie Ihr GitHub-Repository mithilfe der REST-API:
Methode: PUT
URL:
https://management.azure.com/subscriptions/<subscriptionid>/resourcegroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<datafactoryName>/integrationruntimes/<airflowEnvName>?api-version=2018-06-01
URI-Parameter:
Name Geben Sie in Erforderlich Type BESCHREIBUNG Subscription Id (Abonnement-ID) path True Zeichenfolge Abonnementbezeichner ResourceGroup Name path True Zeichenfolge Name der Ressourcengruppe (RegEx-Muster: ^[-\w\._\(\)]+$
)dataFactoryName path True Zeichenfolge Name der Azure Data Factory (Regex-Muster: ^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
)airflowEnvName path True Zeichenfolge Name der Workflow Orchestration Manager-Umgebung Api-version Abfrage True Zeichenfolge Die API-Version Anforderungstext (Airflow-Konfiguration):
Name Typ BESCHREIBUNG name Zeichenfolge Name der Airflow-Umgebung properties propertyType Konfigurationseigenschaften für die Umgebung Eigenschaftstyp:
Name Typ Beschreibung type Zeichenfolge Der Ressourcentyp (Airflow in diesem Szenario) typeProperties typeProperty Luftströmung Type-Eigenschaft:
Name Typ Beschreibung computeProperties computeProperty Konfiguration des für die Umgebung verwendeten Computetyps airflowProperties airflowProperty Konfiguration der Airflow-Eigenschaften für die Umgebung Compute-Eigenschaft:
Name Typ BESCHREIBUNG Speicherort Zeichenfolge Als Standort der Airflow Integration Runtime wird standardmäßig die Data Factory-Region übernommen. Wenn Sie eine Integration Runtime in einer anderen Region erstellen möchten, müssen Sie eine neue Data Factory in der erforderlichen Region erstellen. computeSize Zeichenfolge Die Größe des Computeknotens, auf dem Ihre Airflow-Umgebung ausgeführt werden soll. Beispiele sind „Large“ oder „Small“. Anfänglich werden drei Knoten zugeordnet. extraNodes integer Mit jedem zusätzlichen Knoten werden drei weitere Worker hinzugefügt. Airflow-Eigenschaft:
Name Typ Beschreibung airflowVersion Zeichenfolge Unterstützte Version von Apache Airflow Beispiel: 2.4.3. airflowRequirements Array<string> Python-Bibliotheken, die Sie verwenden möchten Beispiel: ["flask-bcrypy=0.7.1"] Kann eine durch Trennzeichen getrennte Liste sein airflowEnvironmentVariables Objekt (Schlüssel-Wert-Paar) Umgebungsvariablen, die Sie verwenden möchten Beispiel: { "SAMPLE_ENV_NAME": "test" } gitSyncProperties gitSyncProperty Git-Konfigurationseigenschaften enableAADIntegration boolean Ermöglicht es Microsoft Entra ID, sich bei Workflow Orchestration Manager anzumelden. userName Zeichenfolge oder null Benutzername für die Standardauthentifizierung Kennwort Zeichenfolge oder null Kennwort für die Standardauthentifizierung Git-Synchronisierungseigenschaft:
Name Typ Beschreibung gitServiceType Zeichenfolge Der Git-Dienst, in dem sich Ihr gewünschtes Repository befindet. Zulässige Werte sind „GitHub“, „ADO“, „GitLab“ oder „BitBucket“. gitCredentialType Zeichenfolge Typ der Git-Anmeldeinformation. Zulässige Werte sind „PAT“ (für persönliches Zugriffstoken), „SPN“ (nur von ADO unterstützt) und „Keine“. Repository Zeichenfolge Repositorylink Verzweigung Zeichenfolge Branch, der im Repository verwendet werden soll username Zeichenfolge GitHub-Benutzername Anmeldeinformationen Zeichenfolge Wert des PAT tenantId Zeichenfolge Die Dienstprinzipal-Mandanten-ID (nur von ADO unterstützt) Antworten:
Name Statuscode type Beschreibung Akzeptiert 200 Factory OK Nicht autorisiert 401 Cloudfehler Array mit weiteren Fehlerdetails
Beispiele
Sehen Sie sich die folgenden Beispiele an.
Beispiel für eine Anforderung:
HTTP
PUT https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/abnarain-rg/providers/Microsoft.DataFactory/factories/ambika-df/integrationruntimes/sample-2?api-version=2018-06-01
Beispieltext:
{
"name": "sample-2",
"properties": {
"type": "Airflow",
"typeProperties": {
"computeProperties": {
"location": "East US",
"computeSize": "Large",
"extraNodes": 0
},
"airflowProperties": {
"airflowVersion": "2.4.3",
"airflowEnvironmentVariables": {
"AIRFLOW__TEST__TEST": "test"
},
"airflowRequirements": [
"apache-airflow-providers-microsoft-azure"
],
"enableAADIntegration": true,
"userName": null,
"password": null,
"airflowEntityReferences": []
}
}
}
}
Beispiel für eine Antwort:
Status code: 200 OK
Antworttext:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/your-rg/providers/Microsoft.DataFactory/factories/your-df/integrationruntimes/sample-2",
"name": "sample-2",
"type": "Microsoft.DataFactory/factories/integrationruntimes",
"properties": {
"type": "Airflow",
"typeProperties": {
"computeProperties": {
"location": "East US",
"computeSize": "Large",
"extraNodes": 0
},
"airflowProperties": {
"airflowVersion": "2.4.3",
"pythonVersion": "3.8",
"airflowEnvironmentVariables": {
"AIRFLOW__TEST__TEST": "test"
},
"airflowWebUrl": "https://e57f7409041692.eastus.airflow.svc.datafactory.azure.com/login/",
"airflowRequirements": [
"apache-airflow-providers-microsoft-azure"
],
"airflowEntityReferences": [],
"packageProviderPath": "plugins",
"enableAADIntegration": true,
"enableTriggerers": false
}
},
"state": "Initial"
},
"etag": "3402279e-0000-0100-0000-64ecb1cb0000"
}
Hier sind einige Beispiele für API-Nutzdaten:
Git-Synchronisierungseigenschaften für Github mit PAT:
"gitSyncProperties": { "gitServiceType": "Github", "gitCredentialType": "PAT", "repo": <repo url>, "branch": <repo branch to sync>, "username": <username>, "credential": <personal access token> }
Git-Synchronisierungseigenschaften für ADO mit PAT:
"gitSyncProperties": { "gitServiceType": "ADO", "gitCredentialType": "PAT", "repo": <repo url>, "branch": <repo branch to sync>, "username": <username>, "credential": <personal access token> }
Git-Synchronisierungseigenschaften für ADO mit Dienstprinzipal:
"gitSyncProperties": { "gitServiceType": "ADO", "gitCredentialType": "SPN", "repo": <repo url>, "branch": <repo branch to sync>, "username": < service principal app id >, "credential": <service principal secret value> "tenantId": <service principal tenant id> }
Git-Synchronisierungseigenschaften für das öffentliche GitHub-Repository:
"gitSyncProperties": { "gitServiceType": "Github", "gitCredentialType": "None", "repo": <repo url>, "branch": <repo branch to sync> }
Importieren eines privaten Pakets mit Git-Synchronisierung
Dieser optionale Prozess gilt nur, wenn Sie private Pakete verwenden.
Bei diesem Prozess wird davon ausgegangen, dass Ihr privates Paket über die Git-Synchronisierung automatisch synchronisiert wurde. Sie fügen das Paket als Anforderung in der Workflow Orchestration Manager-Benutzeroberfläche zusammen mit dem Pfadpräfix /opt/airflow/git/\<repoName\>/
hinzu, wenn Sie eine Verbindung mit einem ADO-Repository herstellen. Verwenden Sie /opt/airflow/git/\<repoName\>.git/
für alle anderen Git-Dienste.
Wenn sich Ihr privates Paket beispielsweise in /dags/test/private.whl
in einem GitHub-Repository befindet, sollten Sie die Anforderung /opt/airflow/git/\<repoName\>.git/dags/test/private.whl
in der Workflow Orchestration Manager-Umgebung hinzufügen.