cicd-debugger-env / env /tasks /medium.py
Lishika's picture
finally added all
ae94737
from __future__ import annotations
from env.tasks.task_types import CICDTask
MEDIUM_TASKS: list[CICDTask] = [
CICDTask(
task_id="medium-python-version",
title="Align Python version",
description="Tests require Python 3.11 but workflow pins an older version.",
difficulty="medium",
failure_stage="build",
broken_config="""
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.8"
- run: pip install -r requirements.txt
- run: pytest -q
""".strip(),
expected_config="""
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install -r requirements.txt
- run: pytest -q
""".strip(),
logs="build failed: package requires python>=3.11",
error_message="python interpreter version mismatch",
actual_bug="workflow pins python-version 3.8 while project requires 3.11",
metadata={"broken_token": 'python-version: "3.8"', "fixed_token": 'python-version: "3.11"'},
),
CICDTask(
task_id="medium-cache-key",
title="Fix cache invalidation key",
description="Dependency cache key ignores lockfile hash and restores stale dependencies.",
difficulty="medium",
failure_stage="test",
broken_config="""
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: actions/cache@v4
with:
path: ~/.npm
key: node-modules-${{ runner.os }}
- run: npm ci
- run: npm test
""".strip(),
expected_config="""
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: actions/cache@v4
with:
path: ~/.npm
key: node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- run: npm ci
- run: npm test
""".strip(),
logs="test failed: stale cache restored old dependency tree",
error_message="cache key misses lockfile fingerprint",
actual_bug="cache key is too broad and never invalidates on dependency changes",
metadata={"broken_token": "key: node-modules-${{ runner.os }}", "fixed_token": "hashFiles('**/package-lock.json')"},
),
CICDTask(
task_id="medium-artifact-permissions",
title="Repair artifact permissions",
description="Artifact upload fails due to insufficient token permissions.",
difficulty="medium",
failure_stage="deploy",
broken_config="""
name: CI
on: [push]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: web-build
path: dist/
""".strip(),
expected_config="""
name: CI
on: [push]
permissions:
contents: read
actions: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: web-build
path: dist/
""".strip(),
logs="deploy stage failed: Resource not accessible by integration",
error_message="insufficient permissions for upload-artifact",
actual_bug="actions:write permission missing from workflow permissions",
metadata={"broken_token": "permissions:\n contents: read", "fixed_token": "actions: write"},
),
]