Alıştırma - Uygulama görüntüsünü oluşturma

Tamamlandı

Bu ünitede, uygulama görüntüsünü oluşturup Azure Container Registry'ye göndererek GitHub Actions hazırlama işlem hattınızı oluşturacaksınız.

Aşağıdaki görüntüde, tasarladığınız CI/CD işlem hattı gösterilmektedir:

Diagram that shows the procession from triggers, through three build steps, to the deploy steps in a pipeline.

Bu alıştırmada, aşağıdaki adımları uygulayarak hazırlama işlem hattını oluşturacaksınız:

  • GitHub Actions iş akışını oluşturun.
  • Tetikleyiciyi on push oluşturun.
  • Uygulama görüntüsünü derleyin ve gönderebilirsiniz.
  • Gizli dizileri ayarlayın.
  • İşi çalıştırın.

GitHub Actions iş akışını oluşturma

GitHub iş akışları işlere, işler de adımlara ayrılır. Her adımın birden çok komutu olabilir ve yürütmek için birden çok eylem kullanabilirsiniz.

İşlem hattınızı oluşturmaya başlamak için GitHub web sitesindeki örnek depo çatalınıza gidin.

  1. Eylemler sekmesini seçin.

  2. Bir iş akışını kendiniz ayarlamak için bağlantıyı seçin.

    Screenshot that shows the Get started with GitHub Actions page on the GitHub website.

    Bu noktada işlem hattı yalnızca deponuzdaki .github/workflows dizinindeki boş bir dosyadır. GitHub, çoğu işlem hattını oluşturmak için ihtiyacınız olan önceden oluşturulmuş bileşenleri sağlar. Başlamak için aşağıdaki kodu kopyalayıp Yeni dosyayı düzenle bölmesine yapıştırın:

    # This is a basic workflow to help you get started with Actions
    
    name: CI
    
    # Controls when the action will run. Triggers the workflow on push or pull request
    # events but only for the main branch
    on:
      push:
        branches: [ main ]
      pull_request:
        branches: [ main ]
    
    # A workflow run is made up of one or more jobs that can run sequentially or in parallel
    jobs:
      # This workflow contains a single job called "build"
      build:
        # The type of runner that the job will run on
        runs-on: ubuntu-latest
    
        # Steps represent a sequence of tasks that will be executed as part of the job
        steps:
          # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it
          - uses: actions/checkout@v2
    
          # Runs a single command using the runners shell
          - name: Run a one-line script
            run: echo Hello, world!
    
          # Runs a set of commands using the runners shell
          - name: Run a multi-line script
            run: |
              echo Add other actions to build,
              echo test, and deploy your project.
    
  3. Yeni dosyayı düzenle bölmesinin üst tarafından main.yml dosyasının adını build-staging.yml olarak değiştirin.

    Screenshot that shows an example file being edited in the Edit new file pane on the GitHub website.

  4. anahtarını olarak nameCIBuild and push the latest build to stagingdeğiştirin.

    # This is a basic workflow to help you get started with Actions
    
    name: Build and push the latest build to staging
    

'Açık' tetikleyicisini değiştirme

Temel iş akışı şablonu iki tetikleyiciyle birlikte gelir:

  • Ana dala yapılan tüm gönderimler.
  • Ana dalındaki tüm çekme istekleri.

İşlem hattının çekme isteğinde çalışması gerekmez, bu nedenle anahtardaki on tetikleyicileri değiştirerek yalnızca anında iletme tetikleyicisini tutacak şekilde değiştirin. İkinci tetikleyiciyi kaldırın ve yalnızca push etiketlerini bırakın.

name: Build and push the latest build to staging

on:
  push:
    branches: [ main ]

Kullanıma alma adımını yapılandırma

Ardından, iş adımları üzerinde çalışmaya başlayın. Bu süreçte, işlem hattı tasarım diyagramınızda hem derleme görevlerini hem de dağıtım görevlerini uygularsınız.

  1. altında jobsanahtarı olarak build_push_imageyeniden adlandırınbuild.

  2. Bu iş akışının Ubuntu 20.04'te çalışmasını istediğiniz için anahtarı olarak ubuntu-latestubuntu-20.04değiştirinruns-on.

  3. Yalnızca şablona örnek olarak anahtardaki steps son iki komutu silin.

    Açıklamalar olmadan dosyanız şu örnekteki gibi görünmelidir:

    name: Build and push the latest build to staging
    
    on:
      push:
        branches: [ main ]
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    

Artık eylemi kullanan bir adıma checkout sahipsiniz. Bu eylem, depoyu iş ortamına kopyalar. Bu adım, işlem hattı tasarım diyagramındaki ilk eylem olan Depoyu kopyala eylemiyle eşdeğerdir.

Docker adımları ekleme

