[PR] edited workflow yaml

This commit is contained in:
git_admin 2026-01-28 16:13:26 +03:00
parent 4e4f9e6235
commit 313fce6772

View File

@ -25,7 +25,8 @@ jobs:
echo "username=${{ github.actor }}" >> $GITHUB_OUTPUT echo "username=${{ github.actor }}" >> $GITHUB_OUTPUT
echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
# 3. Проверка: Шаблон сообщения коммита [##] *
# 3. Проверка: Шаблон сообщения коммита [1] ...
- name: Check Commit Message Format - name: Check Commit Message Format
run: | run: |
USERNAME="${{ steps.pr_info.outputs.username }}" USERNAME="${{ steps.pr_info.outputs.username }}"
@ -36,40 +37,36 @@ jobs:
# Перебираем все коммиты в PR # Перебираем все коммиты в PR
git log $BASE_SHA..$HEAD_SHA --pretty=format:"%H %s" | while read -r commit_hash commit_msg; do git log $BASE_SHA..$HEAD_SHA --pretty=format:"%H %s" | while read -r commit_hash commit_msg; do
# Проверяем, начинается ли сообщение с [##] # Проверяем, начинается ли сообщение с [X] (где X - цифра)
if ! echo "$commit_msg" | grep -q "^[##]"; then # Регулярное выражение: символ '^', открывающая '[', цифра, закрывающая ']'
echo "❌ ОШИБКА: Коммит '$commit_msg' не соответствует шаблону '[##] *'" if ! echo "$commit_msg" | grep -q "^\[[0-9]+\]"; then
echo "Коммит должен начинаться с '[##]'" echo "❌ ОШИБКА: Коммит '$commit_msg' не соответствует шаблону '[X] *'"
echo "Коммит должен начинаться с цифры в квадратных скобках, например: [1] ..."
exit 1 exit 1
fi fi
done done
echo "✅ Шаблон сообщений соответствует требованиям." echo "✅ Шаблон сообщений соответствует требованиям."
# 4. Проверка: Изменения только в папке автора # 4. Проверка: Проверка, что файлы лежат в подпапке автора
- name: Check File Paths - name: Check Files Location
run: | run: |
USERNAME="${{ steps.pr_info.outputs.username }}" USERNAME="${{ steps.pr_info.outputs.username }}"
BASE_SHA="${{ github.event.pull_request.base.sha }}" BASE_SHA="${{ github.event.pull_request.base.sha }}"
HEAD_SHA="${{ github.event.pull_request.head.sha }}" HEAD_SHA="${{ github.event.pull_request.head.sha }}"
echo "Checking files in changes..." echo "Checking file locations..."
# Получаем список измененных файлов # Получаем список файлов, которые изменились или добавились в PR
CHANGED_FILES=$(git diff --name-only $BASE_SHA..$HEAD_SHA) git diff --name-only --diff-filter=ACM $BASE_SHA..$HEAD_SHA | while read -r file; do
# Извлекаем первую папку из пути к файлу (разделитель '/')
# Например: "author/subfolder/file.txt" -> "author"
first_folder=$(echo "$file" | cut -d'/' -f1)
# Перебираем каждый файл # Проверяем, совпадает ли эта папка с именем автора PR
while IFS= read -r file; do if [ "$first_folder" != "$USERNAME" ]; then
# Если файл существует (не пустой) echo "❌ ОШИБКА: Файл '$file' не находится в подпапке автора ('$USERNAME')."
if [ -n "$file" ]; then echo "Все изменения должны лежать в папке с именем автора."
# Получаем имя папки (путь до первого слэша) exit 1
DIR_NAME=$(echo "$file" | cut -d'/' -f1)
# Проверяем, что папка совпадает с username ИЛИ файл лежит в корне (пустая папка)
if [ "$DIR_NAME" != "$USERNAME" ] && [ -n "$DIR_NAME" ]; then
echo "❌ ОШИБКА: Файл '$file' находится в папке '$DIR_NAME', которая отличается от имени автора '$USERNAME'"
exit 1
fi
fi fi
done <<< "$CHANGED_FILES" done
echo "✅ Файлы находятся в правильных папках."
echo "✅ Файлы соответствуют папке автора."