# Шаблон: проверка PR ОТК (otk gate) в GitHub Actions. Скопировать в .github/workflows/ проекта 1С
# и заполнить env: свои пути раннера. Раннер — свой (self-hosted) с меткой 1c: платформа 1С, Python 3.11+
# и ОТК (python -m pip install otk-1c). Облачные раннеры GitHub не подходят: на них нет платформы и копии ИБ.
# Копия ИБ и каталог прогонов живут между запусками (частичная загрузка изменённых модулей); первый запуск —
# полная загрузка выгрузки. Linux-раннер: runs-on [self-hosted, linux, 1c], X-сервер ОТК поднимает сама (docs/linux.md).
# База — целевая ветка PR (ОТК берёт её из GITHUB_BASE_REF и догружает сама).
# Артефакт otk-gate: summary.html, summary.md, summary.json, junit.xml, problems.txt, summary.sarif, otk.json.
name: otk

on:
  pull_request:

env:
  OTK_HOME: C:/otk-ci                      # стенд раннера: копии ИБ, прогоны, YAxUnit, BSL LS (пути — в шаге otk gate)
  OTK_USER: ""                             # пользователь ИБ (пароль — секрет OTK_PASSWORD)
  OTK_PLATFORM: ""                         # пусто — самая новая установленная платформа

jobs:
  gate:
    runs-on: [self-hosted, windows, 1c]
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0                       # общий предок с целевой веткой

      - name: otk gate
        env:
          OTK_PASSWORD: ${{ secrets.OTK_PASSWORD }}
          OTK_IB: ${{ env.OTK_HOME }}/ib/ПРОЕКТ        # своя файловая копия ИБ CI (ОТК её меняет)
          OTK_RUN_DIR: ${{ env.OTK_HOME }}/runs
          OTK_YAXUNIT: ${{ env.OTK_HOME }}/YAxUnit.cfe
          OTK_BSLLS: ${{ env.OTK_HOME }}/bsl-language-server/bsl-language-server.exe
        run: python -m otk_1c ci gate --artifacts otk-artifacts

      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: otk-gate
          path: otk-artifacts
          if-no-files-found: ignore
