Öğ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
Jenkins portalına gidin.
Menüden Jenkins'i Yönet'i seçin.
Kimlik Bilgilerini Yönet'i seçin.
Genel etki alanını seçin.
Kimlik Bilgileri Ekle'yi seçin.
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
azuresp
bir kimlik bilgisi kimlik bilgisi belirtebilirsiniz. - Açıklama: İsteğe bağlı olarak ortamınız için anlamlı bir açıklama ekleyin.
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.
Jenkins panosundan Yeni Öğe'yi seçin.
İşi myjob olarak adlandırın, İşlem Hattı'nı ve ardından Tamam'ı seçin.
İş 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 ''' } } } } } }
şimdi derle'yi seçerek işimi çalıştırın.
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.
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:İşin başarıyla tamamlanmasının ardından genel blobu açarak derleme yapıtlarını inceleyin:
- Azure Portal oturum açın.
- Depolama’yı seçin.
- Jenkins için kullandığınız depolama hesabı adını seçin.
- Kapsayıcılar'ı seçin.
- Blob listesinden myjob adlı kapsayıcıyı seçin.
- Şu iki dosyayı görmeniz gerekir: hello.txt ve date.txt.
- Bu öğelerden birinin URL'sini kopyalayın ve tarayıcınıza yapıştırın.
- 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.
İş 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 ''' } } } } }
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin