Hızlı Başlangıç: Güvenlik taraması GitHub iş akışı oluşturma
Bu hızlı başlangıçta, .NET kod tabanınızdaki güvenlik açıklarını bulmayı otomatikleştirmek için bir CodeQL GitHub iş akışı oluşturmayı öğreneceksiniz.
CodeQL'de kod veri olarak değerlendirilir. Güvenlik açıkları, hatalar ve diğer hatalar, koddan ayıklanan veritabanlarında yürütülebilecek sorgular olarak modellenir.
Önkoşullar
- Bir GitHub hesabı.
- .NET kaynak kodu deposu.
İş 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ı genellikle aracılığıyla bir veya daha fazla GitHub Eyleminin bileşimini jobs.<job_id>/steps[*]
tanımlar. Daha fazla bilgi için bkz . GitHub Actions için iş akışı söz dizimi.
codeql-analysis.yml adlı yeni bir dosya oluşturun, aşağıdaki YML içeriğini kopyalayıp içine yapıştırın:
name: "CodeQL"
on:
push:
branches: [main]
paths:
- '**.cs'
- '**.csproj'
pull_request:
branches: [main]
paths:
- '**.cs'
- '**.csproj'
schedule:
- cron: '0 8 * * 4'
jobs:
analyze:
name: analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ['csharp']
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 2
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
Önceki iş akışı bileşiminde:
name: CodeQL
, iş akışı durumu rozetlerinde "CodeQL" ifadesinin görüneceği adı tanımlar.name: "CodeQL"
Düğüm,
on
iş akışını tetikleyen olayları gösterir:on: push: branches: [main] paths: - '**.cs' - '**.csproj' pull_request: branches: [main] paths: - '**.cs' - '**.csproj' schedule: - cron: '0 8 * * 4'
- .cs veya .csproj dosya uzantılarıylabiten dosyaların değiştiği dalda
main
veyapush
oluştuğunda tetiklenen.pull_request
- Her Perşembe saat 8:00 UTC'de çalıştırılacak cron işi olarak (zamanlamaya göre).
- .cs veya .csproj dosya uzantılarıylabiten dosyaların değiştiği dalda
Düğüm,
jobs
iş akışının atılması gereken adımları oluşturur.jobs: analyze: name: analyze runs-on: ubuntu-latest strategy: fail-fast: false matrix: language: ['csharp'] steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 2 - run: git checkout HEAD^2 if: ${{ github.event_name == 'pull_request' }} - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: ${{ matrix.language }} - name: Autobuild uses: github/codeql-action/autobuild@v1 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1
- Ubuntu'nun en son sürümünde çalıştırılacak adlı
analyze
tek bir iş vardır. - C
strategy
# öğesini olaraklanguage
tanımlar. github/codeql-action/init@v1
CodeQL'i başlatmak için GitHub Eylemi kullanılır.github/codeql-action/autobuild@v1
GitHub Eylemi .NET projesini oluşturur.github/codeql-action/analyze@v1
GitHub Eylemi CodeQL analizini gerçekleştirir.
- Ubuntu'nun en son sürümünde çalıştırılacak adlı
Daha fazla bilgi için bkz . GitHub Actions: Kod taramasını yapılandırma.
İş akışı durumu oluşturma rozeti
GitHub depolarının, depo dizininin kökünde bir README.md dosyası olması yaygın bir sıfattı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:
GitHub deposundan Eylemler gezinti seçeneğini belirleyin.
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.
Durum oluştur rozet menü seçeneğini belirleyin.
Durumu kopyala rozeti Markdown düğmesini seçin.
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 CodeQL iş akışı durumu rozeti
Geçir -erek | Başarısız | Durum yok |
---|---|---|