Alıştırma - Üretim uygulama görüntüsünü oluşturma

Tamamlandı

Önceki alıştırmada, uygulama görüntüsünü oluşturmak ve yayımlamak için hazırlama iş akışını oluşturmuştsunuz. Bu ünitede etiketli sürüm tetikleyicisini kullanan bir üretim iş akışı oluşturacaksınız.

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

Bu alıştırmada şunları yapın:

  • Eylemler iş akışını oluşturun.
  • Tetikleyiciyi on tag oluşturun.
  • Üretim görüntüsünü derleyin ve gönderme.
  • Kişisel erişim belirteci (PAT) oluşturma.
  • Etiket olayını tetikleyin.

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

  1. İşlem hattını oluşturmaya başlamak için GitHub web sitesindeki örnek depo çatalınıza gidin ve Eylemler sekmesini seçin.

  2. Sol bölmede Yeni iş akışı'nı seçin.

    Screenshot that shows the New workflow button on the GitHub Actions page.

  3. İş akışı seçin sayfasında, iş akışını kendiniz ayarlayın'ı seçin.

  4. Temel iş akışını kopyalayıp düzenleme 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.
    
  5. Düzenleme bölmesinin üzerinde dosyasını olarak main.ymlbuild-production.ymlyeniden adlandırın.

  6. anahtarını olarak nameCIBuild and push the tagged build to productiondeğiştirin.

'Açık' etiket tetikleyicisini oluşturma

on anahtarındaki varsayılan tetikleyicileri değiştirin.

  1. İkinci tetikleyiciyi kaldırın ve yalnızca push etiketlerini bırakın.

  2. branches anahtarını aşağıdaki tags anahtarla değiştirin. Bu anahtar, iş akışının yalnızca belirli etiketlerde çalıştığı anlamına gelir. Bu durumda iş akışı yalnızca etiketi içeren desene v*v1.0.0uyarsa çalışır.

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    

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

  1. Önceki alıştırmada olduğu gibi:

    • anahtarını olarak jobsubuntu-latestubuntu-20.04değiştirin.
    • build anahtarının adını build_push_image olarak değiştirin.
    • anahtarında steps , şablondan son iki örnek adımı silin ve seçeneğini koruyun checkout .
  2. Gerekli sürüm bilgilerini toplayan yeni bir adım oluşturun. Bu adımı oluşturmak için iç komutunu kullanırsınız ::set-output . Kullanıma alma eyleminin altına aşağıdaki satırları ekleyin:

    - name: Fetch latest version
      id: fetch_version
      run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    

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

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Fetch latest version
            id: fetch_version
            run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    

Docker adımları ekleme

Hazırlama iş akışıyla aynı şekilde ve Build and push Docker images adımlarını Docker Login ekleyin.

  1. Sağ panelde Docker Oturum Açma araması yapın. İlk sıradaki Docker tarafından yayımlanmış olan sonucu seçin.

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

  3. Kopyalanan YAML'yi eylemin altına yapıştırın Fetch latest version .

  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.

  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 production 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,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}

    Anahtarın değerinin tags hazırlama iş akışından nasıl farklılık gösterdiğine dikkat edin. YAML'de kullanmak steps. , işlem hattındaki önceki adımlara başvurmak için yaygın bir uygulamadır. adımında fetch_version kullandığınızdaset-output, adımın çıkışını değişkeninin GITHUB_REF değerine ayarlarsınız. Bu çıkış artık nesnenin içindeki işlem hattında steps kullanılabilir.

  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
    

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

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Fetch latest version
            id: fetch_version
            run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    
          - 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 production images
            uses: docker/build-push-action@v5.0.0
            with:
              context: .
              tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}
              push: true
    

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. İşleme için bir açıklama girin ve Değişiklikleri işle'yi seçin.

Bu kez, yeni bir etiket göndermediğiniz için üretim eylemi tetiklenmez, ancak önceki hazırlama eylemi tetikler ve yeni latest bir görüntü oluşturur.

Kişisel erişim belirteci oluşturma (PAT)

Sonraki adımda etiketlerinizi göndermek ve dağıtım betiğini sonraki bir ünitede çalıştırmak için bir PAT gerekir.

  1. GitHub web sitesindeki örnek deponun çatalını bulun. Sağ üst köşedeki profil fotoğrafınızı ve ardından Ayarlar seçin.

  2. Sol menünün alt kısmındaki Geliştirici ayarları'nı seçin.

  3. Açılan listeden Kişisel erişim belirteçleri>Belirteçleri (klasik) öğesini seçin.

  4. Kişisel erişim belirteci oluştur'a tıklayın.

  5. Not altında PAT'niz için myPersonalAccessTokenLM gibi bir ad girin.

  6. Kapsamları seçin altında, iş akışının yanındaki onay kutusunu seçin.

    Screenshot that shows the personal access tokens page.

    Not

    İş Akışı kapsamı, Github eylemlerine yönetici deposu erişimi verir. Sonraki adımda etiketlerinizi göndermek ve dağıtım betiğini sonraki bir ünitede çalıştırmak için bu erişime ihtiyacınız vardır.

  7. Sayfanın alt kısmındaki Belirteç oluştur'a tıklayın.

  8. PAT'nizi kopyalamak için kopyala simgesini seçin. Sonraki adımlarda kullanmak için PAT'yi kaydedin.

    Screenshot that shows the personal access token after it's created.

Etiket olayını tetikleme

  1. Azure Cloud Shell'de kopyalanan deponuza gidin ve komutunu çalıştırıngit pull.

  2. Şu komutu çalıştırın:

    git tag -a v2.0.0 -m 'My first tag'
    
  3. Aşağıdaki komutu çalıştırın. İstendiğinde parola olarak PAT'nizi sağlayın.

    git push --tags
    

    Önemli

    Özgün depo v1.0.0 kullanır, bu nedenle yinelenenler mevcut olmadığından farklı bir etiket göndermeniz gerekir.

  4. Eylemler sekmesini seçin ve çalışan işlemi inceleyin.

  5. İşlem tamamlandığında Cloud Shell'de aşağıdaki komutu çalıştırın ve değerini sizin ACR_NAMEile değiştirerek <ACR_NAME> sonuçlarda iki etiketin listelendiğini onaylayın.

    az acr repository show-tags --repository contoso-website --name <ACR_NAME> -o table
    

İşlem hattınızı otomatikleştirmek için Kubernetes uygulamalarına yönelik bir paketleme aracı olan Helm'i kullanma hakkında bilgi edinmek için bir sonraki üniteye geçin.