Início Rápido: Criar um fluxo de trabalho do GitHub de verificação de segurança
Neste início rápido, você aprenderá a criar um fluxo de trabalho do GitHub do CodeQL para automatizar a descoberta de vulnerabilidades em sua base de código do .NET.
No CodeQL, o código é tratado como dados. Vulnerabilidades de segurança, bugs e outros erros são modelados como consultas que podem ser executadas em bancos de dados extraídos do código.
Pré-requisitos
- Uma conta do GitHub.
- Um repositório de código-fonte do .NET.
Criar um arquivo do fluxo de trabalho
No repositório do GitHub, adicione um novo arquivo YAML ao diretório .github/workflows. Escolha um nome de arquivo significativo, algo que indique claramente o que o fluxo de trabalho se destina a fazer. Para obter mais informações, confira Arquivo do fluxo de trabalho.
Importante
O GitHub exige que os arquivos que compõem o fluxo de trabalho sejam colocados no diretório .github/workflows.
Os arquivos do fluxo de trabalho normalmente definem uma composição de uma ou mais ações do GitHub por meio do jobs.<job_id>/steps[*]
. Para obter mais informações, confira Sintaxe de fluxo de trabalho do GitHub Actions.
Crie um novo arquivo chamado codeql-analysis.yml e copie e cole o seguinte conteúdo YML nele:
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
Na composição anterior do fluxo de trabalho:
O
name: CodeQL
define o nome, "CodeQL" aparecerá nas notificações de status do fluxo de trabalho.name: "CodeQL"
O nó
on
indica os eventos que disparam o fluxo de trabalho:on: push: branches: [main] paths: - '**.cs' - '**.csproj' pull_request: branches: [main] paths: - '**.cs' - '**.csproj' schedule: - cron: '0 8 * * 4'
- Disparado quando um
push
oupull_request
ocorrem no branchmain
quando todos os arquivos alterados terminam com as extensões de arquivo .cs ou .csproj. - Como um trabalho cron (em um agendamento)— para ser executado às 8:00 UTC todas as quintas-feiras.
- Disparado quando um
O nó
jobs
compila as etapas para o fluxo de trabalho a ser realizado.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
- Há um único trabalho, chamado
analyze
, que será executado na versão mais recente do Ubuntu. strategy
define a C# comolanguage
.- A ação do GitHub
github/codeql-action/init@v1
é usada para inicializar o CodeQL. - A ação do GitHub
github/codeql-action/autobuild@v1
cria o projeto .NET. - A ação do GitHub
github/codeql-action/analyze@v1
executa a análise de CodeQL.
- Há um único trabalho, chamado
Para obter mais informações, confira GitHub Actions: Configurar a verificação de código.
Criar uma notificação de status de fluxo de trabalho
É comum que os repositórios do GitHub tenham um arquivo README.md na raiz do diretório do repositório. Da mesma forma, é bom relatar o status mais recente para vários fluxos de trabalho. Todos os fluxos de trabalho podem gerar uma notificação de status, que são visualmente atraentes no arquivo README.md. Para adicionar a notificação de status ao fluxo de trabalho:
No repositório do GitHub, selecione a opção de navegação Ações.
Todos os fluxos de trabalho do repositório são exibidos no lado esquerdo. Selecione o fluxo de trabalho desejado e o botão de reticências (...).
- O botão de reticências (...) expande as opções de menu para o fluxo de trabalho selecionado.
Selecione a opção no menu Criar notificação de status.
Selecione o botão Copiar Markdown da notificação de status.
Cole o Markdown no arquivo README.md, salve o arquivo, faça commit das alterações e envie por push.
Para obter mais informações, confira Como adicionar uma notificação de status do fluxo de trabalho.
Exemplo de notificação de status de fluxo de trabalho de CodeQL
Em aprovação | Com falha | Sem status |
---|---|---|