Jenkins sürekli tümleştirme çözümüyle Azure depolama kullanmaUsing Azure Storage with a Jenkins continuous integration solution

Bu makalede, bir Jenkins sürekli tümleştirme (CI) çözümü tarafından oluşturulan derleme yapıtlarının bir deposu olarak veya bir yapı işleminde kullanılacak indirilebilir dosyaların kaynağı olarak blob Storage 'ın nasıl kullanılacağı gösterilmektedir.This article illustrates how to use Blob storage as a repository of build artifacts created by a Jenkins continuous integration (CI) solution, or as a source of downloadable files to be used in a build process. Bu çözümü bulacağınız senaryolardan biri, çevik bir geliştirme ortamında (Java veya diğer diller kullanarak) kodlama yaparken, sürekli tümleştirme temelinde derlemeler çalışıyor ve derleme yapılarınız için bir depo gerekir, bu sayede Örneğin, bunları diğer kuruluş üyeleriyle, müşterilerinizle paylaşabilir veya bir arşiv tutabilirsiniz.One of the scenarios where you would find this solution useful is when you're coding in an agile development environment (using Java or other languages), builds are running based on continuous integration, and you need a repository for your build artifacts, so that you could, for example, share them with other organization members, your customers, or maintain an archive. Başka bir senaryo, derleme işinizin kendisi için başka dosyalar gerektirdiğinde, örneğin, derleme girişinin bir parçası olarak indirilecek bağımlılıklardır.Another scenario is when your build job itself requires other files, for example, dependencies to download as part of the build input.

Bu öğreticide, Microsoft tarafından kullanılabilir olan Jenkins CI için Azure Storage eklentisi 'ni kullanacaksınız.In this tutorial, you will be using the Azure Storage Plugin for Jenkins CI made available by Microsoft.

Jenkins genel bakışJenkins overview

Jenkins, geliştiricilerin kod değişikliklerini kolayca tümleştirmesini ve yapıların otomatik olarak ve sıklıkla üretilmiş olmasını sağlayarak geliştiricilerin verimliliğini artırarak bir yazılım projesinin sürekli tümleştirmesini sağlar.Jenkins enables continuous integration of a software project by allowing developers to easily integrate their code changes and have builds produced automatically and frequently, thereby increasing the productivity of the developers. Derlemeler sürümlüdür ve derleme yapıtları çeşitli depolara yüklenebilir.Builds are versioned, and build artifacts can be uploaded to various repositories. Bu makalede, Azure Blob depolama 'nın derleme yapıtlarının deposu olarak nasıl kullanılacağı gösterilmektedir.This article shows how to use Azure blob storage as the repository of the build artifacts. Ayrıca Azure Blob depolamadan bağımlılıkların nasıl indirileceği gösterilmektedir.It will also show how to download dependencies from Azure blob storage.

Jenkins hakkında daha fazla bilgi için Jenkinsile ilgili daha fazla bilgi bulabilirsiniz.More information about Jenkins can be found at Meet Jenkins.

Blob hizmetini kullanmanın avantajlarıBenefits of using the Blob service

Çevik geliştirme derlemesi yapıtlarınızı barındırmak için blob hizmetini kullanmanın avantajları şunlardır:Benefits of using the Blob service to host your agile development build artifacts include:

  • Yapı yapılarınızın ve/veya indirilebilen bağımlılıkların yüksek kullanılabilirliği.High availability of your build artifacts and/or downloadable dependencies.
  • Jenkins CI çözümünüz derleme yapıtlarınızı karşıya yüklerken performans.Performance when your Jenkins CI solution uploads your build artifacts.
  • Müşterilerinizin ve iş ortaklarınızın yapı yapıtlarınızı indirme performansı.Performance when your customers and partners download your build artifacts.
  • Anonim erişim, sona erme tabanlı paylaşılan erişim imzası erişimi, özel erişim vb. arasında seçim içeren Kullanıcı erişim ilkeleri üzerinde denetim.Control over user access policies, with a choice between anonymous access, expiration-based shared access signature access, private access, etc.