Ardından, Docker görüntünüzü oluşturmak için eylemler ekleyin. Bu eylemler için kullanımı ayarlayabilirsiniz. Bu örnekte, kullanılabilir parametrelerin yalnızca birkaçı kullanılır. Daha fazla bilgi için bkz. GitHub derleme-gönderme-eylem belgeleri.

  1. Sağ paneldeki Market sekmesinde docker oturum açma bilgilerini arayın ve docker tarafından yayımlanan ilk sonucu seçin.

    Screenshot showing the search results listing Docker Login.

    Not

    2. sürümden önceki Docker eylemlerinde oturum açma akışı yerleşikti, ancak 2. ve üzeri sürümlerde bu eylemler birbirinden ayrılır, bu nedenle iş akışını doğru ayarlamak için iki eyleme ihtiyacınız vardır.

  2. Yükleme'nin altında kopyalama simgesini seçerek kullanım YAML'sini kopyalayın.

    Screenshot showing the copy function and selecting the Docker Login task.

  3. Kopyalanan YAML'yi eylemin altına yapıştırın actions/checkout@v2 .

    Önemli

    YAML kullanırken girintilere dikkat edin. name anahtarı, yukarıdaki uses anahtarıyla aynı hizada olmalıdır.

  4. , usernameve password anahtarlarına aşağıdaki değerleri registryekleyin:

    • registry: ${{ secrets.ACR_NAME }}
    • username: ${{ secrets.ACR_LOGIN }}
    • password: ${{ secrets.ACR_PASSWORD }}
  5. Bu alıştırmada kullanılmadıkları için diğer anahtarları silin.

  6. Market'in altındaki sağ panelde derleme ve gönderme docker görüntüleri için arama yapın ve docker tarafından yayımlanan ilk sonucu seçin.

    Screenshot that shows the search results that list Build and push Docker images.

  7. Yükleme'nin altında kopyalama simgesini seçerek kullanım YAML'sini kopyalayın.

  8. Kopyalanan YAML'yi, daha önce kopyalanan docker-login eylemdeki son anahtarın altına yapıştırın.

  9. anahtarı olarak nameBuild and push Docker imagesBuild and push staging imagesyeniden adlandırın.

  10. , pushve tags anahtarlarına aşağıdaki değerleri contextekleyin:

    • context: .
    • push: true
    • tags: ${{secrets.ACR_NAME}}/contoso-website:latest
  11. Bu alıştırmada kullanılmadıkları için diğer anahtarları silin.

  12. Docker'ın kullanması için derleme altyapısını ayarlamak için kullanıma alma eylemiyle oturum açma eylemi arasında adlı docker/setup-buildx-action başka bir eylem ekleyin. Aşağıdaki kod parçacığını kopyalayın ve ve login eylemleri arasına checkout yapıştırın.

    - name: Set up Buildx
      uses: docker/setup-buildx-action@v3.0.0
    

    Açıklamalar olmadan son dosyanız aşağıdaki örnekteki gibi görünmelidir:

    name: Build and push the latest build to staging
    
    on:
      push:
        branches: [ main ]
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Set up Buildx
            uses: docker/setup-buildx-action@v3.0.0
    
          - name: Docker Login
            uses: docker/login-action@v3.0.0
            with:
              registry: ${{ secrets.ACR_NAME }}
              username: ${{ secrets.ACR_LOGIN }}
              password: ${{ secrets.ACR_PASSWORD }}
    
          - name: Build and push staging images
            uses: docker/build-push-action@v5.0.0
            with:
              context: .
              push: true
              tags: ${{secrets.ACR_NAME}}/contoso-website:latest
    

Değişiklikleri işleme

Değişikliklerinizi işlemek için sağ üst köşede bulunan Değişiklikleri işle düğmesini seçin. Değişiklikleri işle ekranında işleme için bir açıklama girin ve Değişiklikleri işle'yi seçin.

Screenshot that shows the Commit changes button in the Commit changes pane.

Değişiklikleri işle'nin seçilmesi yeni bir derlemeyi tetikler, ancak gizli dizileri henüz ayarlamadığınız için bu derleme başarısız olur.

Gizli dizileri ayarlama

Gizli dizileri ayarlamak için GitHub depo sayfanızda Ayarlar sekmesini ve ardından sol menüden Gizli Diziler ve değişkenler>Eylemler'i seçin. İş akışınızın kullandığı aşağıdaki gizli dizileri tanımlayın:

  • ACR_NAMEACR_Name: Kurulum betiği tarafından döndürülen değer
  • ACR_LOGINACR Login Username: Kurulum betiği tarafından döndürülen değer
  • ACR_PASSWORDACR Login Password: Kurulum betiği tarafından döndürülen değer
  • RESOURCE_GROUPResource Group Name: Kurulum betiği tarafından döndürülen değer
  • CLUSTER_NAME: contoso-video

Her gizli diziyi tanımlamak için:

  1. Yeni depo gizli dizisi'ni seçin.
  2. Ad olarak, önceki listeden gizli dizi adını girin.
  3. Gizli Dizi için kurulum betiğinden kaydettiğiniz değeri girin veya değeri almak için bir Cloud Shell sorgusu çalıştırın.
  4. Add secret (Gizli dizi ekle) öğesini seçin.

Gizli dizi değerlerini almak için isteğe bağlı sorgular çalıştırma

Kurulum betiğinin döndürduğu değerlere sahip değilseniz, bilgileri almak için Azure Cloud Shell'de aşağıdaki komutları çalıştırabilirsiniz:

  • ACR_NAME:

    az acr list --query "[?contains(resourceGroup, 'mslearn-gh-pipelines')].loginServer" -o table
    
  • ACR_LOGIN:

    az acr credential show --name <ACR_NAME> --query "username" -o table
    
  • ACR_PASSWORD:

    az acr credential show --name <ACR_NAME> --query "passwords[0].value" -o table
    
  • RESOURCE_GROUP:

    az aks list -o tsv --query "[?name=='contoso-video'].resourceGroup"
    

İşi çalıştırma

  1. Eylemler sekmesini seçin.

  2. Listedeki tek yürütmeyi, başarısız build-staging.yml işini seçin.

  3. Sağ üst köşede İşleri yeniden çalıştır Tüm işleri> yeniden çalıştır'ı seçin ve Tüm işleri yeniden çalıştır ekranında İşleri yeniden çalıştır'ı seçin.

    Screenshot that shows the Re-run jobs and Re-run all jobs buttons.

  4. Derleme tamamlandığında Cloud Shell'deçalıştırarak az acr repository list --name <ACR_NAME> -o table Container Registry deposunun contoso-website sonuçlarda göründüğünü doğrulayın.

Üretim iş akışınızı oluşturmak için sonraki üniteye geçin.