Udostępnij za pośrednictwem


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

Dodaj poświadczenia Azure potrzebne do wykonania Azure CLI

  1. Przejdź do portalu serwera Jenkins.

  2. Z menu wybierz pozycję Zarządzaj usługą Jenkins.

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

  4. Wybierz globalną domenę .

  5. Wybierz Dodaj poświadczenia.

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

  1. Na pulpicie nawigacyjnym narzędzia Jenkins wybierz pozycję Nowy element.

  2. Nadaj zadaniu nazwę myjob, wybierz Pipeline, a następnie wybierz OK.

  3. W sekcji potoku konfiguracji zadania wybierz pozycję Skrypt potoku i wklej następujące polecenie w Script. 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
                '''
              }
            }
          }
        }
      }
    }
    
  4. Wybierz pozycję Skompiluj teraz, aby uruchomić myjob.

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

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

    1. Zaloguj się do witryny Azure Portal.
    2. Wybierz pozycję Storage.
    3. Wybierz nazwę konta magazynu użytą dla serwera Jenkins.
    4. Wybierz Containers.
    5. Wybierz kontener pod nazwą myjobna liście blobów.
    6. Powinny zostać wyświetlone następujące dwa pliki: hello.txt i date.txt.
    7. Skopiuj adres URL jednego z tych elementów i wklej go w przeglądarce.
    8. 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.

  1. W sekcji potoku konfiguracji zadania wybierz pozycję skrypt potokowy i wklej następujący kod do pola Skrypt. 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
              '''   
            }
          }
        }
      }
    }
    
  2. 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.

Następne kroki