Używanie źródła danych usługi Azure Artifacts jako prywatnego repozytorium programu PowerShell
Azure DevOps Services
Usługa Azure Artifacts umożliwia łatwe udostępnianie skryptów programu PowerShell między zespołami w celu promowania współpracy i maksymalizacji skuteczności. Przechowując moduły programu PowerShell w prywatnym repozytorium, możesz dać członkom zespołu możliwość szybkiego pobierania lub aktualizowania tych skryptów przy użyciu wiersza polecenia.
Ten artykuł przeprowadzi Cię przez proces konfigurowania źródła danych usługi Azure Artifacts jako prywatnego repozytorium programu PowerShell do przechowywania i udostępniania modułów programu PowerShell. Dowiesz się, jak:
- Tworzenie osobistego tokenu dostępu
- Tworzenie nowego źródła danych do przechowywania modułów programu PowerShell
- Tworzenie, pakowanie i publikowanie modułów programu PowerShell
- Połączenie do kanału informacyjnego za pomocą programu PowerShell
- Używanie prywatnego repozytorium programu PowerShell z usługą Azure Pipelines
Wymagania wstępne
- NuGet.exe
- Dostawca poświadczeń usługi Azure Artifacts
- Organizacja: Azure DevOps. Utwórz organizację, jeśli jeszcze jej nie masz.
- Źródło danych usługi Azure Artifacts. Utwórz nowe źródło danych , jeśli jeszcze go nie masz.
Tworzenie osobistego tokenu dostępu
Użycie osobistego tokenu dostępu (PAT) to doskonały sposób uwierzytelniania za pomocą usługi Azure DevOps bez używania poświadczeń podstawowych. Aby uzyskać więcej informacji, zobacz Używanie osobistych tokenów dostępu.
Przejdź do organizacji usługi Azure DevOps
https://dev.azure.com/<ORGANIZATION_NAME>/
Wybierz ikonę ustawień użytkownika, a następnie wybierz pozycję Osobiste tokeny dostępu.
Wybieranie nowego tokenu
Wprowadź nazwę identyfikatora pat, a następnie wybierz datę wygaśnięcia .
Wybierz pozycję Zdefiniowane niestandardowe, a następnie wybierz pozycję Pakowanie>odczytu, zapisu i zarządzania.
Po zakończeniu wybierz pozycję Utwórz . Skopiuj i zapisz swój pat w bezpiecznej lokalizacji.
Tworzenie modułu
Utwórz nowy folder Get-Hello. Przejdź do folderu i utwórz nowy plik 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
Wklej następujący skrypt do pliku Get-Hello.psm1 :
Function Get-Hello{ Write-Host "Hello from my Azure DevOps Services Package." }
Utwórz manifest modułu, uruchamiając następujące polecenie w ścieżce katalogu Get-Hello .
New-ModuleManifest -Path .\Get-Hello.psd1
Otwórz plik Get-Hello.psd1 i znajdź zmienną
RootModule
. Zastąp pusty ciąg ścieżką do pliku Get-Hello.psm1 w następujący sposób:RootModule = 'Get-Hello.psm1'
Sekcja
FunctionsToExport
ma na celu zdefiniowanie listy funkcji, które zostaną wyeksportowane z tego modułu. Dodaj funkcję Get-Hello w następujący sposób:FunctionsToExport = @('Get-Hello')
Znajdź sekcję
FileList
i dodaj następującą listę plików, które powinny być spakowane przy użyciu modułu.FileList = @('./Get-Hello.psm1')
Pakowanie i publikowanie modułu
Utwórz plik nuspec dla modułu. To polecenie spowoduje utworzenie pliku Get-Hello.nuspec zawierającego metadane potrzebne do spakowania modułu.
nuget spec Get-Hello
Uruchom następujące polecenie, aby spakować moduł.
nuget pack Get-Hello.nuspec
Uruchom następujące polecenie, aby dodać adres URL źródła kanału informacyjnego. Pakiet NuGet w wersji 3 nie jest obsługiwany. Upewnij się, że używasz wersji 2 w adresie URL źródła źródła danych.
Źródło danych o zakresie organizacji:
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>"
Źródło danych o zakresie projektu:
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>"
Opublikuj pakiet w kanale informacyjnym.
nuget push -Source "<FEED_NAME>" -ApiKey "<ANY_STRING>" "<PACKAGE_PATH>"
Ważne
Numer wersji w manifeście modułu (psd1) i plik nuspec musi być zgodny.
Połączenie do źródła danych jako repozytorium programu PowerShell
Otwórz okno wiersza polecenia programu PowerShell z podwyższonym poziomem uprawnień.
Skonfiguruj poświadczenia do uwierzytelniania w usłudze Azure Artifacts. Zastąp symbole zastępcze odpowiednimi informacjami.
$patToken = "<PERSONAL_ACCESS_TOKEN>" | ConvertTo-SecureString -AsPlainText -Force
$credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("<USER_NAME>", $patToken)
Zarejestruj repozytorium programu PowerShell. Link
SourceLocation
można znaleźć, przechodząc do sekcji Artifacts> Połączenie to Feed>NuGet.exe w obszarze Adres URL źródła konfiguracji projektu.Źródło danych o zakresie projektu:
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
Źródło danych o zakresie organizacji:
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
Jeśli nadal używasz starszych
visualstudio.com
adresów URL, użyj następującego polecenia:Źródło danych o zakresie projektu:
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
Źródło danych o zakresie organizacji:
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
Napiwek
Niektóre wersje programu PowerShell wymagają ponownego uruchomienia nowej sesji po wykonaniu
Register-PSRepository
polecenia cmdlet, aby uniknąć ostrzeżenia Nie można rozpoznać źródła pakietu.Zarejestruj źródło pakietu:
Źródło danych o zakresie projektu:
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
Źródło danych o zakresie organizacji:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Uruchom następujące polecenie, aby potwierdzić, czy repozytorium zostało pomyślnie zarejestrowane. To polecenie pobiera wszystkie zarejestrowane repozytoria dla bieżącego użytkownika:
Get-PSRepository
Uruchom następujące polecenie, jeśli chcesz znaleźć wszystkie moduły w repozytorium.
Find-Module -Repository PowershellAzureDevopsServices
Uruchom następujące polecenie, jeśli chcesz zainstalować moduł Get-Hello .
Install-Module -Name Get-Hello -Repository PowershellAzureDevopsServices
Jeśli polecenie Install-Module zwraca następujący błąd: Nie można rozpoznać źródła pakietu, uruchom Register-PackageSource
ponownie polecenie cmdlet z flagą w Trusted
następujący sposób:
Register-PackageSource -Name "PowershellAzureDevopsServices" -Location "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2" -ProviderName NuGet -Trusted -Trusted -SkipValidate -Credential $credsAzureDevopsServices
Uwaga
Jeśli twoja organizacja korzysta z zapory lub serwera proxy, upewnij się, że zezwalasz na adresy URL i adresy IP domeny usługi Azure Artifacts.
Rejestrowanie i instalowanie modułu przy użyciu usługi Azure Pipelines
W tym przykładzie przedstawiono proces uwierzytelniania i instalowania modułu programu PowerShell przy użyciu potoku YAML. Aby użyć osobistego tokenu dostępu w potoku, należy uwzględnić go jako zmienną potoku w następujący sposób:
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Potoki, wybierz potok, a następnie wybierz pozycję Edytuj , aby edytować potok.
Wybierz pozycję Zmienne w prawym górnym rogu, a następnie wybierz + znak, aby utworzyć nową zmienną.
Podaj nazwę zmiennej, a następnie wklej osobisty token dostępu w polu tekstowym Wartość.
Upewnij się, że zaznaczono pole wyboru Zachowaj tę wartość wpisów tajnych . Po zakończeniu wybierz przycisk OK . Teraz możesz przystąpić do używania zmiennej w potoku.
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)
Powiązane artykuły
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla