Aracılığıyla paylaş


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

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Bu makale, Azure Pipelines'ı kullanarak Azure Container Registry, Docker Hub ve Google Artifact Registry'ye Docker görüntüsü oluşturmak ve göndermek için kurulum ve yapılandırmada size yol gösterir. Buna ek olarak, işlem hattınızda güvenli kimlik doğrulaması için kullanımını System.AccessToken ayrıntılı olarak açıklar.

Bu makale, Docker Hub ve Google Artifact Registry'ye Docker görüntüsü derlemek ve göndermek için Azure Pipelines'ı kullanmaya yönelik kurulum ve yapılandırmada size yol gösterir. Buna ek olarak, işlem hattınızda güvenli kimlik doğrulaması için kullanımını System.AccessToken ayrıntılı olarak açıklar.

Docker görüntüsünü derlemek ve kapsayıcı kayıt defterine göndermek için YAML işlem hattı oluşturmayı öğreneceksiniz. Docker@2 görevi, görüntüyü derlemek ve kapsayıcı kayıt defterine göndermek için kullanılır.

Önkoşullar

  • Azure DevOps projesi.
  • Kapsayıcı kayıt defteri (Docker Hub, Google Artifact Registry veya Azure Container Registry).
  • Dockerfile içeren bir GitHub deposu. Deponuz yoksa örnek depoyu kullanabilirsiniz Tarayıcınızda örnek depoya gidin ve gitHub hesabınıza çatal oluşturun.
  • Docker. Ş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.
  • Azure DevOps projesi.
  • Kapsayıcı kayıt defteri (Docker Hub veya Google Artifact Registry).
  • Dockerfile içeren bir GitHub deposu. Deponuz yoksa örnek depoyu kullanabilirsiniz Tarayıcınızda örnek depoya gidin ve gitHub hesabınıza çatal oluşturun.
  • Docker. Ş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.

Docker hizmet 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. Yeni bir hizmet bağlantısı oluşturmak için Azure DevOps projenizdeki Hizmet bağlantıları sayfasına gidin ve Docker Kayıt Defteri bağlantı türünü seçin.

Docker Hub ve Google Artifact Registry için hizmet bağlantısı oluşturmak için farklı işlemler vardır.

Docker kayıt defteri hizmeti bağlantısı altında Docker Hub seçeneğini belirleyin ve Bir Docker hizmet bağlantısı oluşturmak için kullanıcı adınızı ve parolanızı belirtin.

Docker görüntüsü oluşturmak ve göndermek için Azure Pipeline oluşturma

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.

Aşağıdaki adımlarda, görüntüyü oluşturmak ve göndermek için Docker@2 görevini kullanan bir YAML işlem hattı oluşturma adımları özetlenmiştir.

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

  2. Yeni işlem hattı oluşturmak için Yeni işlem hattı'na tıklayın.

  3. Kaynak kodunuzun konumu olarak GitHub veya GitHub Enterprise Server'ı seçin.

  4. Henüz yapmadıysanız Azure Pipelines'ı GitHub Enterprise Server hesabınıza bağlanma yetkisi verin.

    1. GitHub Enterprise Server'a Bağlan'ı seçin.
    2. Hesap ayrıntılarınızı girin ve Doğrula ve kaydet'i seçin.
  5. Deponuzu seçin. GitHub'a yeniden yönlendirildiyseniz

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

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

  8. Linux veya Windows uygulaması dağıtıp dağıtmadığınıza bağlı olarak, sırasıyla veya windows-latestolarak ubuntu-latest ayarlandığından vmImage emin olun. Şirket içinde barındırılan aracı kullanıyorsanız Docker özelliğine sahip şirket içinde barındırılan aracıyı içeren havuzun adına ayarlayın vmImage . Docker yüklü bir aracının seçildiğinden demands: docker emin olmak için özelliğini ekleyebilirsiniz.

  9. değerini daha önce oluşturduğunuz Docker hizmet bağlantısının adıyla değiştirin <docker connection> .

  10. değerini, görüntüyü göndermek istediğiniz kapsayıcı kayıt defterindeki deponun adıyla değiştirin <target repository name> . Örneğin, <your-docker-hub-username>/<repository-name>.

    
     trigger:
     - main
    
     pool:
     vmImage: 'ubuntu-latest' 
    
     variables:
     repositoryName: '<target repository name>'
    
     steps:
     - task: Docker@2
     inputs:
     containerRegistry: '<docker connection>'
     repository: $(repositoryName)
     command: 'buildAndPush'
     Dockerfile: '**/Dockerfile'
    
    
  11. İşiniz bittiğinde Kaydet ve çalıştır'ı seçin.

  12. azure-pipelines.yml dosyasını deponuza kaydettiğinizde, bir işleme iletisi eklemeniz istenir. Bir ileti girin ve kaydet ve çalıştır'ı seçin.

