Краткое руководство. Создание рабочего процесса проверки безопасности GitHub
В этом кратком руководстве вы узнаете, как создать рабочий процесс CodeQL GitHub для автоматизации обнаружения уязвимостей в базе кода .NET.
В CodeQL код обрабатывается как данные. Уязвимости системы безопасности и разного рода ошибки моделируются в виде запросов, которые можно выполнять для баз данных, извлеченных из кода.
Необходимые компоненты
- Учетная запись GitHub.
- Репозиторий исходного кода .NET.
Создание файла рабочего процесса
В репозитории GitHub добавьте новый ФАЙЛ YAML в каталог github/workflows . Выберите понятное имя файла, которое четко указывает, что рабочий процесс предназначен для выполнения. Дополнительные сведения см . в файле рабочего процесса.
Внимание
GitHub требует, чтобы файлы композиции рабочих процессов размещались в каталоге github/workflows .
Файлы рабочих процессов обычно определяют композицию одного или нескольких GitHub Action с помощью .jobs.<job_id>/steps[*]
Дополнительные сведения см. в синтаксисе рабочего процесса для 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'
- Активируется при
push
возникновении илиpull_request
возникновенииmain
в ветви, в которой все файлы изменились, заканчивая расширениями .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 используется для инициализации CodeQL. - Действие
github/codeql-action/autobuild@v1
GitHub создает проект .NET. - Действие
github/codeql-action/analyze@v1
GitHub выполняет анализ CodeQL.
- Существует одно задание с именем
Дополнительные сведения см. в разделе GitHub Actions: настройка сканирования кода.
Создание индикатора состояния рабочего процесса
В репозиториях GitHub обычно используется файл README.md в корне каталога репозитория. Аналогичным образом, приятно сообщить о последнем состоянии для различных рабочих процессов. Все рабочие процессы могут создать значок состояния, который визуально привлекательно в файле README.md . Чтобы добавить значок состояния рабочего процесса, выполните следующие действия.
В репозитории GitHub выберите параметр навигации Actions .
Все рабочие процессы репозитория отображаются слева, выберите нужный рабочий процесс и кнопку с многоточием (...).
- Кнопка с многоточием (...) расширяет параметры меню для выбранного рабочего процесса.
Выберите пункт меню "Создать индикатор состояния".
Нажмите кнопку "Копировать состояние" Markdown .
Вставьте Markdown в файл README.md , сохраните файл, зафиксируйте и отправьте изменения.
Дополнительные сведения см. в разделе "Добавление индикатора состояния рабочего процесса".
Пример индикатора состояния рабочего процесса CodeQL
Прохождения | Неудача | Нет состояния |
---|---|---|