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

Önemli

Birçok Azure hizmeti Jenkins eklentilerine sahiptir. Bu eklentilerden bazıları 29 Şubat 2024 itibarıyla destekten çıkarılacaktır. Azure CLI, Jenkins'i Azure hizmetleriyle tümleştirmenin şu anda önerilen yoludur. 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ının deposu olarak veya derleme işleminde kullanılacak indirilebilir dosyaların kaynağı olarak Blob depolamanın nasıl kullanılacağı gösterilmektedir. Bu çözümü yararlı bulacağınız senaryolardan biri, çevik bir geliştirme ortamında (Java veya diğer dilleri kullanarak) kodlama yaparken derlemelerin sürekli tümleştirmeye dayalı olarak çalışması ve derleme yapıtlarınız için bir depoya ihtiyacınız olmasıdır; böylece bunları diğer kuruluş üyeleriyle, müşterilerinizle veya bir arşivle paylaşabilirsiniz. Başka bir senaryo, derleme işinizin kendisi için başka dosyalara ihtiyaç duyması ( örneğin, derleme girişinin bir parçası olarak indirilmesi için bağımlılıklar) olmasıdır.

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.
  • Jenkins sunucusu: Yüklü bir Jenkins sunucunuz yoksa Azure'da bir Jenkins sunucusu oluşturun.
  • Azure CLI: Jenkins sunucusuna Azure CLI (sürüm 2.0.67 veya üzeri) yükleyin.
  • Azure depolama hesabı: Henüz bir depolama hesabınız yoksa bir Depolama Hesabı oluşturun.

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: Parolalı kullanıcı adı'ı seçin.
    • Kullanıcı adı: Hizmet sorumlusunun değerini belirtin appId .
    • Parola: Hizmet sorumlusunun değerini password belirtin.
    • Kimlik: gibi azurespbir kimlik bilgisi kimlik bilgisi belirtebilirsiniz.
    • Açıklama: İsteğe bağlı olarak ortamınız için anlamlı bir açıklama ekleyin.
  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 işlem hattı işi oluşturma işleminde size yol gösterir. İş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. İşi myjob olarak adlandırın, İşlem Hattı'nı ve ardından Tamam'ı seçin.

  3. İş yapılandırmasının İşlem Hattı bölümünde İşlem hattı betiği'ni seçin ve aşağıdakini Betik'e yapıştırın. Yer tutucuları ortamınızın değerleriyle eşleşecek ş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. şimdi derle'yi seçerek işimi çalıştırın.

  5. Durum için konsol çıkışını inceleyin. Derleme sonrası eylemi derleme yapıtlarını karşıya yüklediğinde, 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 vermeniz gerektiği anlamına gelir: ValidationError: You do not have the required permissions needed to perform this operation. Bu hata iletisini alırsanız, çözmek için aşağıdaki makalelere bakın:

  7. İşin başarıyla tamamlanmasının ardından genel blobu açarak derleme yapıtlarını inceleyin:

    1. Azure Portal oturum açın.
    2. Depolama’yı seçin.
    3. Jenkins için kullandığınız depolama hesabı adını seçin.
    4. Kapsayıcılar'ı seçin.
    5. Blob listesinden myjob adlı kapsayıcıyı seçin.
    6. Şu iki dosyayı görmeniz gerekir: hello.txt ve date.txt.
    7. Bu öğelerden birinin URL'sini kopyalayın ve tarayıcınıza yapıştırın.
    8. Derleme yapıtı olarak karşıya yüklenen metin dosyasını görürsünüz.

    Önemli noktalar:

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

Azure Blob Depolama'dan indirebileceğiniz bir işlem hattı işi oluşturma

Aşağıdaki adımlarda, Azure Blob Depolama öğeleri indirmek için işlem hattı işinin nasıl yapılandırılması gösterilmektedir.

  1. İş yapılandırmasının İşlem Hattı bölümünde İşlem hattı betiği'ni seçin ve Betik'eaşağıdakileri yapıştırın. Yer tutucuları ortamınızın değerleriyle eşleşecek ş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ı denetleyin. Alternatif olarak, beklediğiniz blobların başarıyla indirilip indirilmediğini görmek için indirme konumunuza da bakabilirsiniz.

Sonraki adımlar