Ş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.

Görüntüyü oluşturmak için Docker aracının konağına yüklenmelidir ve Docker altyapısı/daemon yükseltilmiş ayrıcalıklarla çalışıyor olmalıdır. YAML işlem hattı düzenleyicisini kullanarak işlem hattınızı oluşturmak için aşağıdaki adımları kullanın.

  1. Koleksiyonunuz gidin ve bir proje oluşturun.

  2. Projenizde İşlem Hatları'yı seçin.

  3. İşlem Hattı Oluştur'u seçin.

  4. Kaynak kodunuzun konumu olarak GitHub Enterprise Server'ı seçin.

  5. Henüz yapmadıysanız Azure Pipelines'ı GitHub Enterprise Server hesabınıza bağlanma yetkisi verin.

    1. GitHub Enterprise Server'a Bağlan'ı seçin.
    2. Hesap ayrıntılarınızı girin ve Doğrula ve kaydet'i seçin.
  6. Deponuzu seçin. Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilirseniz Onayla ve yükle'yi seçin.

  7. İşlem hattınızı yapılandırmak için Docker görüntüsü oluştur şablonunu seçin.

  8. YAML işlem hattı düzenleyicisinde YAML dosyasının içeriğini aşağıdaki kodla değiştirin. Havuz adını, şirket içinde barındırılan aracınızı içeren havuzun adıyla Docker özelliğiyle değiştirin.

  9. Linux veya Windows uygulaması dağıtıp dağıtmadığınıza bağlı olarak, sırasıyla veya windows-latestolarak ubuntu-latest ayarlandığından vmImage emin olun.

  10. değerini, görüntüyü göndermek istediğiniz kapsayıcı kayıt defterindeki deponun adıyla değiştirin <target repository name> . Örneğin, <your-docker-hub-username>/<repository-name>.

  11. değerini daha önce oluşturduğunuz Docker hizmet bağlantısının adıyla değiştirin <docker connection> .

    
    trigger:
    - main
    
    pool:
    name: default
    demands: docker
    
    variables:
    repositoryName: '<target repository name>'
    
    steps:
    - task: Docker@2
    inputs:
    containerRegistry: '<docker connection>'
    repository: $(repositoryName)
    command: 'buildAndPush'
    Dockerfile: '**/Dockerfile'
    
    
  12. Kaydet ve çalıştır'ı seçin.

  13. Kaydet ve çalıştır sayfasında Kaydet ve yeniden çalıştır'ı seçin.

kapsayıcı kayıt defterine derlenen ve gönderilen Docker görüntüsünü görmek için işlem hattının çalışmasını izleyebilir ve günlükleri görüntüleyebilirsiniz.

Docker@2 Görevinde Kimlik Doğrulaması için System.AccessToken Kullanma

Azure DevOps tarafından sağlanan öğesini System.AccessToken kullanarak kapsayıcı kayıt defteriyle kimlik doğrulaması yapabilirsiniz. Bu belirteç, hassas kimlik bilgilerini göstermeden işlem hattınızdaki kaynaklara güvenli erişim sağlar.

Aşağıdaki YAML işlem hattı örneği, kapsayıcı kayıt defterinde oturum açmak ve Docker görüntüsünü göndermek için Docker@2 görevi kullanılır. System.AccessToken, Docker komutlarının kimliğini doğrulamak için bir ortam değişkeni olarak ayarlanır.

değerini Docker kayıt defteri hizmeti bağlantı adınızla değiştirin <docker connection> . değerini Docker deponuzun adıyla değiştirin <your repository> .

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

variables:
  SYSTEM_ACCESSTOKEN: $(System.AccessToken)

steps:
- task: Docker@2
  inputs:
    command: login
    containerRegistry: '<docker connection>'
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

- task: Docker@2
  inputs:
    command: buildAndPush
    repository: '<your repository>'
    dockerfile: '**/Dockerfile'
    tags: |
      $(Build.BuildId)
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)