快速入門:建立安全性掃描 GitHub 工作流程
在本快速入門中,您將了解如何建立 CodeQL GitHub 工作流程,以自動探索 .NET 程式碼基底中的弱點。
在 CodeQL 中,程式碼會被視為資料。 安全性弱點、錯誤 (bug) 和其他錯誤,會模型化為查詢,可針對從程式碼擷取的資料庫執行。
必要條件
- GitHub 帳戶。
- .NET 原始程式碼存放庫。
建立工作流程檔案
在 GitHub 存放庫中,將新的 YAML 檔案新增至 .github/workflows 目錄。 選擇有意義的檔案名稱,可清楚指出工作流程要執行的動作的名稱。 如需詳細資訊,請參閱工作流程檔案。
重要
GitHub 要求將工作流程組合檔案放在 .github/workflow 目錄內。
工作流程檔案通常會透過 jobs.<job_id>/steps[*]
定義一個或多個 GitHub Actions 的組合。 如需詳細資訊,請參閱 GitHub Actions 的工作流程語法。
建立名為 codeql-analysis.yml 的新檔案,將下列 YML 內容複寫並貼上到其中:
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
在上述工作流程組合中:
name: CodeQL
會定義名稱,"CodeQL" 會出現在工作流程狀態徽章中。name: "CodeQL"
on
節點表示觸發工作流程的事件:on: push: branches: [main] paths: - '**.cs' - '**.csproj' pull_request: branches: [main] paths: - '**.cs' - '**.csproj' schedule: - cron: '0 8 * * 4'
- 在
main
分支上發生push
或pull_request
時觸發,其中任何檔案變更結尾都會是 .cs 或 .csproj 副檔名。 - 以 cron 作業的形式 (依排程)—每星期四於 8:00 UTC 執行。
- 在
jobs
節點會建置工作流程進行所需的步驟。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
- 有一個名為
analyze
的單一作業將在最新版本的 Ubuntu 上執行。 strategy
將 C# 定義為language
。github/codeql-action/init@v1
GitHub Actions 可用來初始化 CodeQL。github/codeql-action/autobuild@v1
GitHub Action 會建置 .NET 專案。github/codeql-action/analyze@v1
GitHub Actions 會執行 CodeQL 分析。
- 有一個名為
如需詳細資訊,請參閱 GitHub Actions:設定程式碼掃描。
建立工作流程狀態徽章
GitHub 存放庫的常見命名法是讓存放庫目錄根目錄有一個 README.md 檔案。 同樣地,最好報告各種工作流程的最新狀態。 所有工作流程都可以產生狀態徽章,其在 README.md 檔案內視覺上具有吸引力。 若要新增工作流程狀態徽章:
從 GitHub 存放庫,選取 [動作] 瀏覽選項。
所有存放庫工作流程都會顯示在左側,選取所需的工作流程和省略符號 (...) 按鈕。
- 省略符號 (...) 按鈕會展開所選工作流程的功能表選項。
選取 [建立狀態徽章] 功能表選項。
選取 [複製狀態徽章 Markdown] 按鈕。
將 Markdown 貼上到 README.md 檔案,儲存檔案、認可並推送變更。
如需詳細資訊,請參閱新增工作流程狀態徽章。
範例 CodeQL 工作流程狀態徽章
通過 | 失敗 | 無狀態 |
---|---|---|