Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services
Ga samen aan de slag met GitHub Actions en Azure Artifacts. GitHub Actions helpt u bij het automatiseren van uw werkstromen voor softwareontwikkeling vanuit GitHub. U kunt GitHub Actions gebruiken om te implementeren in een Azure Artifacts-feed.
U kunt zich verifiëren met behulp van een beheerde identiteit of een persoonlijk toegangstoken (PAT). Een PAT is een door de gebruiker gegenereerd token dat toegang verleent tot Azure DevOps-resources. Een beheerde identiteit is een type service-principal dat automatisch wordt beheerd om verificatie zonder wachtwoord mogelijk te maken tussen Azure-services en Azure DevOps. Beheerde identiteit is de veiligere verificatieoptie.
Vereisten
- Een GitHub-account met een opslagplaats. Neem deel aan GitHub en maak een opslagplaats.
- Een Azure Artifacts-feed waarnaar u uw NuGet-pakket pusht vanuit een GitHub-werkstroom. Aan de slag met NuGet-pakketten.
- Stel een door de gebruiker toegewezen beheerde identiteit in met een gekoppelde federatieve referentie.
- Een door een gebruiker toegewezen beheerde identiteit maken.
- Kopieer de waarden voor client-id, abonnements-id en directory-id (tenant) voor later gebruik in uw GitHub Actions workflow.
- Wijs een geschikte rol toe aan uw door de gebruiker toegewezen beheerde identiteit.
- Configureer een federatieve identiteitsreferentie op een door de gebruiker toegewezen beheerde identiteit om tokens te vertrouwen die zijn uitgegeven door GitHub Actions aan uw GitHub-opslagplaats.
- Machtiging om een beheerde identiteit toe te wijzen aan de groep Inzender in Azure DevOps. Projectbeheerders en verzamelingsbeheerders hebben beide deze machtiging.
Notitie
Een alternatieve benadering is het gebruik van een Microsoft Entra-toepassing met een service-principal en federatieve verificatiereferenties om Azure DevOps en GitHub Actions te verbinden. Zie Een app configureren om een externe id-provider te vertrouwen voor meer informatie over deze aanpak.
Machtigingen toewijzen aan uw beheerde identiteit in Azure DevOps
Voer de volgende stappen uit om uw beheerde identiteit toe te wijzen aan het team inzender :
Meld u aan bij uw project (
https://dev.azure.com/{Your_Organization/Your_Project}).Ga naar Project-instellingen.
Selecteer Algemeen>Toestemmingen.
Kies de groep Inzenders .
Selecteer het tabblad Leden en selecteer Vervolgens Toevoegen.
Zoek en vind de beheerde identiteit.
Selecteer Opslaan om de identiteit toe te voegen aan de groep Inzenders .
GitHub-geheimen maken
U moet de client-id, tenant-id en abonnements-id van uw beheerde identiteit opgeven voor de aanmeldingsactie. Deze waarden worden opgeslagen in GitHub-geheimen en waarnaar wordt verwezen in uw werkstroom.
Ga in GitHub naar uw opslagplaats.
Ga naar Instellingen in het navigatiemenu.
Selecteer Beveiliging > Geheimen en variabelen > Acties.
Selecteer Nieuw opslagplaatsgeheim.
Geheimen maken voor
AZURE_CLIENT_ID,AZURE_TENANT_IDenAZURE_SUBSCRIPTION_ID. Gebruik deze waarden uit uw beheerde identiteit voor uw GitHub-geheimen:GitHub-geheim Microsoft Entra toepassing AZURE_CLIENT_ID Applicatie (client) ID AZURE_TENANT_ID Id van directory (tenant) AZURE_SUBSCRIPTION_ID Abonnements-id Sla elk geheim op door Geheim toevoegen te selecteren.
Een GitHub-werkstroom maken waarmee een artefact wordt gebouwd
GitHub-werkstromen zijn een reeks acties, vergelijkbaar met taken in Azure Pipelines. Deze werkstroom automatiseert het proces van het bouwen, testen, verpakken en publiceren van een .NET-project naar Azure Artifacts met behulp van een beheerde identiteit en federatieve verificatie. De werkstroom:
- Hiermee gebruikt u de actie Azure/login om u aan te melden bij Azure met behulp van een beheerde identiteit.
- Installeert de referentieprovider voor Azure Artifacts.
- Extraheert een toegangstoken met behulp van Azure CLI en configureert de verificatieprovider voor het gebruik van het Azure DevOps-token.
- Hiermee stelt u een .NET Core CLI-omgeving in met behulp van de actie setup-dotnet.
- Herstelt afhankelijkheden, bouwt het project en de bijbehorende afhankelijkheden in een set binaire bestanden en voert alle eenheidstests uit die zijn gekoppeld aan het project.
- Verpakt de code in een NuGet-pakket met de omgevingsvariabele GitHub Run ID die is opgenomen in het versienummer.
- Hiermee publiceert u het NuGet-pakket naar Azure Artifacts.
Een nieuw YAML-bestand maken
Maak in uw GitHub-opslagplaats een nieuw YAML-bestand in de
.github/workflowsmap.Kopieer de volgende inhoud naar uw YAML-bestand. Pas de
AZURE_ARTIFACTS_FEED_URL,BUILD_CONFIGURATIONenDOTNET_VERSIONwaarden aan.- Stel
AZURE_ARTIFACTS_FEED_URLin op de register-URL voor uw Azure Artifacts-feed. - Stel de
BUILD_CONFIGURATIONin. - Stel
DOTNET_VERSIONin op de versie van uw project.
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 }}- Stel
Vereisten
- Een GitHub-account met een opslagplaats. Neem deel aan GitHub en maak een opslagplaats.
- Een Azure Artifacts-feed waarnaar u uw NuGet-pakket pusht vanuit een GitHub-werkstroom. Aan de slag met NuGet-pakketten.
- Een persoonlijk azure DevOps-toegangstoken (PAT) dat u met uw GitHub-actie kunt gebruiken.
Maak een PAT.
- Uw PAT moet lees-, schrijf- en beheermachtigingen voor pakketten hebben.
Verifiëren met Azure Pipelines
Gebruik een persoonlijk toegangstoken (PAT) om uw GitHub-account te verbinden met Azure DevOps. U kunt een PAT genereren vanuit Azure DevOps en deze vervolgens opslaan als een GitHub-geheim. Verwijs in uw GitHub-werkstroom naar het geheim, zodat uw GitHub-actie kan worden geverifieerd met uw Azure DevOps-project.
Open uw GitHub-opslagplaats en ga naar Instellingen.
Selecteer Beveiliging > Geheimen en variabelen > Acties.
Plak uw PAT en geef deze de naam
AZURE_DEVOPS_TOKEN.Selecteer Geheim toevoegen.
Een GitHub-werkstroom maken waarmee een artefact wordt gebouwd
GitHub-werkstromen zijn een reeks acties (zoals taken in Azure Pipelines). Deze werkstroom:
- Hiermee stelt u een .NET Core CLI-omgeving in met behulp van de actie setup-dotnet.
- Herstelt afhankelijkheden, bouwt het project en de bijbehorende afhankelijkheden in een set binaire bestanden en voert alle eenheidstests uit die zijn gekoppeld aan het project.
- Verpakt de code in een NuGet-pakket met de omgevingsvariabele GitHub Run ID die is opgenomen in het versienummer.
- Hiermee publiceert u het NuGet-pakket naar Azure Artifacts.
Een nieuw YAML-bestand maken
Maak in uw GitHub-opslagplaats een nieuw YAML-bestand in de
.github/workflowsmap.Kopieer de volgende inhoud naar uw YAML-bestand. Pas de
AZURE_ARTIFACTS_FEED_URL,BUILD_CONFIGURATIONenDOTNET_VERSIONwaarden aan.- Stel
AZURE_ARTIFACTS_FEED_URLin op de register-URL voor uw Azure Artifacts-feed. - Stel de
BUILD_CONFIGURATIONin. - Stel
DOTNET_VERSIONin op de versie van uw project.
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 }}- Stel
Ga naar uw Azure Artifacts-feed om te controleren of u het pakket ziet dat u hebt gepusht.
Resources opschonen
Als u niet van plan bent om uw GitHub-werkstroom te blijven gebruiken, schakelt u de werkstroom uit.