Aracılığıyla paylaş


Azure Pipelines'ı kullanarak kayıt defterlerine kapsayıcı görüntüleri oluşturma ve gönderme

Azure DevOps Services

Bu makale, Docker görüntüsünü derlemek ve Azure Container Registry veya Docker Hub'a göndermek için işlem hattı oluşturma işleminde size yol gösterir.

Önkoşullar

Ürün Gereksinimleri
Azure DevOps - Bir Azure DevOps projesi.
- İzinleri:
    - Projedeki tüm işlem hatlarına erişim vermek için:Proje Yöneticileri grubunun üyesi olmanız gerekir.
    - Hizmet bağlantıları oluşturmak için:hizmet bağlantıları için Yönetici veya Oluşturucu rolüne sahip olmanız gerekir.
- Şirket içinde barındırılan bir aracı kullanıyorsanız Docker'ın yüklü olduğundan ve Docker altyapısının yükseltilmiş ayrıcalıklarla çalıştığından emin olun. Microsoft tarafından barındırılan aracılarda Docker önceden yüklenmiş olarak bulunur.
GitHub - GitHub hesabı.
- Dockerfile içeren bir GitHub deposu. Kendi projeniz yoksa örnek depo kullanın.
- Azure Pipelines'ı yetkilendirmek için GitHub hizmet bağlantısı.
Azure - Azure aboneliği.
- Bir Azure Container Registry.
Ürün Gereksinimleri
Azure DevOps - Bir Azure DevOps projesi.
- İzinleri:
    - Projedeki tüm işlem hatlarına erişim vermek için:Proje Yöneticileri grubunun üyesi olmanız gerekir.
    - Hizmet bağlantıları oluşturmak için:hizmet bağlantıları için Yönetici veya Oluşturucu rolüne sahip olmanız gerekir.
- Şirket içinde barındırılan bir aracı kullanıyorsanız Docker'ın yüklü olduğundan ve Docker altyapısının yükseltilmiş ayrıcalıklarla çalıştığından emin olun. Microsoft tarafından barındırılan aracılarda Docker önceden yüklenmiş olarak bulunur.
GitHub - GitHub hesabı.
- Dockerfile içeren bir GitHub deposu. Kendi projeniz yoksa örnek depo kullanın.
- Azure Pipelines'ı yetkilendirmek için GitHub hizmet bağlantısı.
Docker Hub - Docker Hub hesabı.
- Docker Hub görüntü deposu.

Docker kayıt defteri hizmeti bağlantısı oluşturma

Kapsayıcı görüntülerini kayıt defterine göndermeden önce Azure DevOps'ta bir hizmet bağlantısı oluşturmanız gerekir. Bu hizmet bağlantısı, kapsayıcı kayıt defteriyle güvenli bir şekilde kimlik doğrulaması yapmak için gereken kimlik bilgilerini depolar. Daha fazla bilgi için bkz. Docker Kayıt Defteri hizmet bağlantıları.

  1. Azure DevOps projenizde Proje ayarları>Hizmet bağlantılarıöğesini seçin.

    Proje ayarları seçiminin ekran görüntüsü.

  2. Yeni hizmet bağlantısı ve Docker Kayıt Defteri seçin.

    Docker Kayıt Defteri seçiminin ekran görüntüsü.

  3. Docker Hub seçin ve aşağıdaki bilgileri girin:

    Alan Açıklama
    Docker ID Docker kimliğinizi girin.
    Docker Parola Docker parolanızı girin.
    Hizmet bağlantı adı Hizmet bağlantısı için bir ad girin.
    tüm işlem hatlarına erişim izni ver Tüm işlem hatlarına erişim vermek için bu seçeneği belirleyin.

    Docker Hub hizmet bağlantısı iletişim kutusunun ekran görüntüsü.

  4. Doğrula'yı seçin vekaydedin.

Docker görüntüsü oluşturmak ve göndermek için işlem hattı oluşturma

Docker@2 görevi, görüntüyü derlemek ve kapsayıcı kayıt defterine göndermek için kullanılır. Docker@2 görevi, Azure Pipelines içinde Docker görüntüleri oluşturma, gönderme ve yönetme sürecini kolaylaştırmak için tasarlanmıştır. Bu görev derleme, gönderme, oturum açma, oturumu kapatma, başlatma, durdurma ve çalıştırma gibi çok çeşitli Docker komutlarını destekler.

