Udostępnij za pośrednictwem


Samouczek: używanie usługi Azure Storage do tworzenia artefaktów

Ważne

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 platformy 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.

Wymagania wstępne

Dodawanie poświadczeń platformy Azure wymaganych do wykonania interfejsu wiersza polecenia platformy Azure

  1. Przejdź do portalu serwera Jenkins.

  2. Z menu wybierz pozycję Zarządzaj serwerem Jenkins.

  3. Wybierz pozycję Zarządzaj poświadczeniami.

  4. Wybierz domenę globalną.

  5. Wybierz pozycję Dodaj poświadczenia.

  6. Wypełnij wymagane pola w następujący sposób:

    • Rodzaj: wybierz pozycję Nazwa użytkownika z hasłem.
    • Nazwa użytkownika: określ appId nazwę jednostki usługi.
    • Hasło: określ password nazwę jednostki usługi.
    • Identyfikator: określ identyfikator poświadczeń, taki jak azuresp.
    • Opis: Opcjonalnie dołącz opis opis środowiska.
  7. Wybierz przycisk OK , aby utworzyć poświadczenie.

Tworzenie zadania potoku w celu przekazania artefaktów kompilacji

Poniższe kroki prowadzą cię przez proces tworzenia zadania potoku. Zadanie potoku tworzy kilka plików i przekazuje pliki na konto magazynu przy użyciu interfejsu wiersza polecenia platformy Azure.

  1. Na pulpicie nawigacyjnym usługi Jenkins wybierz pozycję Nowy element.

  2. Nazwij zadanie myjob, wybierz pozycję Potok, a następnie wybierz przycisk OK.

  3. W sekcji Potok konfiguracji zadania wybierz pozycję Skrypt potoku i wklej następujący kod do skryptu. Edytuj symbole 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
                '''
              }
            }
          }
        }
      }
    }
    
  4. Wybierz pozycję Kompiluj teraz, aby uruchomić myjob.

  5. Sprawdź dane wyjściowe konsoli pod kątem stanu. Gdy akcja po kompilacji przekazuje artefakty kompilacji, komunikaty o stanie dla usługi Azure Storage są zapisywane w konsoli programu .

  6. 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:

  7. Po pomyślnym zakończeniu zadania sprawdź artefakty kompilacji, otwierając publiczny obiekt blob:

    1. Zaloguj się w witrynie Azure Portal.
    2. Wybierz pozycję Magazyn.
    3. Wybierz nazwę konta magazynu użytą dla serwera Jenkins.
    4. Wybierz pozycję Kontenery.
    5. Wybierz kontener o nazwie myjob na liście obiektów blob.
    6. Powinny zostać wyświetlone dwa następujące pliki: hello.txt i date.txt.
    7. Skopiuj adres URL jednego z tych elementów i wklej go w przeglądarce.
    8. Zostanie wyświetlony plik tekstowy przekazany jako artefakt kompilacji.

    Kluczowe punkty:

    • Nazwy kontenerów i nazwy obiektów blob to małe litery (i wielkość liter) w usłudze Azure Storage.

Tworzenie zadania potoku do pobrania z usługi Azure Blob Storage

W poniższych krokach pokazano, jak skonfigurować zadanie potoku w celu pobrania elementów z usługi Azure Blob Storage.

  1. W sekcji Potok konfiguracji zadania wybierz pozycję Skrypt potoku i wklej następujący kod w obszarze Skrypt. Edytuj symbole 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 {
            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
              '''   
            }
          }
        }
      }
    }
    
  2. Po uruchomieniu kompilacji sprawdź dane wyjściowe konsoli historii kompilacji. Alternatywnie możesz również sprawdzić lokalizację pobierania, aby sprawdzić, czy oczekiwane obiekty blob zostały pomyślnie pobrane.

Następne kroki