Använda en Azure Artifacts-feed som en privat PowerShell-lagringsplats
Azure DevOps Services
Azure Artifacts är ett enkelt sätt att dela PowerShell-skript mellan team för att främja samarbete och maximera effektiviteten. Genom att lagra PowerShell-moduler på en privat lagringsplats kan du ge medlemmar i ditt team möjlighet att ladda ned eller uppdatera skripten snabbt med hjälp av kommandoraden.
Den här artikeln beskriver hur du konfigurerar Ditt Azure Artifacts-flöde som en privat PowerShell-lagringsplats för att lagra och dela dina PowerShell-moduler. Du lär dig att:
- Skapa en personlig åtkomsttoken
- Skapa en ny feed för att lagra PowerShell-moduler
- Skapa, paketera och publicera PowerShell-moduler
- Anslut till en feed med PowerShell
- Använda den privata PowerShell-lagringsplatsen med Azure Pipelines
Förutsättningar
- NuGet.exe
- Azure Artifacts Credential Provider
- En Azure DevOps-organisation. Skapa en organisation om du inte redan har en.
- En Azure Artifacts-feed. Skapa en ny feed om du inte redan har en.
Skapa en personlig åtkomsttoken
Att använda en personlig åtkomsttoken (PAT) är ett bra sätt att autentisera med Azure DevOps utan att använda dina primära autentiseringsuppgifter. Mer information finns i Använda personliga åtkomsttoken .
Gå till din Azure DevOps-organisation
https://dev.azure.com/<ORGANIZATION_NAME>/
Välj ikonen användarinställningar och välj sedan Personliga åtkomsttoken.
Välj ny token
Ange ett namn för din PAT och välj sedan ett förfallodatum .
Välj Anpassad definierad och välj sedan Paketera>Läsa, skriva och hantera.
Välj Skapa när du är klar. Kopiera och lagra din PAT på en säker plats.
Skapa en modul
Skapa en ny mapp Get-Hello. Navigera i mappen och skapa en ny fil Get-Hello.psm1.
|--- Get-Hello // Parent folder |--- Get-Hello.psm1 // This will become our PowerShell Module |--- Get-Hello.psd1 // This will become our module manifest
Klistra in följande skript i filen Get-Hello.psm1 :
Function Get-Hello{ Write-Host "Hello from my Azure DevOps Services Package." }
Skapa modulmanifestet genom att köra följande kommando i din Get-Hello-katalogsökväg .
New-ModuleManifest -Path .\Get-Hello.psd1
Öppna filen Get-Hello.psd1 och leta reda på variabeln
RootModule
. Ersätt den tomma strängen med sökvägen till filen Get-Hello.psm1 på följande sätt:RootModule = 'Get-Hello.psm1'
Avsnittet
FunctionsToExport
är avsett att definiera listan över funktioner som ska exporteras från den här modulen. Lägg till funktionen Get-Hello på följande sätt:FunctionsToExport = @('Get-Hello')
Leta upp avsnittet
FileList
och lägg till följande lista över filer som ska paketeras med din modul.FileList = @('./Get-Hello.psm1')
Packa och publicera modulen
Skapa nuspec-fil för modulen. Det här kommandot skapar en Get-Hello.nuspec-fil som innehåller metadata som behövs för att packa modulen.
nuget spec Get-Hello
Kör följande kommando för att packa modulen.
nuget pack Get-Hello.nuspec
Kör följande kommando för att lägga till feedkällans URL. NuGet v3 stöds inte. Kontrollera att du använder v2 i feedkällans URL.
Flöde med organisationsomfattning:
nuget sources Add -Name "<FEED_NAME>" -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -username "<USER_NAME>" -password "<PERSONAL_ACCESS_TOKEN>"
Flöde med projektomfattning:
nuget sources Add -Name "<FEED_NAME>" -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -username "<USER_NAME>" -password "<PERSONAL_ACCESS_TOKEN>"
Publicera paketet i feeden.
nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
Viktigt!
Versionsnumret i modulmanifestet (.psd1) och .nuspec-filen måste matcha.
Anslut att mata in som en PowerShell-lagringsplats
Öppna ett upphöjt PowerShell-promptfönster.
Konfigurera dina autentiseringsuppgifter för att autentisera med Azure Artifacts. Ersätt platshållarna med lämplig information.
$patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force
$credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("<USER_NAME>", $patToken)
Registrera din PowerShell-lagringsplats. Du
SourceLocation
hittar länken genom att gå till Artefakter> Anslut till Feed>NuGet.exe under Project setup source URL (Käll-URL för projektinstallation).Flöde med projektomfattning:
Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
Flöde med organisationsomfattning:
Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
Om du fortfarande använder de äldre
visualstudio.com
URL:erna använder du följande kommando i stället:Flöde med projektomfattning:
Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
Flöde med organisationsomfattning:
Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/_packaging/<FEED_NAME>/nuget/v2" -PublishLocation "https://<ORGANIZATION_NAME>.pkgs.visualstudio.com/_packaging/<FEED_NAME>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices
Dricks
Vissa versioner av PowerShell kräver att en ny session startas om efter att cmdleten
Register-PSRepository
har körts för att undvika varningen Det går inte att lösa paketkällan .Registrera paketkällan:
Flöde med projektomfattning:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Flöde med organisationsomfattning:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Kör följande kommando för att bekräfta om lagringsplatsen har registrerats. Det här kommandot hämtar alla registrerade lagringsplatser för den aktuella användaren:
Get-PSRepository
Kör följande kommando om du vill hitta alla moduler på lagringsplatsen.
Find-Module -Repository PowershellAzureDevopsServices
Kör följande kommando om du vill installera Get-Hello-modulen .
Install-Module -Name Get-Hello -Repository PowershellAzureDevopsServices
Om kommandot Install-Module returnerar följande fel: Det går inte att lösa paketkällan kör du cmdleten Register-PackageSource
Trusted
igen med flaggan på följande sätt:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Kommentar
Om din organisation använder en brandvägg eller en proxyserver kontrollerar du att du tillåter URL:er och IP-adresser för Azure Artifacts-domäner.
Registrera och installera modulen med Hjälp av Azure Pipelines
Det här exemplet illustrerar processen med att autentisera och installera en PowerShell-modul med hjälp av en YAML-pipeline. Om du vill använda din personliga åtkomsttoken i pipelinen bör du inkludera den som en pipelinevariabel enligt följande:
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Pipelines, välj din pipeline och välj sedan Redigera för att redigera din pipeline.
Välj Variabler i det övre högra hörnet och välj + sedan tecknet för att skapa en ny variabel.
Ange ett namn för variabeln och klistra sedan in din personliga åtkomsttoken i textrutan Värde .
Kontrollera att du markerar kryssrutan Behåll det här värdet hemligt . Välj Ok när du är klar. Nu är du redo att använda variabeln i pipelinen.
trigger:
- main
pool:
vmImage: 'Windows-latest'
variables:
PackageFeedEndpoint: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2' ## For project scoped feeds use: 'https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2'
PackageFeedEndpointCredential: '{"endpointCredentials": [{"endpoint":"$(PackageFeedEndpoint)", "username":"Admin", "password":"$(AZURE_DEVOPS_PAT)"}]}'
steps:
- powershell: |
Register-PSRepository -Name "psRepoPipeline" -SourceLocation '$(PackageFeedEndpoint)' -InstallationPolicy Trusted
displayName: 'Register Azure Artifacts Feed as PSRepository'
env:
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: $(PackageFeedEndpointCredential)
- powershell: |
echo (Get-PSRepository)
displayName: 'Get all module repositories'
- powershell: |
Find-Module -Name "Get-Hello" | Install-Module -Confirm:$false -Force
displayName: 'Install the Get-Hello PowerShell module'
env:
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: $(PackageFeedEndpointCredential)
Relaterade artiklar
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för