Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services
Erste Schritte bei der gemeinsamen Verwendung von GitHub-Aktionen und Azure Artifacts. GitHub Actions unterstützt Sie beim Automatisieren Ihrer Softwareentwicklungsworkflows innerhalb von GitHub. Sie können GitHub-Aktionen verwenden, um sie in einem Azure Artifacts-Feed bereitzustellen.
Voraussetzungen
- Ein GitHub-Konto mit einem Repository. Treten Sie GitHub bei, und erstellen Sie ein Repository.
- Ein Azure Artifact-Feed, in den Sie Ihr NuGet-Paket von einem GitHub-Workflow übertragen. Erste Schritte mit NuGet-Paketen.
- Richten Sie eine vom Benutzer zugewiesene verwaltete Identität mit zugeordneten Verbundanmeldeinformationen ein.
- Erstellen einer benutzerseitig zugewiesenen verwalteten Identität.
- Kopieren Sie die Werte für Client-ID, Abonnement-ID und Verzeichnis-ID (Mandant), um sie später in Ihrem GitHub-Aktionen-Workflow zu verwenden.
- Weisen Sie Ihrer vom Benutzer zugewiesenen verwalteten Identität eine geeignete Rolle zu.
- Konfigurieren Sie eine Verbundidentitäts-Anmeldeinformationen für eine vom Benutzer zugewiesene verwaltete Identität , um Token zu vertrauen, die von GitHub-Aktionen an Ihr GitHub-Repository ausgegeben werden.
- Besitzen Sie die Berechtigung, der Mitwirkendengruppe in Azure DevOps eine verwaltete Identität zuzuweisen. Projektadministratoren und Sammlungsadministratoren verfügen beide über diese Berechtigung.
Hinweis
Ein alternativer Ansatz besteht darin, eine Microsoft Entra-Anwendung mit einem Dienstprinzipal und Verbundauthentifizierungsanmeldeinformationen zu verwenden, um Azure DevOps- und GitHub-Aktionen zu verbinden. Weitere Informationen zu diesem Ansatz finden Sie unter Konfigurieren einer App, um einem externen Identitätsanbieter zu vertrauen.
Zuweisen von Berechtigungen zu Ihrer verwalteten Identität in Azure DevOps
Führen Sie die folgenden Schritte aus, um Dem Mitwirkendenteam Ihre verwaltete Identität zuzuweisen:
Melden Sie sich bei Ihrem Projekt (
https://dev.azure.com/{Your_Organization/Your_Project}
).Navigieren Sie zu Projekteinstellungen.
Wählen Sie "Allgemeine>Berechtigungen" aus.
Wählen Sie die Gruppe "Mitwirkende" aus.
Wählen Sie die Registerkarte "Mitglieder" und dann "Hinzufügen" aus.
Suchen und suchen Sie die verwaltete Identität.
Wählen Sie "Speichern" aus, um der Gruppe "Mitwirkende" die Identität hinzuzufügen.
Erstellen von GitHub-Geheimnissen
Sie müssen die Client-ID, Die Mandanten-ID und die Abonnement-ID Ihrer verwalteten Identität für die Anmeldeaktion angeben. Diese Werte werden in GitHub-Geheimschlüsseln gespeichert und in Ihrem Workflow referenziert.
Wechseln Sie in GitHub zu Ihrem Repository.
Gehen Sie im Navigationsmenü auf Einstellungen.
Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.
Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.
Erstellen Sie Geheimnisse für
AZURE_CLIENT_ID
,AZURE_TENANT_ID
undAZURE_SUBSCRIPTION_ID
. Verwenden Sie diese Werte aus Ihrer verwalteten Identität für Ihre GitHub-Geheimschlüssel:GitHub-Geheimnis Microsoft Entra-Anwendung AZURE_CLIENT_ID Anwendungs-ID (Client) AZURE_TENANT_ID Verzeichnis-ID (Mandant) AZURE_SUBSCRIPTION_ID Abonnement-ID Speichern Sie jedes Geheimnis, indem Sie Geheimnis hinzufügen auswählen.
Erstellen eines GitHub-Workflows, der ein Artefakt erstellt
GitHub-Workflows sind eine Reihe von Aktionen (z. B. Aufgaben in Azure Pipelines). Dieser Workflow automatisiert den Prozess des Erstellens, Testens, Verpackens und Veröffentlichens eines .NET-Projekts in Azure Artifacts mithilfe einer verwalteten Identität und Verbundauthentifizierung. Der Workflow:
- Verwendet die Azure/Login-Aktion , um sich mit einer verwalteten Identität bei Azure anzumelden.
- Installiert den Anmeldeinformationsanbieter für Azure Artifacts.
- Extrahiert ein Zugriffstoken mithilfe der Azure CLI und konfiguriert den Authentifizierungsanbieter für die Verwendung des Azure DevOps-Tokens.
- Richtet eine .NET Core CLI-Umgebung mit der Setup-dotnet-Aktion ein.
- Stellt Abhängigkeiten wieder her, erstellt das Projekt und seine Abhängigkeiten in einer Reihe von Binärdateien und führt alle Komponententests aus, die dem Projekt zugeordnet sind.
- Packt den Code in ein NuGet-Paket mit der Umgebungsvariablen GitHub Run ID, die in der Versionsnummer enthalten ist.
- Veröffentlicht das NuGet-Paket in Azure Artifacts.
Erstellen einer neuen YAML-Datei
Erstellen Sie in Ihrem Repository auf GitHub eine neue YAML-Datei im
.github/workflows
Verzeichnis.Kopieren Sie den folgenden Inhalt in Ihre YAML-Datei. Passen Sie die
AZURE_ARTIFACTS_FEED_URL
Werte und DieDOTNET_VERSION
WerteBUILD_CONFIGURATION
an.- Legen Sie
AZURE_ARTIFACTS_FEED_URL
die Registrierungs-URL für Ihren Azure Artifacts-Feed fest. - Legen Sie die
BUILD_CONFIGURATION
fest. - Legen Sie
DOTNET_VERSION
diese Einstellung auf die Version Ihres Projekts fest.
name: Push a NuGet package to Azure Artifacts with managed identity and federated authentication on: push: branches: - main permissions: id-token: write # Require write permission to Fetch an federated identity token. contents: read # Require read permission to access the repository contents. env: AZURE_ARTIFACTS_FEED_URL: https://pkgs.dev.azure.com/myorg/nuget-artifact/_packaging/Fabrikam_Feed/nuget/v3/index.json BUILD_CONFIGURATION: 'Release' # set this to the appropriate build configuration DOTNET_VERSION: '6.0' NuGetDirectory: ${{ github.workspace}}/nuget VSS_NUGET_URI_PREFIXES: https://pkgs.dev.azure.com/myorg/ jobs: build: runs-on: ubuntu-latest steps: # Checkout the repo - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - name: Azure CLI Login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # Setup .NET Core SDK - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_VERSION }} # Run dotnet build and package - name: dotnet build and test run: | dotnet restore dotnet build --configuration '${{ env.BUILD_CONFIGURATION }}' dotnet test --configuration '${{ env.BUILD_CONFIGURATION }}' # Create the NuGet package in the folder from the environment variable NuGetDirectory - run: dotnet pack --configuration Release --output ${{ env.NuGetDirectory }} # Publish the NuGet package as an artifact, so they can be used in the following jobs - uses: actions/upload-artifact@v3 with: name: nuget if-no-files-found: error retention-days: 7 path: ${{ env.NuGetDirectory }}/*.nupkg az-artifacts-build-and-deploy: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - name: Azure CLI Login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: actions/download-artifact@v3 with: name: nuget path: ${{ env.NuGetDirectory }} - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_VERSION }} source-url: ${{ env.AZURE_ARTIFACTS_FEED_URL }} env: NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Install credential provider for Azure Artifacts run: sh -c "$(curl -fsSL https://aka.ms/install-artifacts-credprovider.sh)" - name: Extract access token run: | accessToken=$(az account get-access-token --query accessToken --resource 499b84ac-1321-427f-aa17-267ca6975798 -o tsv) echo "::add-mask::$accessToken" echo "ACCESS_TOKEN=$accessToken" >> $GITHUB_ENV - name: Configure authentication provider to use Azure DevOps token run: | echo "VSS_NUGET_ACCESSTOKEN=$ACCESS_TOKEN" >> $GITHUB_ENV - name: dotnet build and publish run: | dotnet restore dotnet build --configuration '${{ env.BUILD_CONFIGURATION }}' dotnet pack --configuration '${{ env.BUILD_CONFIGURATION }}' --output ./nupkg --version-suffix ${{ github.run_id }} - name: 'Publish the package to Azure Artifacts' run: dotnet nuget push ${{ env.NuGetDirectory }}/*.nupkg --api-key AzureDevOps --source ${{ env.AZURE_ARTIFACTS_FEED_URL }}
- Legen Sie
Voraussetzungen
- Ein GitHub-Konto mit einem Repository. Treten Sie GitHub bei, und erstellen Sie ein Repository.
- Ein Azure Artifact-Feed, in den Sie Ihr NuGet-Paket von einem GitHub-Workflow übertragen. Erste Schritte mit NuGet-Paketen.
- Ein Azure DevOps Personal Access Token (PAT), das mit Ihrer GitHub-Aktion verwendet werden soll. Erstellen Sie ein PAT.
- Ihr PAT muss über Lese-, Schreib- und Verwaltungsberechtigungen verfügen.
Authentifizieren bei Azure Pipelines
Verwenden Sie ein persönliches Zugriffstoken (PAT), um Ihr GitHub-Konto mit Azure DevOps zu verbinden. Sie können ein PAT aus Azure DevOps generieren und dann als GitHub-Geheimnis speichern. Verweisen Sie in Ihrem GitHub-Workflow auf das Geheimnis, damit sich Ihre GitHub-Aktion bei Ihrem Azure DevOps-Projekt authentifizieren kann.
Öffnen Sie Ihr GitHub-Repository, und navigieren Sie zu Einstellungen.
Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.
Fügen Sie Ihr PAT ein, und geben Sie ihm den Namen
AZURE_DEVOPS_TOKEN
.Klicken Sie auf Add secret (Geheimnis hinzufügen).
Erstellen eines GitHub-Workflows, der ein Artefakt erstellt
GitHub-Workflows sind eine Reihe von Aktionen (z. B. Aufgaben in Azure Pipelines). Für diesen Workflow gilt Folgendes:
- Richtet eine .NET Core CLI-Umgebung mit der Setup-dotnet-Aktion ein.
- Stellt Abhängigkeiten wieder her, erstellt das Projekt und seine Abhängigkeiten in einer Reihe von Binärdateien und führt alle Komponententests aus, die dem Projekt zugeordnet sind.
- Packt den Code in ein NuGet-Paket mit der Umgebungsvariablen GitHub Run ID, die in der Versionsnummer enthalten ist.
- Veröffentlicht das NuGet-Paket in Azure Artifacts.
Erstellen einer neuen YAML-Datei
Erstellen Sie in Ihrem Repository auf GitHub eine neue YAML-Datei im
.github/workflows
Verzeichnis.Kopieren Sie den folgenden Inhalt in Ihre YAML-Datei. Passen Sie die
AZURE_ARTIFACTS_FEED_URL
Werte und DieDOTNET_VERSION
WerteBUILD_CONFIGURATION
an.- Legen Sie
AZURE_ARTIFACTS_FEED_URL
die Registrierungs-URL für Ihren Azure Artifacts-Feed fest. - Legen Sie die
BUILD_CONFIGURATION
fest. - Legen Sie
DOTNET_VERSION
diese Einstellung auf die Version Ihres Projekts fest.
name: Push a NuGet package to Azure Artifacts on: push: branches: - main env: AZURE_ARTIFACTS_FEED_URL: https://pkgs.dev.azure.com/myorg/nuget-artifact/_packaging/Fabrikam_Feed/nuget/v3/index.json BUILD_CONFIGURATION: 'Release' # set this to the appropriate build configuration DOTNET_VERSION: '6.x' jobs: build: runs-on: ubuntu-latest steps: # Checkout the repo - uses: actions/checkout@v2 # Setup .NET Core SDK - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.DOTNET_VERSION }} # Run dotnet build and package - name: dotnet build and test run: | dotnet restore dotnet build --configuration '${{ env.BUILD_CONFIGURATION }}' dotnet test --configuration '${{ env.BUILD_CONFIGURATION }}' az-artifacts-build-and-deploy: needs: build runs-on: ubuntu-latest steps: # Checkout the repo - uses: actions/checkout@v2 # Setup .NET Core SDK - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.DOTNET_VERSION }} source-url: ${{ env.AZURE_ARTIFACTS_FEED_URL }} env: NUGET_AUTH_TOKEN: ${{ secrets.AZURE_DEVOPS_TOKEN }} # Run dotnet build and package - name: dotnet build and publish run: | dotnet restore dotnet build --configuration '${{ env.BUILD_CONFIGURATION }}' dotnet pack -c '${{ env.BUILD_CONFIGURATION }}' --version-suffix $GITHUB_RUN_ID # Publish the package to Azure Artifacts - name: 'dotnet publish' run: dotnet nuget push --api-key AzureArtifacts bin/Release/*.nupkg
- Legen Sie
Wechseln Sie zu Ihrem Azure Artifacts-Feed, um zu überprüfen, ob das von Ihnen pushte Paket angezeigt wird.
Bereinigen von Ressourcen
Wenn Sie Ihren GitHub-Workflow künftig nicht mehr verwenden werden, deaktivieren Sie den Workflow.