chore(infra): CI-Workflows bei Draft-PRs skippen #287

Closed
opened 2026-07-09 23:53:19 +02:00 by niboer · 1 comment
Owner

Aktuelles:
Alle CI-Workflows (ci-backend, ci-frontend, ci-meta, e2e) laufen bei jedem pull_request-Event auf main – unabhaengig davon, ob der PR im Draft-Status ist oder nicht. Das verbraucht CI-Ressourcen fuer Work-in-Progress, die noch nicht review-ready sind.

Gewuenschtes Verhalten:

  • CI-Workflows sollen nicht laufen, wenn der PR im Draft-Status ist (github.event.pull_request.draft == true).
  • Der Uebergang "Ready for Review" (Draft → Ready) soll weiterhin die CI ausloesen.

Umsetzungsvorschlag:
In den betroffenen Workflow-Dateien (ci-backend.yml, ci-frontend.yml, ci-meta.yml, e2e.yml) auf Job-Ebene ein if: github.event.pull_request.draft == false ergaenzen. Jobs, die nur auf push (main) laufen, bleiben unveraendert.

Beispiel:

jobs:
  lint-backend:
    if: github.event.pull_request.draft == false
    ...

Der push-Trigger auf main bleibt davon unberuehrt.

Betroffene Dateien:

  • .gitea/workflows/ci-backend.yml
  • .gitea/workflows/ci-frontend.yml
  • .gitea/workflows/ci-meta.yml
  • .gitea/workflows/e2e.yml
**Aktuelles:** Alle CI-Workflows (`ci-backend`, `ci-frontend`, `ci-meta`, `e2e`) laufen bei jedem `pull_request`-Event auf `main` – unabhaengig davon, ob der PR im Draft-Status ist oder nicht. Das verbraucht CI-Ressourcen fuer Work-in-Progress, die noch nicht review-ready sind. **Gewuenschtes Verhalten:** - CI-Workflows sollen **nicht** laufen, wenn der PR im Draft-Status ist (`github.event.pull_request.draft == true`). - Der Uebergang "Ready for Review" (Draft → Ready) soll weiterhin die CI ausloesen. **Umsetzungsvorschlag:** In den betroffenen Workflow-Dateien (`ci-backend.yml`, `ci-frontend.yml`, `ci-meta.yml`, `e2e.yml`) auf Job-Ebene ein `if: github.event.pull_request.draft == false` ergaenzen. Jobs, die nur auf `push` (main) laufen, bleiben unveraendert. Beispiel: ```yaml jobs: lint-backend: if: github.event.pull_request.draft == false ... ``` Der `push`-Trigger auf `main` bleibt davon unberuehrt. **Betroffene Dateien:** - `.gitea/workflows/ci-backend.yml` - `.gitea/workflows/ci-frontend.yml` - `.gitea/workflows/ci-meta.yml` - `.gitea/workflows/e2e.yml`
Author
Owner

Korrektur: Der reine if-Guard reicht nicht. Die pull_request-Trigger-Types muessen explizit ready_for_review enthalten, sonst feuert der Workflow beim Draft→Ready-Uebergang gar nicht erst.

Korrekte Variante:

on:
  pull_request:
    types:
      - opened
      - synchronize
      - reopened
      - ready_for_review

jobs:
  build:
    if: ${{ !github.event.pull_request.draft }}
    ...

Der default types ist [opened, synchronize, reopened]ready_for_review muss explizit hinzugefuegt werden. Der if-Guard verhindert dann die Ausfuehrung bei Draft-PRs bei allen Events ausser ready_for_review (wo draft == false ist).

**Korrektur:** Der reine `if`-Guard reicht nicht. Die `pull_request`-Trigger-Types muessen explizit `ready_for_review` enthalten, sonst feuert der Workflow beim Draft→Ready-Uebergang gar nicht erst. Korrekte Variante: ```yaml on: pull_request: types: - opened - synchronize - reopened - ready_for_review jobs: build: if: ${{ !github.event.pull_request.draft }} ... ``` Der default `types` ist `[opened, synchronize, reopened]` – `ready_for_review` muss explizit hinzugefuegt werden. Der `if`-Guard verhindert dann die Ausfuehrung bei Draft-PRs bei allen Events ausser `ready_for_review` (wo `draft == false` ist).
Sign in to join this conversation.
No description provided.