GitHub Actions ve .NET

Bu genel bakışta GitHub Actions'ın .NET uygulama geliştirmede oynadığı rolü öğreneceksiniz. GitHub Actions, kaynak kod depolarınızın sürekli tümleştirmeyi (CI) ve sürekli teslimi (CD) otomatikleştirmesine olanak sağlar. Bunun ötesinde GitHub Actions, kod incelemeleri, dal yönetimi ve sorunu önceliklendirme ile otomasyona yönelik kancalar sağlayan daha gelişmiş senaryoları kullanıma sunar. GitHub'daki .NET kaynak kodunuzla GitHub Actions'dan birçok şekilde yararlanabilirsiniz.

GitHub Actions

GitHub Actions aşağıdakiler gibi tek başına komutları temsil eder:

  • actions/checkout - Bu eylem, iş akışınızın depoya erişebilmesi için altında $GITHUB_WORKSPACEdeponuzu kullanıma alır.
  • actions/setup-dotnet - Bu eylem, eylemlerde kullanmak üzere bir .NET CLI ortamı ayarlar.
  • dotnet/versionsweeper - Bu eylem .NET depolarını .NET'in destek dışı hedef sürümleri için süpürür.

Bu komutlar tek bir eyleme yalıtılmış olsa da, iş akışı oluşturma ile güçlü olur. İş akışı oluşturmada , iş akışını tetikleyen olayları tanımlarsınız. Bir iş akışı çalıştırıldıktan sonra, gerçekleştirmesi gereken çeşitli işler vardır. Her iş, herhangi bir sayıda adımı tanımlar. Adımlar GitHub Actions'a temsilci seçme veya alternatif olarak komut satırı betiklerini çağırma.

Daha fazla bilgi için bkz . GitHub Actions'a giriş. bir iş akışı dosyasını, bir uygulamayı derlemek, test etmek ve/veya yayımlamak için çeşitli adımları temsil eden bir oluşturma olarak düşünün. Çoğu GitHub Eylemi bağlamında kullanılabilen birçok .NET CLI komutu vardır.

Özel GitHub Actions

Market'te çok sayıda GitHub Actions olsa da, kendiniz yazmak isteyebilirsiniz. .NET uygulamalarını çalıştıran GitHub Actions oluşturabilirsiniz. Daha fazla bilgi için bkz . Öğretici: .NET ile GitHub Eylemi Oluşturma

İş akışı dosyası

GitHub Actions bir iş akışı dosyası aracılığıyla kullanılır. İş akışı dosyası, deponun .github/workflows dizininde bulunmalıdır ve YAML ( *.yml veya *.yaml) olması beklenir. İş akışı dosyaları, iş akışı bileşimini tanımlar. İş akışı, bir veya daha fazla işten oluşan yapılandırılabilir bir otomatik işlemdir. Daha fazla bilgi için bkz . GitHub Actions için iş akışı söz dizimi.

Örnek iş akışı dosyaları

Öğreticiler ve hızlı başlangıçlar olarak sağlanan .NET iş akışı dosyalarının birçok örneği vardır. İş akışı dosya adlarının birkaç iyi örneği aşağıda verilmiştir:

İş akışı dosya adı

Açıklama

Kaynak kodu derler (veya derler). Kaynak kod derlenmiyorsa, bu başarısız olur.

Depo içindeki birim testlerini alıştırmalar. Testleri çalıştırmak için önce kaynak kodun derlenmesi gerekir; bu hem derleme hem de test iş akışıdır (build-validation.yml iş akışının yerini alır). Birim testlerinin başarısız olmasının iş akışı hatasına neden olur.

Paketler ve kaynak kodu bir hedefe yayımlar.

Kodunuzu güvenlik açıkları ve kodlama hataları için analiz eder. Bulunan tüm güvenlik açıkları hataya neden olabilir.

Şifrelenmiş gizli diziler

