Samouczek: używanie usługi Azure Storage do tworzenia artefaktów
Ważny
Wiele usług platformy Azure ma wtyczki Jenkins. Niektóre z tych wtyczek nie będą obsługiwane od 29 lutego 2024 r. Interfejs wiersza polecenia platformy Azure to obecnie zalecany sposób integracji serwera Jenkins z usługami platformy Azure. Aby uzyskać więcej informacji, zapoznaj się z artykułem wtyczki serwera Jenkins dla usługi Azure.
W tym artykule pokazano, jak używać usługi Blob Storage jako repozytorium artefaktów kompilacji utworzonych przez rozwiązanie jenkins continuous integration (CI) lub jako źródło plików do pobrania do użycia w procesie kompilacji. Jednym ze scenariuszy, w których można znaleźć to rozwiązanie przydatne, jest kodowanie w elastycznym środowisku deweloperskim (przy użyciu języka Java lub innych języków), kompilacje działają w oparciu o ciągłą integrację i potrzebujesz repozytorium artefaktów kompilacji, aby na przykład udostępnić je innym członkom organizacji, klientom lub utrzymywać archiwum. Innym scenariuszem jest to, że samo zadanie kompilacji wymaga innych plików, na przykład zależności do pobrania w ramach danych wejściowych kompilacji.
Warunki wstępne
- Subskrypcja platformy Azure: Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto platformy Azure przed rozpoczęciem swojej pracy.
- Serwera Jenkins: jeśli nie masz zainstalowanego serwera Jenkins, utwórz serwer Jenkins na platformie Azure.
- Azure CLI: Zainstaluj Azure CLI (wersja 2.0.67 lub nowsza) na serwerze Jenkins.
- konto magazynu Azure: jeśli nie masz jeszcze konta magazynu, utwórz konto magazynu.
Dodaj poświadczenia Azure potrzebne do wykonania Azure CLI
Przejdź do portalu serwera Jenkins.
Z menu wybierz pozycję Zarządzaj usługą Jenkins.
Wybierz opcję Zarządzaj poświadczeniami.
Wybierz globalną domenę .
Wybierz Dodaj poświadczenia.
Wypełnij wymagane pola w następujący sposób:
- Kind: wybierz nazwę użytkownika z hasłem.
-
nazwa użytkownika: określ
appId
podmiotu usługi. -
hasło: określ
password
głównego użytkownika usługi. -
identyfikator: podaj identyfikator poświadczeń, taki jak
azuresp
. - Opis: Opcjonalnie dołącz znaczący opis dla swojego środowiska.
Wybierz pozycję OK, aby utworzyć poświadczenie.
Utwórz zadanie potoku do przesłania artefaktów kompilacji
Poniższe kroki pomogą ci utworzyć zadanie pipeline. Zadanie potokowe tworzy kilka plików i przesyła pliki do konta magazynu przy użyciu narzędzia Azure CLI.
Na pulpicie nawigacyjnym narzędzia Jenkins wybierz pozycję Nowy element.
Nadaj zadaniu nazwę myjob, wybierz Pipeline, a następnie wybierz OK.
W sekcji potoku
konfiguracji zadania wybierz pozycję Skrypt potoku i wklej następujące polecenie wScript . Edytuj elementy zastępcze, aby odpowiadały wartościom środowiska.pipeline { agent any environment { AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999' AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999' AZURE_STORAGE_ACCOUNT='myStorageAccount' } stages { stage('Build') { steps { sh 'rm -rf *' sh 'mkdir text' sh 'echo Hello Azure Storage from Jenkins > ./text/hello.txt' sh 'date > ./text/date.txt' } post { success { withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' echo $container_name # Login to Azure with ServicePrincipal az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID # Set default subscription az account set --subscription $AZURE_SUBSCRIPTION_ID # Execute upload to Azure az storage container create --account-name $AZURE_STORAGE_ACCOUNT --name $JOB_NAME --auth-mode login az storage blob upload-batch --destination ${JOB_NAME} --source ./text --account-name $AZURE_STORAGE_ACCOUNT # Logout from Azure az logout ''' } } } } } }
Wybierz pozycję Skompiluj teraz, aby uruchomić myjob.
Sprawdź dane wyjściowe konsoli pod kątem stanu. Kiedy akcja po kompilacji przekazuje artefakty kompilacji, komunikaty o stanie przechowywania w usłudze Azure są zapisywane w konsoli.
Jeśli wystąpi błąd podobny do poniższego, oznacza to, że musisz udzielić dostępu na poziomie kontenera:
ValidationError: You do not have the required permissions needed to perform this operation.
Jeśli zostanie wyświetlony ten komunikat o błędzie, zapoznaj się z następującymi artykułami, aby rozwiązać problem:Po pomyślnym zakończeniu zadania sprawdź artefakty kompilacji, otwierając publiczny blob.
- Zaloguj się do witryny Azure Portal.
- Wybierz pozycję Storage.
- Wybierz nazwę konta magazynu użytą dla serwera Jenkins.
- Wybierz Containers.
- Wybierz kontener pod nazwą myjobna liście blobów.
- Powinny zostać wyświetlone następujące dwa pliki: hello.txt i date.txt.
- Skopiuj adres URL jednego z tych elementów i wklej go w przeglądarce.
- Widzisz plik tekstowy, który został przesłany jako artefakt kompilacji.
Kluczowe punkty:
- Nazwy kontenerów i obiektów blob muszą być zapisane małymi literami (z rozróżnieniem wielkości liter) w usłudze Azure Storage.
Utwórz zadanie potoku do pobrania z Azure Blob Storage
W poniższych krokach pokazano, jak skonfigurować zadanie potoku w celu pobrania elementów z usługi Azure Blob Storage.
W sekcji potoku
konfiguracji zadania wybierz pozycję skrypt potokowy i wklej następujący kod do polaSkrypt . Edytuj elementy zastępcze, aby odpowiadały wartościom dla twojego środowiska.pipeline { agent any environment { AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999' AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999' AZURE_STORAGE_ACCOUNT='myStorageAccount' } stages { stage('Build') { steps { withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' # Login to Azure with ServicePrincipal az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID # Set default subscription az account set --subscription $AZURE_SUBSCRIPTION_ID # Execute upload to Azure az storage blob download --account-name $AZURE_STORAGE_ACCOUNT --container-name myjob --name hello.txt --file ${WORKSPACE}/hello.txt --auth-mode login # Logout from Azure az logout ''' } } } } }
Po uruchomieniu kompilacji sprawdź wyjście konsoli z historii kompilacji. Alternatywnie możesz również sprawdzić lokalizację pobierania, aby upewnić się, że oczekiwane bloby zostały pomyślnie pobrane.