feat: add [skip ci] support and tag trigger

- Skip CI when commit message contains [skip ci]
- Add tag trigger: push 'submit' or 'submit-*' tag to grade
- Prevents unnecessary CI runs during initialization
This commit is contained in:
sit002 2025-12-02 16:04:41 +08:00
parent 9fe26069d6
commit b979960828

View File

@ -4,14 +4,39 @@ on:
push:
branches:
- main
workflow_dispatch:
tags:
- 'submit' # 学生打 submit 标签触发评分
- 'submit-*' # 或 submit-v1, submit-final 等
workflow_dispatch: # 手动触发
permissions:
contents: read
pull-requests: write
jobs:
# 检查是否应该跳过 CI
check-skip:
runs-on: docker
container:
image: alpine:latest
outputs:
should_skip: ${{ steps.check.outputs.skip }}
steps:
- name: Check for skip CI
id: check
run: |
COMMIT_MSG="${{ github.event.head_commit.message }}"
# 检查是否包含 [skip ci], [ci skip], [no ci] 等
if echo "$COMMIT_MSG" | grep -qiE '\[(skip ci|ci skip|no ci|skip actions)\]'; then
echo "skip=true" >> $GITHUB_OUTPUT
echo "⏭️ Skipping CI due to commit message: $COMMIT_MSG"
else
echo "skip=false" >> $GITHUB_OUTPUT
fi
grade:
needs: check-skip
if: needs.check-skip.outputs.should_skip != 'true'
runs-on: docker
container:
image: gradle:9.0-jdk21