ÖnkoşullarPrerequisites

  • Jenkins sürekli tümleştirme çözümü.A Jenkins continuous integration solution.

    Şu anda bir Jenkins CI çözümünüz yoksa, aşağıdaki tekniği kullanarak bir Jenkins CI çözümü çalıştırabilirsiniz:If you currently don't have a Jenkins CI solution, you can run a Jenkins CI solution using the following technique:

    1. Java etkin bir makinede Jenkins. war https://jenkins-ci.org' ı indirin.On a Java-enabled machine, download jenkins.war from https://jenkins-ci.org.

    2. Jenkins. war içeren klasöre açılan bir komut isteminde şu komutu çalıştırın:At a command prompt that is opened to the folder that contains jenkins.war, run:

      java -jar jenkins.war

    3. Tarayıcınızda, Azure Storage eklentisini http://localhost:8080/ yüklemek ve yapılandırmak için kullanacağınız Jenkins panosunu açmak üzere öğesini açın.In your browser, open http://localhost:8080/ to open the Jenkins dashboard, which you will use to install and configure the Azure Storage plugin.

      Tipik bir Jenkins CI çözümü bir hizmet olarak çalışacak şekilde ayarlanacağından, bu öğretici için Jenkins War, komut satırında çalıştırıldığında yeterli olacaktır.While a typical Jenkins CI solution would be set up to run as a service, running the Jenkins war at the command line will be sufficient for this tutorial.

  • Bir Azure hesabı.An Azure account. Konumunda https://www.azure.combir Azure hesabı için kaydolabilirsiniz.You can sign up for an Azure account at https://www.azure.com.

  • Bir Azure depolama hesabı.An Azure storage account. Henüz bir depolama hesabınız yoksa depolama hesabı oluşturmakısmındaki adımları kullanarak bir tane oluşturabilirsiniz.If you don't already have a storage account, you can create one using the steps at Create a Storage Account.

  • Jenkins CI çözümüyle benzerlik yapmanız önerilir, ancak aşağıdaki içerik, blob hizmetini Jenkins CI derleme yapıtları için bir depo olarak kullanırken gereken adımları göstermek üzere temel bir örnek kullanacaktır.Familiarity with the Jenkins CI solution is recommended but not required, as the following content will use a basic example to show you the steps needed when using the Blob service as a repository for Jenkins CI build artifacts.

Jenkins CI ile blob hizmetini kullanmaHow to use the Blob service with Jenkins CI

Blob hizmetini Jenkins ile birlikte kullanmak için Azure Storage eklentisini yüklemeniz, eklentiyi depolama hesabınızı kullanacak şekilde yapılandırmanız ve ardından derleme yapılarınızı depolama hesabınıza yükleyen bir oluşturma sonrası eylemi oluşturmanız gerekir.To use the Blob service with Jenkins, you'll need to install the Azure Storage plugin, configure the plugin to use your storage account, and then create a post-build action that uploads your build artifacts to your storage account. Bu adımlar aşağıdaki bölümlerde açıklanmıştır.These steps are described in the following sections.

Azure Storage eklentisini yüklemekHow to install the Azure Storage plugin

  1. Jenkins panosu içinde Jenkins 'ı Yönet' i seçin.Within the Jenkins dashboard, select Manage Jenkins.
  2. Jenkins 'ı Yönet sayfasında, Eklentileri Yönet' i seçin.In the Manage Jenkins page, select Manage Plugins.
  3. Available (Kullanılabilir) sekmesini seçin.Select the Available tab.
  4. Yapıt uploaders bölümünde Microsoft Azure depolama eklentisi' ni işaretleyin.In the Artifact Uploaders section, check Microsoft Azure Storage plugin.
  5. Yeniden başlatma yapmadan yükle veya Şimdi indir ve yeniden başlattıktan sonra Yükle ' yi seçin.Select either Install without restart or Download now and install after restart.
  6. Jenkins 'i yeniden başlatın.Restart Jenkins.