İş akışı dosyalarınızda şifrelenmiş gizli dizileri kullanmak için, bağlam nesnesinden iş akışı ifadesi söz diziminikullanarak gizli dizilere başvurursunuzsecrets.

${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret

Gizli dizi değerleri hiçbir zaman günlüklere yazdırılmaz. Bunun yerine, adları değerlerini temsil eden bir yıldız işaretiyle yazdırılır. Örneğin, her adım bir iş içinde çalıştırıldığından, kullandığı tüm değerler eylem günlüğüne çıkıştır. Gizli dizi değerleri aşağıdakine benzer şekilde işlenir:

MY_SECRET_VALUE: ***

Önemli

Bağlam secrets , kapsamı depo, dal ve eylem olarak belirlenmiş GitHub kimlik doğrulama belirtecini sağlar. GitHub tarafından kullanıcı müdahalesi olmadan sağlanır:

${{ secrets.GITHUB_TOKEN }}

Daha fazla bilgi için bkz . İş akışında şifrelenmiş gizli dizileri kullanma.

Ekinlikler

İş akışları birçok farklı olay türü tarafından tetiklenir. En yaygın olan Web kancası olaylarına ek olarak zamanlanmış olaylar ve el ile gerçekleştirilen olaylar da vardır.

Örnek web kancası olayı

Aşağıdaki örnekte, bir iş akışı için web kancası olay tetikleyicisinin nasıl belirtilmesi gösterilmektedir:

name: code coverage

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main, staging

jobs:
  coverage:

    runs-on: ubuntu-latest

    # steps omitted for brevity

Önceki iş akışında push ve pull_request olayları iş akışının çalıştırılmasını tetikler.

Örnek zamanlanmış olay

Aşağıdaki örnekte, bir iş akışı için zamanlanmış (cron işi) olay tetikleyicisinin nasıl belirtilmesi gösterilmektedir:

name: scan
on:
  schedule:
  - cron: '0 0 1 * *'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    # steps omitted for brevity

Önceki iş akışında schedule , olayı, iş akışının her ayın ilk gününde çalıştırılmasını tetikleyeceğini belirtir cron'0 0 1 * *' . İş akışlarını zamanlamaya göre çalıştırmak, çalıştırılması uzun süren veya daha az dikkat gerektiren eylemler gerçekleştiren iş akışları için harikadır.

Örnek el ile olay

Aşağıdaki örnekte, bir iş akışı için el ile olay tetikleyicisinin nasıl belirtilmesi gösterilmektedir:

name: build
on:
  workflow_dispatch:
    inputs:
      reason:
        description: 'The reason for running the workflow'
        required: true
        default: 'Manual run'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 'Print manual run reason'
        if: ${{ github.event_name == 'workflow_dispatch' }}
        run: |
          echo 'Reason: ${{ github.event.inputs.reason }}'

    # additional steps omitted for brevity

Önceki iş akışında workflow_dispatch , olay giriş olarak bir reason gerektirir. GitHub bunu görür ve kullanıcı arabirimi dinamik olarak değiştirerek kullanıcıdan iş akışını el ile çalıştırma nedenini belirtmesini ister. steps, kullanıcıdan sağlanan nedeni yazdırır.

Daha fazla bilgi için bkz . İş akışlarını tetikleyen olaylar.

.NET CLI

.NET komut satırı arabirimi (CLI), .NET uygulamalarını geliştirmeye, oluşturmaya, çalıştırmaya ve yayımlamaya yönelik platformlar arası bir araç zinciridir. .NET CLI, bir iş akışı dosyasındaki tek tek steps öğesinin bir parçası olarak kullanılırrun. Ortak komut şunlardır:

Daha fazla bilgi için bkz. .NET CLI'ya genel bakış

Ayrıca bkz.

.NET ile GitHub Actions'a daha ayrıntılı bir bakış için aşağıdaki kaynakları göz önünde bulundurun: