Skip to content

Commit 268f9e4

Browse files
Merge pull request #572 from LayoutParser/chore/codeql-reactivation-public-repos
chore(ci): reativa CodeQL agora que os repos do ecossistema sao publicos
2 parents 47976a4 + 76ab17e commit 268f9e4

2 files changed

Lines changed: 112 additions & 0 deletions

File tree

‎.claude/rules/security.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,49 @@ não ao Dependabot version updates. Nenhuma ação necessária no `dependabot.ym
323323
2. `dependabot.yml` — **não mexer**, já é 100% gratuito e correto.
324324
3. `SecurityCodeScan` + baseline — **não mexer**, é o substituto ativo do CodeQL.
325325

326+
## CodeQL REATIVADO — repos voltaram a público (2026-09-25)
327+
328+
A premissa da remoção acima (repo privado → GHAS pago) **deixou de valer**. Os 3 repos do
329+
ecossistema (`LayoutParserApi`, `LayoutParserDecrypt`, `layoutparser-portal`) estão **públicos**
330+
desde a limpeza de histórico de 2026-08-15 (ver seção "🔴🔴 2026-08-15" acima — a decisão de
331+
manter público foi tomada ali, não revertida). Em repositório **público**, code scanning via
332+
`github/codeql-action` é **gratuito**, sem exigir GHAS/licença. O `layoutparser-portal` já
333+
reativou o CodeQL nesse meio-tempo (`javascript-typescript` + `actions`, `build-mode: none`) e
334+
serviu de template para esta reativação — confirmado sem necessidade de mudança.
335+
336+
**Ações desta sessão:**
337+
338+
1. **`LayoutParserApi`** — recriado `.github/workflows/codeql.yml`. `on:` usa `develop`/`master`
339+
(não `main` — branches reais deste repo, confirmado via `git branch -a`). Matriz:
340+
`csharp` + `actions`. `build-mode: none` (não `autobuild`) — decisão deliberada: o
341+
`LayoutParserApi.csproj` referencia `LayoutParserLib` via `HintPath` relativo a um repo
342+
**irmão** (`..\LayoutParserLib\bin\$(Configuration)\LayoutParserLib.dll`) que não existe no
343+
checkout isolado do workflow (o CodeQL só clona este repo). Um `autobuild` real quebraria
344+
nessa `Reference` ausente. `build-mode: none` para C# é suportado desde CodeQL CLI 2.16 —
345+
faz extração/análise direta do código-fonte sem precisar resolver todas as referências,
346+
cobrindo o mesmo escopo de `security-extended` (SQLi, path traversal etc.) sem depender de
347+
build completo. **Limitação conhecida e não resolvida:** análise fluxo-sensível que dependa
348+
de tipos/símbolos definidos em `LayoutParserLib` (não neste repo) pode ficar mais fraca do
349+
que um build real conseguiria — se isso incomodar no futuro, a alternativa é um step manual
350+
que primeiro reconstrói um stub de `LayoutParserLib.dll` antes do `dotnet build`
351+
(`build-mode: manual`), não implementado aqui.
352+
2. **`LayoutParserDecrypt`** — recriado `.github/workflows/codeql.yml` no repo. `on:` usa só
353+
`master` (sem `develop` — fluxo real deste repo é `feat/** → master` direto, confirmado via
354+
`git branch -a`). Matriz: `csharp` + `actions`. Diferente da API, este projeto é **standalone**
355+
(o próprio `.csproj` documenta em comentário que o código de `LayoutParserLib` foi embutido
356+
como arquivos-fonte locais exatamente para não depender de repo irmão) — mas é um projeto
357+
**clássico não-SDK** (`TargetFrameworkVersion v4.8.1`, `OutputType Exe`), que exige MSBuild
358+
(não `dotnet build`) e por isso o `build.yml` existente já roda em `windows-latest` com
359+
`microsoft/setup-msbuild` + `nuget restore`/`msbuild` explícitos, não `dotnet`.
360+
`build-mode: none` do CodeQL roda em `ubuntu-latest` e não builda nada — não tem esse
361+
problema, mas também não se beneficia da build real já validada no `build.yml`. Optou-se por
362+
manter `build-mode: none` + `ubuntu-latest` (mesmo padrão dos outros dois repos, mais simples
363+
e sem custo de manter um segundo caminho de build MSBuild dentro do CodeQL) — se no futuro
364+
quiser uma análise mais profunda equivalente ao `autobuild`, o caminho seria
365+
`build-mode: manual` em `windows-latest` reaproveitando os mesmos steps de
366+
`setup-msbuild`/`nuget restore`/`msbuild` do `build.yml`.
367+
3. **`layoutparser-portal`** — conferido, sem alteração necessária.
368+
326369
## Regras gerais (todos os agentes)
327370

328371
- **NUNCA** comite segredos, connection strings ou tokens.

‎.github/workflows/codeql.yml‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: CodeQL Security Analysis
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
- master
8+
pull_request:
9+
branches:
10+
- develop
11+
- master
12+
schedule:
13+
- cron: '17 6 * * 1'
14+
workflow_dispatch:
15+
16+
# O workflow apenas le o codigo e publica resultados de code scanning.
17+
permissions:
18+
contents: read
19+
20+
concurrency:
21+
group: codeql-${{ github.workflow }}-${{ github.ref }}
22+
cancel-in-progress: true
23+
24+
jobs:
25+
analyze:
26+
name: Analyze (${{ matrix.language }})
27+
# PRs, inclusive de forks, executam exclusivamente em runner hospedado pelo GitHub.
28+
# Nunca substituir por self-hosted neste workflow de analise de codigo nao confiavel.
29+
runs-on: ubuntu-latest
30+
timeout-minutes: 30
31+
permissions:
32+
contents: read
33+
security-events: write
34+
actions: read
35+
strategy:
36+
fail-fast: false
37+
matrix:
38+
language:
39+
- csharp
40+
- actions
41+
42+
steps:
43+
- name: Checkout
44+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
45+
with:
46+
fetch-depth: 1
47+
persist-credentials: false
48+
49+
# build-mode: none (nao autobuild) - deliberado, nao um descuido. O
50+
# LayoutParserApi.csproj referencia LayoutParserLib via HintPath relativo a um repo
51+
# IRMAO (..\LayoutParserLib\bin\...) que nao existe no checkout isolado deste workflow
52+
# (fetch-depth: 1, so este repo). Um autobuild real quebraria nesse Reference ausente.
53+
# CodeQL suporta analise sem build para C# desde a CLI 2.16 (extracao direta do codigo
54+
# fonte, sem precisar resolver todas as referencias) - cobre o mesmo escopo de
55+
# seguranca que security-extended busca (SQL injection, path traversal, etc.) sem
56+
# depender de uma build completa. Se algum dia o CodeQL parar de suportar build-mode:
57+
# none para C#, a alternativa e um step de build manual que primeiro reconstroi um
58+
# stub de LayoutParserLib.dll antes do dotnet build - nao implementado aqui.
59+
- name: Inicializar CodeQL
60+
uses: github/codeql-action/init@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4.38.1
61+
with:
62+
languages: ${{ matrix.language }}
63+
build-mode: none
64+
queries: security-extended
65+
66+
- name: Analisar e publicar resultados
67+
uses: github/codeql-action/analyze@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4.38.1
68+
with:
69+
category: /language:${{ matrix.language }}

0 commit comments

Comments
 (0)