From 4c432f5068ab0291c43767502cd89f8381ad07c6 Mon Sep 17 00:00:00 2001 From: Aminyx Date: Sun, 11 Oct 2026 13:39:26 +0500 Subject: [PATCH] =?UTF-8?q?project-check:=20gitleaks=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=B2=D1=81=D0=B5=D0=B9=20=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=B1=D0=B5=D0=B7=20gitleaks-action=20=E2=80=94=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20push=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B5=20=D0=BA=D1=80=D0=B0=D1=81=D0=BD=D0=B5?= =?UTF-8?q?=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gitleaks-action на push сканирует диапазон «<первый коммит>^..<последний>». На первом push проекта первый коммит корневой, родителя у него нет, git log падает с «unknown revision», и шаг поиска секретов краснеет без единой находки (gitleaks/gitleaks-action#199). Так упал и сам репозиторий курса 29.07, и так упал бы первый push каждого студента, скопировавшего шаблон. Теперь шаблон скачивает gitleaks 8.30.1 с официальных релизов, сверяет архив с опубликованной контрольной суммой и запускает `gitleaks git` по всей истории. Заодно не нужна лицензия, которую action требует для репозиториев организаций (docs/github-org.md предлагает ставить workflow именно туда). --- .github/workflows/project-check.yml | 16 +++++++++++++--- CHANGELOG.md | 3 +++ STATS.md | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/project-check.yml b/.github/workflows/project-check.yml index c4fe091..b4c3241 100644 --- a/.github/workflows/project-check.yml +++ b/.github/workflows/project-check.yml @@ -58,14 +58,24 @@ jobs: secrets: name: Поиск утёкших секретов runs-on: ubuntu-latest + env: + GITLEAKS_VERSION: 8.30.1 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # gitleaks проверяет всю историю + # Не gitleaks-action: на push он сканирует «<первый коммит>^..<последний>», а на первом + # push проекта первый коммит корневой, родителя у него нет — проверка падала на ровном месте + # (gitleaks/gitleaks-action#199). И в репозиториях организаций action требует лицензию. + # Сам gitleaks по всей истории работает везде; архив сверяем с официальной контрольной суммой. - name: gitleaks - uses: gitleaks/gitleaks-action@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + base="https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}" + tarball="gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" + curl -sSfLO "$base/$tarball" + curl -sSfL "$base/gitleaks_${GITLEAKS_VERSION}_checksums.txt" | grep " $tarball\$" | sha256sum -c - + tar -xzf "$tarball" gitleaks + ./gitleaks git --redact --verbose . python: name: Python — стиль и безопасность diff --git a/CHANGELOG.md b/CHANGELOG.md index 110e8fb..37673b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,9 @@ без указания, куда идти. - Верные ответы тестов были скучены на одной позиции (259 из 270 на B) — распределение выровнено. - 61 ссылка вела в **поиск** YouTube, а выглядела как готовый урок — теперь честно помечена «поиск на YouTube». +- **Автопроверка проектов краснела на первом push**: шаг поиска секретов (`gitleaks-action`) строил + диапазон от родителя первого коммита, а у корневого коммита родителя нет. `project-check.yml` теперь + запускает сам gitleaks по всей истории — первый push проходит, и лицензия для организаций не нужна. ### Планируется - Живое сообщество (Telegram/Discord) по [docs/community-setup.md](docs/community-setup.md) diff --git a/STATS.md b/STATS.md index 6198c86..ec6284e 100644 --- a/STATS.md +++ b/STATS.md @@ -22,7 +22,7 @@ | 📄 Шаблонов документов | **6** | | 🎤 Вопросов к собеседованию | **102** | | 🌍 Языков | **2** | -| 📖 Строк в Markdown | **11924** | +| 📖 Строк в Markdown | **11927** | ---