Azure Storage eklentisini depolama hesabınızı kullanacak şekilde yapılandırmaHow to configure the Azure Storage plugin to use your storage account

  1. Jenkins panosu içinde Jenkins 'ı Yönet' i seçin.Within the Jenkins dashboard, select Manage Jenkins.
  2. Jenkins 'ı Yönet sayfasında, sistemi Yapılandır' ı seçin.In the Manage Jenkins page, select Configure System.
  3. Microsoft Azure depolama hesap yapılandırması bölümünde:In the Microsoft Azure Storage Account Configuration section:
    1. Azure Portaledinebilmeniz için depolama hesabınızın adını girin.Enter your storage account name, which you can obtain from the Azure portal.
    2. Depolama hesabı anahtarınızı, ayrıca Azure Portalbilgiler kişilerden girin.Enter your storage account key, also obtainable from the Azure portal.
    3. Genel Azure bulutu kullanıyorsanız, BLOB hizmeti uç nokta URL 'si için varsayılan değeri kullanın.Use the default value for Blob Service Endpoint URL if you are using the global Azure cloud. Farklı bir Azure bulutu kullanıyorsanız, depolama hesabınız için Azure Portal belirtilen uç noktayı kullanın.If you are using a different Azure cloud, use the endpoint as specified in the Azure portal for your storage account.
    4. Depolama hesabınızı doğrulamak için depolama kimlik bilgilerini doğrula ' yı seçin.Select Validate storage credentials to validate your storage account.
    5. Seçim Jenkins CI 'niz için kullanılabilir hale getirdiğiniz ek depolama hesaplarınız varsa, daha fazla depolama hesabı ekle' yi seçin.[Optional] If you have additional storage accounts that you want made available to your Jenkins CI, select Add more Storage Accounts.
    6. Ayarlarınızı kaydetmek için Kaydet ' i seçin.Select Save to save your settings.

Derleme yapılarınızı depolama hesabınıza yükleyen bir oluşturma sonrası eylem oluşturmaHow to create a post-build action that uploads your build artifacts to your storage account

