Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services
Rozpocznij pracę przy użyciu funkcji GitHub Actions i usługi Azure Artifacts razem. Funkcja GitHub Actions ułatwia automatyzowanie przepływów pracy tworzenia oprogramowania z poziomu usługi GitHub. Do wdrożenia do kanału usługi Azure Artifacts można użyć GitHub Actions.
Możesz uwierzytelnić się przy użyciu tożsamości zarządzanej lub osobistego tokenu dostępu (PAT). Pat to token generowany przez użytkownika, który udziela dostępu do zasobów usługi Azure DevOps. Tożsamość zarządzana to typ jednostki usługi, którą platforma Azure zarządza automatycznie, aby umożliwić uwierzytelnianie bez hasła między usługami platformy Azure i usługą Azure DevOps. Tożsamość zarządzana to bezpieczniejsza opcja uwierzytelniania.
Wymagania wstępne
- Konto usługi GitHub z repozytorium. Dołącz do usługi GitHub i utwórz repozytorium.
- Kanał usługi Azure Artifacts, do którego przesyłasz pakiet NuGet z przepływu pracy usługi GitHub. Rozpocznij pracę z pakietami NuGet.
- Skonfiguruj tożsamość zarządzaną przypisaną przez użytkownika przy użyciu skojarzonego poświadczenia federacyjnego.
- Utwórz zarządzaną przez użytkownika tożsamość.
- Skopiuj wartości identyfikatora klienta, identyfikatora subskrypcji i identyfikatora katalogu (dzierżawy), aby użyć ich później w przepływie pracy funkcji GitHub Actions.
- Przypisz odpowiednią rolę do zarządzanej tożsamości przypisanej przez użytkownika.
- Skonfiguruj poświadczenie tożsamości federacyjnej na przypisanej przez użytkownika zarządzanej tożsamości do ufania tokenom wydanym przez GitHub Actions do Twojego repozytorium GitHub.
- Uprawnienie do przypisywania tożsamości zarządzanej do grupy Współautor w usłudze Azure DevOps. Administratorzy projektu i administratorzy kolekcji mają to uprawnienie.
Uwaga
Alternatywną metodą jest zastosowanie aplikacji Microsoft Entra z principałem usługi oraz poświadczeniem uwierzytelniania federacyjnego do połączenia Azure DevOps z GitHub Actions. Aby dowiedzieć się więcej na temat tego podejścia, zobacz Konfigurowanie aplikacji do zaufania zewnętrznemu dostawcy tożsamości.
Przypisywanie uprawnień do tożsamości zarządzanej w usłudze Azure DevOps
Aby przypisać tożsamość zarządzaną do zespołu Współtwórca, wykonaj następujące kroki:
Zaloguj się do projektu (
https://dev.azure.com/{Your_Organization/Your_Project}).Przejdź do ustawień projektu.
Wybierz pozycję Uprawnienia ogólne>.
Wybierz grupę Współautorzy .
Wybierz kartę Członkowie , a następnie wybierz pozycję Dodaj.
Wyszukaj i znajdź tożsamość zarządzaną.
Wybierz pozycję Zapisz , aby dodać tożsamość do grupy Współautorzy .
Twórz sekrety GitHub
Musisz podać identyfikator klienta tożsamości zarządzanej
W usłudze GitHub przejdź do repozytorium.
Przejdź do pozycji Ustawienia w menu nawigacji.
Wybierz bezpieczeństwo > tajne i zmienne > akcje.
Wybierz opcję Nowy sekret repozytorium.
Utwórz tajne wpisy dla
AZURE_CLIENT_ID,AZURE_TENANT_IDiAZURE_SUBSCRIPTION_ID. Użyj tych wartości z tożsamości zarządzanej dla sekretów GitHub.Sekret GitHub Aplikacja Microsoft Entra AZURE_CLIENT_ID Identyfikator aplikacji (klient) AZURE_TENANT_ID Identyfikator katalogu (klienta) AZURE_SUBSCRIPTION_ID Identyfikator subskrypcji Zapisz każdy wpis tajny, wybierając pozycję Dodaj wpis tajny.
Utwórz przepływ pracy w GitHubie, który buduje artefakt
Przepływy pracy usługi GitHub to seria akcji, podobnie jak zadania w usłudze Azure Pipelines. Ten przepływ pracy automatyzuje proces tworzenia, testowania, pakowania i publikowania projektu platformy .NET w usłudze Azure Artifacts przy użyciu tożsamości zarządzanej i uwierzytelniania federacyjnego. Przepływ pracy:
- Używa akcji azure/login do logowania się na platformie Azure przy użyciu tożsamości zarządzanej.
- Instaluje dostawcę poświadczeń dla usługi Azure Artifacts.
- Wyodrębnia token dostępu przy użyciu interfejsu wiersza polecenia platformy Azure i konfiguruje dostawcę uwierzytelniania do korzystania z tokenu usługi Azure DevOps.
- Konfiguruje środowisko CLI platformy .NET Core za pomocą akcji setup-dotnet.
- Przywraca zależności, kompiluje projekt i jego zależności w zestawie plików binarnych i uruchamia wszystkie testy jednostkowe skojarzone z projektem.
- Pakuje kod do pakietu NuGet, uwzględniając zmienną środowiskową "GitHub Run ID" w numerze wersji.
- Publikuje pakiet NuGet w usłudze Azure Artifacts.
Tworzenie nowego pliku YAML
W repozytorium GitHub utwórz nowy plik YAML w
.github/workflowskatalogu.Skopiuj następującą zawartość do pliku YAML. Dostosuj wartości
AZURE_ARTIFACTS_FEED_URL,BUILD_CONFIGURATIONiDOTNET_VERSION.- Ustaw
AZURE_ARTIFACTS_FEED_URLjako URL rejestracji dla feedu usługi Azure Artifacts. - Ustaw wartość
BUILD_CONFIGURATION. - Ustaw wersję
DOTNET_VERSIONdla swojego projektu.
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 }}- Ustaw
Wymagania wstępne
- Konto usługi GitHub z repozytorium. Dołącz do usługi GitHub i utwórz repozytorium.
- Kanał usługi Azure Artifacts, do którego przesyłasz pakiet NuGet z przepływu pracy usługi GitHub. Rozpocznij pracę z pakietami NuGet.
- Osobisty token dostępu (PAT) usługi Azure DevOps do używania z akcją GitHub.
Utwórz osobisty token dostępu (PAT).
- Twój PAT musi mieć uprawnienia do odczytu, zapisu i zarządzania opakowaniami.
Uwierzytelnianie za pomocą usługi Azure Pipelines
Użyj osobistego tokenu dostępu (PAT), aby połączyć konto usługi GitHub z usługą Azure DevOps. Możesz wygenerować identyfikator PAT z poziomu usługi Azure DevOps, a następnie zapisać go jako wpis tajny usługi GitHub. W przepływie pracy usługi GitHub odwołuj się do wpisu tajnego, aby akcja usługi GitHub mogła uwierzytelniać się w projekcie usługi Azure DevOps.
Otwórz repozytorium GitHub i przejdź do pozycji Ustawienia.
Wybierz bezpieczeństwo > tajne i zmienne > akcje.
Wklej swój PAT i nadaj mu nazwę
AZURE_DEVOPS_TOKEN.Wybierz przycisk Add secret (Dodaj wpis tajny).
Utwórz przepływ pracy w GitHubie, który buduje artefakt
Przepływy pracy usługi GitHub to seria akcji (takich jak zadania w usłudze Azure Pipelines). Ten przepływ pracy:
- Konfiguruje środowisko CLI platformy .NET Core za pomocą akcji setup-dotnet.
- Przywraca zależności, kompiluje projekt i jego zależności w zestawie plików binarnych i uruchamia wszystkie testy jednostkowe skojarzone z projektem.
- Pakuje kod do pakietu NuGet ze zmienną środowiskową Identyfikator przebiegu usługi GitHub uwzględnioną w numerze wersji.
- Publikuje pakiet NuGet w usłudze Azure Artifacts.
Tworzenie nowego pliku YAML
W repozytorium GitHub utwórz nowy plik YAML w
.github/workflowskatalogu.Skopiuj następującą zawartość do pliku YAML. Dostosuj wartości
AZURE_ARTIFACTS_FEED_URL,BUILD_CONFIGURATIONiDOTNET_VERSION.- Ustaw
AZURE_ARTIFACTS_FEED_URLjako URL rejestracji dla feedu usługi Azure Artifacts. - Ustaw wartość
BUILD_CONFIGURATION. - Ustaw
DOTNET_VERSIONjako wersję projektu.
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 bin/Release/*.nupkg --api-key AzureDevOps --source ${{ env.AZURE_ARTIFACTS_FEED_URL }}- Ustaw
Przejdź do kanału usługi Azure Artifacts, aby sprawdzić, czy widzisz przesłany pakiet.
Czyszczenie zasobów
Jeśli nie planujesz kontynuować korzystania z przepływu pracy usługi GitHub, wyłącz przepływ pracy.