feat: initial commit
This commit is contained in:
+105
@@ -0,0 +1,105 @@
|
||||
# Pipeline repozytorium wzorcowego.
|
||||
#
|
||||
# Dwa niezależne przepływy:
|
||||
# 1. jakość samego silnika (lint, testy, przebieg offline na fixture, obraz runnera),
|
||||
# 2. demonstracja użycia: te same joby, które repozytoria docelowe dostają przez include
|
||||
# pliku .gitlab/ci/agentic-codemod.template.yml.
|
||||
|
||||
stages: [test, build, prepare, plan, apply]
|
||||
|
||||
# Joby instalują zależności wprost przez pip, a nie przez Taskfile: w obrazie
|
||||
# python:3.12-slim nie ma PEP 668 ani systemowego interpretera do ochrony, a runner
|
||||
# nie musi wtedy mieć go-task. Lokalnym odpowiednikiem tych trzech jobów jest `task ci`.
|
||||
default:
|
||||
image: python:3.12-slim
|
||||
interruptible: true
|
||||
before_script:
|
||||
- apt-get update -qq && apt-get install -y -qq --no-install-recommends git ripgrep >/dev/null
|
||||
- pip install -q -e ".[dev]"
|
||||
|
||||
# Formularz uruchomienia ręcznego (Build > Pipelines > Run pipeline).
|
||||
# Zmienne z opisem i listą wartości renderują się jako pola formularza -
|
||||
# to jest "wsad" dla sieci agentowej podawany przez człowieka.
|
||||
variables:
|
||||
CODEMOD_PACKAGE:
|
||||
value: ""
|
||||
description: "Pakiet do podniesienia, np. acme-sdk (puste = tylko testy silnika)"
|
||||
CODEMOD_TO_VERSION:
|
||||
value: ""
|
||||
description: "Wersja docelowa, np. 2.1.0"
|
||||
CODEMOD_MODULE:
|
||||
value: ""
|
||||
description: "Nazwa modułu importu, jeśli inna niż nazwa pakietu"
|
||||
CODEMOD_CONSTRAINTS:
|
||||
value: ""
|
||||
description: "Dodatkowe ograniczenia z issue lub decyzji architektonicznej"
|
||||
CODEMOD_ISSUE:
|
||||
value: ""
|
||||
description: "Numer issue do skomentowania po utworzeniu MR"
|
||||
CODEMOD_MODEL_PROVIDER:
|
||||
value: "vllm"
|
||||
options: ["vllm", "ollama", "openai_like"]
|
||||
description: "Backend LLM"
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "web"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
||||
- if: '$CI_PIPELINE_SOURCE == "trigger"' # wyzwalane z issue/webhooka
|
||||
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
|
||||
# ---------------------------------------------------------------- jakość silnika
|
||||
lint:
|
||||
stage: test
|
||||
script:
|
||||
- ruff check src tests llm
|
||||
- ruff format --check src tests llm
|
||||
|
||||
# Testy obejmują też ścieżkę agentową: tests/test_llm_path.py podnosi atrapę serwera
|
||||
# OpenAI (llm/mock_server.py) i przepuszcza przez nią pełny przebieg z agentami.
|
||||
# Bez GPU, bez pobierania modelu, tak samo na Linuksie i macOS.
|
||||
unit:
|
||||
stage: test
|
||||
script:
|
||||
- pytest -q --junitxml=report.xml
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit: report.xml
|
||||
|
||||
# Smoke test całego przepływu bez modelu językowego: kontekst APM, adaptery, sandbox,
|
||||
# workflow agno i weryfikacja. Nie wymaga GPU ani dostępu do endpointu LLM,
|
||||
# więc może być bramką na każdym merge requeście.
|
||||
e2e-offline:
|
||||
stage: test
|
||||
script:
|
||||
- |
|
||||
agentic-codemod run \
|
||||
--repo examples/fixtures/acme-app \
|
||||
--package acme-sdk --module acme --to-version 2.1.0 \
|
||||
--offline --run-dir "$CI_PROJECT_DIR/.runs/$CI_PIPELINE_ID"
|
||||
- |
|
||||
grep -q '"status": "success"' ".runs/$CI_PIPELINE_ID/run.json"
|
||||
artifacts:
|
||||
when: always
|
||||
expire_in: 30 days
|
||||
paths: [".runs/"]
|
||||
|
||||
runner-image:
|
||||
stage: build
|
||||
image: gcr.io/kaniko-project/executor:debug
|
||||
before_script: []
|
||||
script:
|
||||
- /kaniko/executor --context "$CI_PROJECT_DIR" --dockerfile ci/Dockerfile
|
||||
--destination "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
|
||||
--destination "$CI_REGISTRY_IMAGE:latest"
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
|
||||
# ------------------------------------------------------- demonstracja użycia szablonu
|
||||
include:
|
||||
- local: '/.gitlab/ci/agentic-codemod.template.yml'
|
||||
inputs:
|
||||
image: "python:3.12-slim"
|
||||
apm_root: "."
|
||||
Reference in New Issue
Block a user