Eğitici bir amaç için, önce birkaç dosya oluşturacak bir iş oluşturmanız ve ardından dosyaları depolama hesabınıza yüklemek için oluşturma sonrası eylemini eklemeniz gerekir.For instructional purposes, you first need to create a job that will create several files, and then add in the post-build action to upload the files to your storage account.

  1. Jenkins panosu içinde Yeni öğe' yi seçin.Within the Jenkins dashboard, select New Item.

  2. İşi myjobolarak adlandırın, ücretsiz stil yazılım projesi oluştur' u seçin ve ardından Tamam' ı seçin.Name the job MyJob, select Build a free-style software project, and then select OK.

  3. İş yapılandırmasının derleme bölümünde derleme adımı ekle ' yi seçin ve Windows Batch komutunu Yürüt' ü seçin.In the Build section of the job configuration, select Add build step and select Execute Windows batch command.

  4. Komut' de aşağıdaki komutları kullanın:In Command, use the following commands:

    md text
    cd text
    echo Hello Azure Storage from Jenkins > hello.txt
    date /t > date.txt
    time /t >> date.txt
    
  5. İş yapılandırmasının Derleme sonrası eylemleri bölümünde, oluşturma sonrası eylem Ekle ' yi seçin ve yapıtları Azure Blob depolama alanına yükle' yi seçin.In the Post-build Actions section of the job configuration, select Add post-build action and select Upload artifacts to Azure Blob storage.

  6. Depolama hesabı adıiçin kullanılacak depolama hesabını seçin.For Storage account name, select the storage account to use.

  7. Kapsayıcı adıiçin kapsayıcı adını belirtin.For Container name, specify the container name. (Kapsayıcı, derleme yapıtları karşıya yüklenirken henüz yoksa oluşturulur.) Bu örnekte, kapsayıcı adı olarak girmek ${JOB_NAME} için ortam değişkenlerini kullanabilirsiniz.(The container will be created if it does not already exist when the build artifacts are uploaded.) You can use environment variables, so for this example enter ${JOB_NAME} as the container name.

    İpucuTip

    Windows Batch komutu yürütme için bir betik girdiğiniz komut bölümünün altında, Jenkins tarafından tanınan ortam değişkenlerine yönelik bir bağlantı bulunur.Below the Command section where you entered a script for Execute Windows batch command is a link to the environment variables recognized by Jenkins. Ortam değişkeni adlarını ve açıklamalarını öğrenmek için bu bağlantıyı seçin.Select that link to learn the environment variable names and descriptions. BUILD_URL ortam değişkeni gibi özel karakterler içeren ortam değişkenlerine kapsayıcı adı veya ortak sanal yol olarak izin verilmez.Environment variables that contain special characters, such as the BUILD_URL environment variable, are not allowed as a container name or common virtual path.

  8. Bu örnek için Varsayılan olarak yeni kapsayıcıyı genel yap ' ı seçin.Select Make new container public by default for this example. (Özel bir kapsayıcı kullanmak istiyorsanız, erişime izin vermek için paylaşılan erişim imzası oluşturmanız gerekir, bu da bu makalenin kapsamı dışındadır.(If you want to use a private container, you'll need to create a shared access signature to allow access, which is beyond the scope of this article. Paylaşılan erişim imzaları (SAS) kullanarak, paylaşılan erişim imzaları hakkında daha fazla bilgi edinebilirsiniz.)You can learn more about shared access signatures at Using Shared Access Signatures (SAS).)

  9. Seçim Derleme yapıtları karşıya yüklenmeden önce kapsayıcının içerik seçimini yapmak istiyorsanız, kapsayıcıyı karşıya yüklemeden önce Sil ' i seçin (kapsayıcının içeriğini temizlemek istemiyorsanız işaretini kaldırın).[Optional] Select Clean container before uploading if you want the container to be cleared of contents before build artifacts are uploaded (leave it unchecked if you do not want to clean the contents of the container).

  10. Karşıya yüklenecek yapıtların listesiiçin, text/*.txtgirin.For List of Artifacts to upload, enter text/*.txt.

  11. Karşıya yüklenen yapıtlar Için ortak sanal yoliçin, Bu öğreticinin amaçları doğrultusunda ${BUILD\_ID}/${BUILD\_NUMBER}, girin.For Common virtual path for uploaded artifacts, for purposes of this tutorial, enter ${BUILD\_ID}/${BUILD\_NUMBER}.

  12. Ayarlarınızı kaydetmek için Kaydet ' i seçin.Select Save to save your settings.

  13. Jenkins panosunda, Myjob'u çalıştırmak Için Şimdi Oluştur ' u seçin.In the Jenkins dashboard, select Build Now to run MyJob. Durum için konsol çıkışını inceleyin.Examine the console output for status. Oluşturma sonrası eylemi, derleme yapılarını karşıya yüklemeye başladığında, Azure depolama için durum iletileri konsol çıktısına dahil edilir.Status messages for Azure storage will be included in the console output when the post-build action starts to upload build artifacts.

  14. İşi başarılı bir şekilde tamamladıktan sonra, genel blobu açarak derleme yapıtlarını inceleyebilirsiniz.Upon successful completion of the job, you can examine the build artifacts by opening the public blob.

    1. Azure Portal oturum açın.Sign in to the Azure portal.
    2. Depolama’yı seçin.Select Storage.
    3. Jenkins için kullandığınız depolama hesabı adını seçin.Select the storage account name that you used for Jenkins.
    4. Kapsayıcılarıseçin.Select Containers.
    5. Jenkins işini oluştururken atadığınız iş adının küçük harfli sürümü olan myjobadlı kapsayıcıyı seçin.Select the container named myjob, which is the lowercase version of the job name that you assigned when you created the Jenkins job. Azure depolama 'da kapsayıcı adları ve BLOB adları küçük harfle (ve büyük/küçük harfe duyarlıdır).Container names and blob names are lowercase (and case-sensitive) in Azure storage. Myjobadlı kapsayıcının blob listesi içinde, Hello. txt ve date. txt' yi görmeniz gerekir.Within the list of blobs for the container named myjob, you should see hello.txt and date.txt. Bu öğelerin her biri için URL 'YI kopyalayın ve tarayıcınızda açın.Copy the URL for either of these items and open it in your browser. Derleme yapıtı olarak karşıya yüklenen metin dosyasını görürsünüz.You will see the text file that was uploaded as a build artifact.

İş başına yapıtları Azure Blob depolamaya yükleyen bir oluşturma sonrası eylem oluşturulabilir.Only one post-build action that uploads artifacts to Azure blob storage can be created per job. Yapıtları Azure Blob depolamaya yüklemeye yönelik tek derleme sonrası eylemi, ayırıcı olarak noktalı virgül kullanarak karşıya yüklenecek yapıt listesi içinde farklı dosyalar (joker karakterler dahil) ve dosya yolları belirtebilir.The single post-build action to upload artifacts to Azure blob storage can specify different files (including wildcards) and paths to files within List of Artifacts to upload using a semi-colon as a separator. Örneğin, Jenkins derlemeniz, çalışma alanınızın derleme klasöründe jar dosyaları ve txt dosyaları üretirse ve Ikisini de Azure Blob depolamaya yüklemek istiyorsanız, karşıya yüklenecek yapıtların listesi için aşağıdaki değeri kullanın: build/\*.jar;build/\*.txt.For example, if your Jenkins build produces JAR files and TXT files in your workspace's build folder, and you want to upload both to Azure blob storage, use the following value for the List of Artifacts to upload option: build/\*.jar;build/\*.txt. Blob adı içinde kullanılacak yolu belirtmek için çift iki nokta sözdizimini de kullanabilirsiniz.You can also use double-colon syntax to specify a path to use within the blob name. Örneğin, blob yolundaki bildirimleri kullanarak karşıya yüklemek için blob yolundaki IKILI dosyaları ve txt dosyalarını kullanarak jars 'ın karşıya yüklenmesini Istiyorsanız, yüklenecek yapıtların listesi için aşağıdaki değeri kullanın: build/\*.jar::binaries;build/\*.txt::notices.For example, if you want the JARs to get uploaded using binaries in the blob path and the TXT files to get uploaded using notices in the blob path, use the following value for the List of Artifacts to upload option: build/\*.jar::binaries;build/\*.txt::notices.

Azure Blob depolamadan indirilen bir derleme adımı oluşturmaHow to create a build step that downloads from Azure blob storage

Aşağıdaki adımlar, Azure Blob depolamadan öğeleri indirmek için bir derleme adımını yapılandırmak için, derlemenize öğe eklemek istiyorsanız yararlı olur.The following steps illustrate to configure a build step to download items from Azure blob storage, which is useful if you want to include items in your build. Bu düzenin kullanılmasına örnek olarak, Azure Blob depolamada kalıcı hale getirmek isteyebileceğiniz JARs vardır.An example of using this pattern is JARs that you might want to persist in Azure blob storage.

  1. İş yapılandırmasının derleme bölümünde derleme adımı ekle ' yi seçin ve Azure Blob depolama alanından indir' i seçin.In the Build section of the job configuration, select Add build step and select Download from Azure Blob storage.
  2. Depolama hesabı adıiçin kullanılacak depolama hesabını seçin.For Storage account name, select the storage account to use.
  3. Kapsayıcı adıiçin, indirmek istediğiniz bloblara sahip kapsayıcının adını belirtin.For Container name, specify the name of the container that has the blobs you want to download. Ortam değişkenlerini kullanabilirsiniz.You can use environment variables.
  4. BLOB adıiçin blob adını belirtin.For Blob name, specify the blob name. Ortam değişkenlerini kullanabilirsiniz.You can use environment variables. Ayrıca, blob adının ilk harflerini belirttikten sonra joker karakter olarak bir yıldız işareti kullanabilirsiniz.Also, you can use an asterisk, as a wildcard after you specify the initial letter(s) of the blob name. Örneğin, Proje\ * adları Projectile başlayan tüm blob 'ları belirtebilir.For example, project\* would specify all blobs whose names start with project.
  5. Seçim İndirme yoluIçin, Azure Blob depolamadan dosyaları Indirmek Istediğiniz Jenkins makinesinde yolunu belirtin.[Optional] For Download path, specify the path on the Jenkins machine where you want to download files from Azure blob storage. Ortam değişkenleri de kullanılabilir.Environment variables can also be used. ( İndirme yoluiçin bir değer sağlamazsanız, Azure Blob depolama alanındaki dosyalar iş çalışma alanına indirilir.)(If you do not provide a value for Download path, the files from Azure blob storage will be downloaded to the job's workspace.)

Azure Blob depolama alanından indirmek istediğiniz ek öğeleriniz varsa, ek derleme adımları oluşturabilirsiniz.If you have additional items you want to download from Azure blob storage, you can create additional build steps.

Bir derlemeyi çalıştırdıktan sonra, beklediğiniz Blobların başarıyla indirilip indirilmediğini görmek için derleme geçmişi konsol çıkışını denetleyebilir veya indirme konumunuza bakabilirsiniz.After you run a build, you can check the build history console output, or look at your download location, to see whether the blobs you expected were successfully downloaded.

Blob hizmeti tarafından kullanılan bileşenlerComponents used by the Blob service

Bu bölüm, blob hizmeti bileşenlerine genel bir bakış sağlar.This section provides an overview of the Blob service components.

  • Depolama hesabı: Tüm Azure depolama erişimi bir depolama hesabı üzerinden yapılır.Storage Account: All access to Azure Storage is done through a storage account. Depolama hesabı, bloblara erişim için ad alanının en yüksek düzeyidir.A storage account is the highest level of the namespace for accessing blobs. Bir hesap, toplam boyutu 100 TB altında olduğu sürece sınırsız sayıda kapsayıcı içerebilir.An account can contain an unlimited number of containers, as long as their total size is under 100 TB.

  • Kapsayıcı: Kapsayıcı bir blob kümesi gruplandırması sağlar.Container: A container provides a grouping of a set of blobs. Tüm bloblar bir kapsayıcıda olmalıdır.All blobs must be in a container. Bir hesapta sınırsız sayıda kapsayıcı olabilir.An account can contain an unlimited number of containers. Kapsayıcıda sınırsız sayıda blob depolanabilir.A container can store an unlimited number of blobs.

  • BLOB: Herhangi bir tür ve boyutun dosyası.Blob: A file of any type and size. Azure depolama 'da depolanabilecek iki tür blob vardır: blok ve sayfa Blobları.There are two types of blobs that can be stored in Azure Storage: block and page blobs. Çoğu dosya blok bloblardır.Most files are block blobs. Tek bir Blok Blobu boyutu 200 GB 'a kadar olabilir.A single block blob can be up to 200 GB in size. Bu öğretici blok bloblarını kullanır.This tutorial uses block blobs. Sayfa Blobları, başka bir blob türü, boyutu 1 TB 'ye kadar olabilir ve bir dosyadaki bayt aralıkları sıklıkla değiştirildiğinde daha etkilidir.Page blobs, another blob type, can be up to 1 TB in size, and are more efficient when ranges of bytes in a file are modified frequently. Blob 'lar hakkında daha fazla bilgi için bkz. blok bloblarını, ekleme bloblarını ve sayfa Bloblarını anlama.For more information about blobs, see Understanding Block Blobs, Append Blobs, and Page Blobs.

  • URL biçimi: Blob 'lar aşağıdaki URL biçimi kullanılarak adreslenebilir:URL format: Blobs are addressable using the following URL format:

    http://storageaccount.blob.core.windows.net/container_name/blob_name

    (Yukarıdaki biçim Global Azure bulutu için geçerlidir.(The format above applies to the global Azure cloud. Farklı bir Azure bulutu kullanıyorsanız, URL uç noktanızı öğrenmek için Azure Portal içindeki uç noktayı kullanın.)If you are using a different Azure cloud, use the endpoint within the Azure portal to determine your URL endpoint.)

    Yukarıdaki biçimde, storageaccount depolama hesabınızın adını temsil eder, container_name kapsayıcının adını temsil eder ve blob_name sırasıyla Blobun adını temsil eder.In the format above, storageaccount represents the name of your storage account, container_name represents the name of your container, and blob_name represents the name of your blob, respectively. Kapsayıcı adı içinde, eğik çizgiyle / ayırarak birden çok yola sahip olabilirsiniz.Within the container name, you can have multiple paths, separated by a forward slash, /. Bu öğretici için kullanılan örnek kapsayıcı adı myjobidi ve ortak sanal yol için $_{BUILD ID}/$_{BUILD Number} kullanılmıştır, bu da blob 'un aşağıdaki biçimde bir URL 'ye sahip olması ile sonuçlanır:The example container name used for this tutorial was MyJob, and ${BUILD_ID}/${BUILD_NUMBER} was used for the common virtual path, resulting in the blob having a URL of the following form:

    http://example.blob.core.windows.net/myjob/2014-04-14_23-57-00/1/hello.txt

Jenkins eklentisiyle ilgili sorunları gidermeTroubleshooting the Jenkins plugin

Jenkins eklentileriyle ilgili hatalarla karşılaşırsanız Jenkins JIRA sayfasında söz konusu bileşenle ilgili sorun bildirebilirsiniz.If you encounter any bugs with the Jenkins plugins, file an issue in the Jenkins JIRA for the specific component.

Sonraki adımlarNext steps

Daha fazla bilgi için bkz. Java geliştiricileri için Azure.For more information, visit Azure for Java developers.