All checks were successful
CI / test (push) Successful in 46s
CI / build-and-package (amd64, darwin) (push) Successful in 36s
CI / build-and-package (amd64, linux) (push) Successful in 37s
CI / build-and-package (amd64, windows) (push) Successful in 44s
CI / build-and-package (arm64, darwin) (push) Successful in 35s
CI / build-and-package (arm64, linux) (push) Successful in 36s
- Task.Repos []string (XML-колонка repos, обратная совместимость с repo)
- config: блок git {base_url, token}
- аналитик: ответ repos[], шаблон показывает список
- core: propose без repos → возврат в сбор (E1)
- worker вариант A: один dev из общего cwd, prepareRepos клонирует
недостающие репо (git clone), validateRepoName (E3), ErrRepoNotGit (E4)
- ошибки E1-E4 в worker/errors.go
33 lines
1.2 KiB
Go
33 lines
1.2 KiB
Go
package worker
|
||
|
||
import "errors"
|
||
|
||
// Классы ошибок W1–W5 (планировщик) и E1–E4 (репозитории).
|
||
var (
|
||
// W1 — ошибка опроса БД.
|
||
ErrPoll = errors.New("W1: poll error")
|
||
|
||
// W2 — задача в невалидном статусе.
|
||
ErrLaunch = errors.New("W2: launch error")
|
||
|
||
// W3 — ошибка создания/обновления трассы.
|
||
ErrTrace = errors.New("W3: trace error")
|
||
|
||
// W4 — ошибка обновления статуса задачи.
|
||
ErrUpdate = errors.New("W4: update error")
|
||
|
||
// W5 — превышена параллельность, задача пропущена.
|
||
ErrConcurrencyLimit = errors.New("W5: concurrency limit")
|
||
|
||
// E1 — задача без репозиториев (нечего клонировать/править).
|
||
ErrNoRepos = errors.New("E1: no repositories")
|
||
|
||
// E2 — git clone упал.
|
||
ErrClone = errors.New("E2: clone failed")
|
||
|
||
// E3 — имя репозитория содержит путь-эскейп (../, / и т.п.).
|
||
ErrRepoPathHint = errors.New("E3: repo path escape")
|
||
|
||
// E4 — папка существует, но не является git-репозиторием.
|
||
ErrRepoNotGit = errors.New("E4: existing dir is not a git repo")
|
||
) |