# Сгенерированный код (Go-сервер, TS-клиент, дизайн-токены) совпадает с исходниками (docs/ci-cd.md). name: ci / contract on: push: branches: [main] paths: - 'api/openapi.yaml' - 'services/api/internal/api/gen/**' - 'services/api/go.mod' - 'services/api/go.sum' - 'packages/api-client/**' - 'packages/design-tokens/**' - 'package.json' - 'pnpm-lock.yaml' - 'pnpm-workspace.yaml' - 'turbo.json' - 'tsconfig.base.json' - '.gitea/workflows/ci-contract.yml' pull_request: paths: - 'api/openapi.yaml' - 'services/api/internal/api/gen/**' - 'services/api/go.mod' - 'services/api/go.sum' - 'packages/api-client/**' - 'packages/design-tokens/**' - 'package.json' - 'pnpm-lock.yaml' - 'pnpm-workspace.yaml' - 'turbo.json' - 'tsconfig.base.json' - '.gitea/workflows/ci-contract.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: contract: name: contract (сгенерированный код совпадает с openapi.yaml) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: { go-version: "1.24", cache-dependency-path: services/api/go.sum } - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: { node-version: "22", cache: pnpm } - run: pnpm install --frozen-lockfile - name: Регенерация Go-сервера, TS-клиента и дизайн-токенов run: | (cd services/api && go generate ./...) pnpm generate - name: Проверка, что всё закоммичено # status, а не diff: diff не видит новые неотслеживаемые файлы run: | changes="$(git status --porcelain -- services/api/internal/api/gen packages)" if [ -n "$changes" ]; then echo "$changes"; git diff -- services/api/internal/api/gen packages; exit 1; fi