Öğretici: Derleme yapıtları Depolama Azure Depolama'i kullanma

Önemli

Birçok Azure hizmeti Jenkins eklentilerine sahip. Bu eklentilerin bazıları 29 Şubat 2024'te destek olmayacaktır. Azure CLI, Jenkins'i Azure hizmetleriyle tümleştirin şu anda önerilen yoldur. Daha fazla bilgi için Azure için Jenkins eklentileri makalesine bakın.

Bu makalede, Bir Jenkins sürekli tümleştirme (CI) çözümü tarafından oluşturulan derleme yapıtları deposu olarak veya bir derleme sürecinde kullanılacak indirilebilir dosyaların kaynağı olarak Blob depolamanın nasıl kullanı gerektiği açıklanmıştır. Bu çözümün yararlı olduğu senaryolardan biri, çevik bir geliştirme ortamında kod kodlarken (Java veya diğer dilleri kullanarak), derlemelerin sürekli tümleştirmeye dayalı olarak çalışıyor ve derleme yapıtları için bir depoya ihtiyacınız olduğu için bunları diğer kuruluş üyeleriyle, müşterilerinizle paylaşabilirsiniz veya bir arşiv bulundurabilirsiniz. Başka bir senaryo ise derleme işnizin başka dosyalar (örneğin, derleme girişinin bir parçası olarak indirme bağımlılıkları) gerektirdiği durumdur.

Önkoşullar

Azure CLI'yi yürütmek için gereken Azure kimlik bilgilerini ekleme

  1. Jenkins portalına gidin.

  2. Menüden Jenkins'i Yönet'i seçin.

  3. Kimlik Bilgilerini Yönet'i seçin.

  4. Genel etki alanını seçin.

  5. Kimlik Bilgileri Ekle'yi seçin.

  6. Gerekli alanları aşağıdaki gibi doldurun:

    • Tür:Parola ile Kullanıcı adı'ı seçin.
    • Kullanıcıadı: Hizmet sorumlusun adını belirtin.
    • Parola:Hizmet sorumlusu için belirtin.
    • Kimlik:gibi bir kimlik bilgisi kimlik bilgisi kimliği belirtin.
    • Açıklama:İsteğe bağlı olarak, ortamınız için anlamlı bir açıklama girin.
  7. Kimlik bilgilerini oluşturmak için Tamam'ı seçin.

Derleme yapıtlarını karşıya yüklemek için işlem hattı işi oluşturma

Aşağıdaki adımlar, bir işlem hattı işi oluşturma konusunda size yol içerir. İşlem hattı işi birkaç dosya oluşturur ve Azure CLI kullanarak dosyaları depolama hesabınıza yükler.

  1. Jenkins panosundan Yeni Öğe'yi seçin.

  2. İşin adını myjob olarak girin,İşlem Hattı'ı veardından Tamam'ı seçin.

  3. İş yapılandırmasının İşlem Hattı bölümünde İşlem hattı betiği'yi seçin ve aşağıdakini Betik'e yapıştırın. Yer tutucuları ortamınız için değerlerle eş olacak şekilde düzenleyin.

    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. Myjob'ı çalıştırmak için Şimdi Derleme'yi seçin.

  5. Konsol çıkışını durum için inceleme. Derleme sonrası eylem derleme yapıtlarını karşıya yükledikten sonra Azure depolama için durum iletileri konsola yazılır.

  6. Aşağıdakine benzer bir hatayla karşılaşırsanız kapsayıcı düzeyinde erişim izni verebilirsiniz: Bu hata iletisini alırsanız çözmek için aşağıdaki ValidationError: You do not have the required permissions needed to perform this operation. makalelere bakın:

  7. İş başarıyla tamamlandıktan sonra, genel blobu açarak derleme yapıtlarını inceleme:

    1. Azure Portal’ında oturum açın.
    2. Depolama’yı seçin.
    3. Jenkins için kullanılan depolama hesabı adını seçin.
    4. Kapsayıcılar'ı seçin.
    5. Bloblar listesinde myjobadlı kapsayıcıyı seçin.
    6. Şu iki dosya görüyor gerekir: hello.txt ve date.txt.
    7. Bu öğelerden herhangi biri için URL'yi kopyalayın ve tarayıcınızda yapıştırın.
    8. Derleme yapıtı olarak yüklenen metin dosyasını görüyorsunuz.

    Önemli noktalar:

    • Azure depolamada kapsayıcı adları ve blob adları küçük harftir (ve büyük/küçük harfe duyarlıdır).

Azure Blob depolamadan indirilen bir işlem hattı Depolama

Aşağıdaki adımlarda, Azure Blob Depolama'dan öğeleri indirmek için bir işlem hattı işinin nasıl Depolama.

  1. İş yapılandırmasının İşlem Hattı bölümünde İşlem hattı betiği'yi seçin ve betik bölümüne aşağıdakini yapıştırın. Yer tutucuları ortamınız için değerlerle eş olacak şekilde düzenleyin.

    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. Derlemeyi çalıştırdıktan sonra derleme geçmişi konsol çıkışını kontrol edin. Alternatif olarak, istediğiniz blobların başarıyla indirilmiş olup olduğunu görmek için indirme konumunuza da bakabilirsiniz.

Sonraki adımlar