Aracılığıyla paylaş


Hızlı Başlangıç: Uygulama yayımlamak için GitHub iş akışı oluşturma

Bu hızlı başlangıçta, .NET uygulamanızı kaynak koddan yayımlamak için GitHub iş akışı oluşturmayı öğreneceksiniz. .NET uygulamanızı GitHub'dan bir hedefe otomatik olarak yayımlamak, sürekli dağıtım (CD) olarak adlandırılır. Bir uygulamayı yayımlamak için birçok olası hedef vardır, bu hızlı başlangıçta Azure'da yayımlayacaksınız.

Önkoşullar

  • Bir GitHub hesabı.
  • .NET kaynak kodu deposu.
  • Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir hesap oluşturun.
  • bir ASP.NET Core web uygulaması.
  • Azure App Service kaynağı.

Yayımlama profili ekle

Uygulamayı Azure'da yayımlamak için uygulamanın App Service örneğinin Azure portalını açın. Kaynak bölümünde Genel Bakış'a gidin, Yayımlama profilini al'ı seçin ve .PublishSetting dosyasını yerel olarak kaydedin.

Azure Portal, App Service kaynağı: Yayımlama profilini al

Uyarı

Yayımlama profili, Azure App Service kaynağınıza erişmek için kullanılan kimlik bilgileri gibi hassas bilgiler içerir. Bu bilgiler her zaman çok dikkatli bir şekilde ele alınmalıdır.

GitHub deposunda Ayarlar'a gidin ve sol gezinti menüsünden Gizli Diziler'i seçin. Yeni bir gizli dizi eklemek için Yeni depo gizli dizisini seçin.

GitHub / Ayarlar / Gizli: Yeni depo gizli anahtarı ekleme

AZURE_PUBLISH_PROFILE alanına Ad olarak girin ve yayımlama profilindeki XML içeriğini Değer metin alanına yapıştırın. Add secret öğesini seçin. Daha fazla bilgi için bkz Şifrelenmiş sırlar.

İş akışı dosyası oluşturma

GitHub deposunda ,.github/workflows dizinine yeni bir YAML dosyası ekleyin. İş akışının amacını açıkça gösterecek anlamlı bir dosya adı seçin. Daha fazla bilgi için bkz. İş akışı dosyası.

Önemli

GitHub, iş akışı oluşturma dosyalarının .github/workflows dizinine yerleştirilmesini gerektirir.

İş akışı dosyaları, bir veya daha fazla GitHub Eylemi bileşimini jobs.<job_id>/steps[*] aracılığıyla tanımlar. Daha fazla bilgi için bkz. GitHub Actions için iş akışı söz dizimi.

publish-app.yml adlı yeni bir dosya oluşturun, aşağıdaki YML içeriğini kopyalayıp içine yapıştırın:

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

Önceki iş akışı bileşiminde:

  • name: publish adı tanımlar, "yayımla" iş akışı durumu rozetlerinde görünür.

    name: publish
    
  • Düğüm, on iş akışını tetikleyen olayları belirtir:

    on:
      push:
        branches: [ production ]
    
    • push dalında bir production oluştuğunda tetiklenir.
  • Düğüm, env adlandırılmış ortam değişkenlerini (env var) tanımlar.

    env:
      AZURE_WEBAPP_NAME: DotNetWeb
      AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • Ortam değişkenine AZURE_WEBAPP_NAME değeri DotNetWebatanır.
    • Ortam değişkenine AZURE_WEBAPP_PACKAGE_PATH değeri '.'atanır.
    • Ortam değişkenine DOTNET_VERSION değeri '6.0.401'atanır. Ortam değişkenine daha sonra GitHub Eyleminin dotnet-versionactions/setup-dotnet@v3 belirtilmesi için başvurulur.
  • Düğüm, jobs iş akışının atılması gereken adımları oluşturur.

    jobs:
      publish:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • Ubuntu'nun en son sürümünde çalışacak, publish adlı tek bir iş vardır.
    • actions/setup-dotnet@v3 GitHub Eylemi, .NET SDK'sını ortam değişkeninden DOTNET_VERSION belirtilen sürümle ayarlamak için kullanılır.
    • dotnet restore komutu çağrılır.
    • dotnet build komutu çağrılır.
    • dotnet publish komutu çağrılır.
    • dotnet test komutu çağrılır.
    • azure/webapps-deploy@v2 GitHub Eylemi, uygulamayı verilen publish-profile ve package ile dağıtır.
      • publish-profile, depo sırrından AZURE_PUBLISH_PROFILE atanır.

İş akışı durumu rozeti oluşturma

GitHub depolarında, depo dizininin kökünde README.md dosyasının bulunması yaygın bir uygulamadır. Benzer şekilde, çeşitli iş akışları için en son durumu bildirmek de güzeldir. Tüm iş akışları, README.md dosyasında görsel olarak çekici olan bir durum rozeti oluşturabilir. İş akışı durumu rozetini eklemek için:

  1. GitHub deposundan Eylemler gezinti seçeneğini belirleyin.

  2. Tüm depo iş akışları sol tarafta görüntülenir, istediğiniz iş akışını ve üç nokta (...) düğmesini seçin.

    • Üç nokta (...) düğmesi, seçili iş akışı için menü seçeneklerini genişletir.
  3. Durum oluştur rozet menü seçeneğini belirleyin.

    GitHub: Durum oluşturma rozeti

  4. Kopyalama durumu rozeti Markdown düğmesini seçin.

    GitHub: Durum rozeti Markdown'unu kopyala

  5. Markdown'ı README.md dosyasına yapıştırın, dosyayı kaydedin, işleyin ve değişiklikleri gönderin.

Daha fazla bilgi için bkz. İş akışı durumu ekleme rozeti.

Örnek yayımlama iş akışı durumu rozeti

Geçici Başarısız Durum yok
GitHub: başarılı rozetini yayınlama GitHub: başarısız yayımlama rozeti GitHub: durum yayımlama rozeti

Ayrıca bakınız

Sonraki Adımlar