Görüntüyü oluşturmak ve göndermek için Docker@2 görevini kullanan bir YAML işlem hattı oluşturmak için aşağıdaki adımları kullanın.

  1. Azure DevOps projenizde İşlem Hatları'ını ve Yeni işlem hattı'ü seçin .

  2. Kaynak kodunuzun konumu olarak GitHub seçin ve deponuzu seçin.

    • Oturum açmak için GitHub'a yönlendirilirseniz GitHub kimlik bilgilerinizi girin.
    • Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilirseniz Onayla ve yükle'yi seçin.
  3. Deponuzu seçin.

  4. Temel bir işlem hattı yapılandırması oluşturmak için Starter işlem hattı şablonunu seçin.

  5. azure-pipelines.yml içeriğini aşağıdaki kodla değiştirin:

    
    trigger:
    - main
    
    pool:
      vmImage: 'ubuntu-latest' 
    
    variables:
      repositoryName: '<target repository name>' 
    
    steps:
    - task: Docker@2
      inputs:
        containerRegistry: '<docker registry service connection>'
        repository: $(repositoryName)
        command: 'buildAndPush'
        Dockerfile: '**/Dockerfile'
    
    
  6. İşlem hattı YAML dosyasını aşağıdaki gibi düzenleyin:

    • değerini, görüntüyü göndermek istediğiniz kapsayıcı kayıt defterindeki deponun adıyla değiştirin <target repository name> .
    • <docker registry service connection> değerini daha önce oluşturduğunuz Docker kayıt defteri hizmeti bağlantısının adıyla değiştirin.
  7. İşiniz bittiğinde Kaydet'i seçin ve>kaydedip çalıştırın.

  8. Günlükleri görüntülemek ve işlem hattının başarıyla çalıştığını doğrulamak için İş'ni seçin.

  1. Azure DevOps projenize gidin ve sol taraftaki menüden İşlem Hatları'ni seçin.

  2. Yeni işlem hattı seçin.

  3. Kaynak kodunuzun konumu olarak GitHub seçin ve deponuzu seçin.

    • Oturum açmak için GitHub'a yönlendirilirseniz GitHub kimlik bilgilerinizi girin.
    • Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilirseniz Onayla ve yükle'yi seçin.
  4. Docker - Azure Container Registry şablonuna bir görüntü inşa edip gönderin şablonunu seçin.

  5. Azure aboneliğinizi seçin ve devam.

  6. Container Registry'nizi seçin ve ardından Doğrula veyapılandır'ı seçin.

    Örnek YAML işlem hattı:

    # Docker
    # Build and push an image to Azure Container Registry
    # https://docs.microsoft.com/azure/devops/pipelines/languages/docker
    
    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
      # Container registry service connection established during pipeline creation
      dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de'
      imageRepository: 'usernamepipelinesjavascriptdocker'
      containerRegistry: 'repoistoryname.azurecr.io'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
      # Agent VM image name
      vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
      displayName: Build and push stage
      jobs:
      - job: Build
        displayName: Build
        pool:
          vmImage: $(vmImageName)
        steps:
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag)
    
    
  7. Kaydet ve çalıştır'i seçin ve Kaydet ve çalıştır'i yeniden seçin.

  8. Günlükleri görüntülemek ve işlem hattının başarıyla çalıştığını doğrulamak için İş'ni seçin.

Docker şablonu, Azure Container Registry'nize hizmet bağlantısını oluşturur ve Docker görüntüsünü derlemek ve kayıt defterine göndermek için Docker@2 görevini kullanır.

Docker@2 görevi, Azure Pipelines içinde Docker görüntüleri oluşturma, gönderme ve yönetme sürecini kolaylaştırmak için tasarlanmıştır. Bu görev derleme, gönderme, oturum açma, oturumu kapatma, başlatma, durdurma ve çalıştırma gibi çok çeşitli Docker komutlarını destekler.

Şirket içinde barındırılan aracıları kullanırken Docker'ın aracının konağına yüklendiğinden ve Docker altyapısının/daemon'un yükseltilmiş ayrıcalıklarla çalıştığından emin olun.