forked from yixinnb/test
81 lines
2.7 KiB
YAML
81 lines
2.7 KiB
YAML
name: Process Python Script on PR
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize]
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
process-python:
|
|
runs-on: auto_judgement_py
|
|
steps:
|
|
- name: Output GitHub Context
|
|
id: output-context
|
|
run: |
|
|
# Loop through all properties in the github context
|
|
for key in $(echo '${{ toJson(github) }}' | jq -r 'keys[]'); do
|
|
value=$(echo '${{ toJson(github) }}' | jq -r .$key)
|
|
echo "Property Name: $key"
|
|
echo "Property Value: $value"
|
|
echo "-------------------------"
|
|
done
|
|
|
|
- name: Checkout PR code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ gitea.head_ref }} # 检出 PR 的 HEAD 分支代码
|
|
|
|
- name: Find newly added .py file
|
|
id: find-file
|
|
run: |
|
|
# 获取相对于主分支新增的文件(仅限添加操作)
|
|
NEW_FILES=$(git diff --diff-filter=A --name-only origin/main...HEAD)
|
|
# 检查是否只有一个新增的 .py 文件
|
|
NEW_PY_FILES=$(echo "$NEW_FILES" | grep '\.py$')
|
|
NEW_PY_FILE_COUNT=$(echo "$NEW_PY_FILES" | wc -l)
|
|
|
|
if [ "$NEW_PY_FILE_COUNT" -ne 1 ]; then
|
|
echo "提交的文件不是唯一的 .py 文件,或者没有 .py 文件!" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# 取最后一个新增的 .py 文件
|
|
NEW_PY_FILE=$(echo "$NEW_PY_FILES" | tail -n 1)
|
|
echo "new_py_file=$NEW_PY_FILE" >> $GITHUB_OUTPUT
|
|
|
|
- name: Rename and store file as code.py
|
|
run: |
|
|
# 将文件命名为 code.py 并保存到当前工作目录
|
|
cp "${{ steps.find-file.outputs.new_py_file }}" "code.py"
|
|
echo "文件已保存为 code.py"
|
|
|
|
- name: Call main.py and commit result
|
|
run: |
|
|
# 执行 main.py 脚本,获取输出的文件名
|
|
FILE_NAME=$(python3 main.py)
|
|
|
|
# 检查 main.py 输出是否有效
|
|
if [ -z "$FILE_NAME" ]; then
|
|
echo "main.py 输出的文件名无效!" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# 将文件名作为文件保存到 /storage 目录
|
|
mkdir -p /storage
|
|
mv "code.py" "/storage/$FILE_NAME"
|
|
echo "文件已移动到 /storage 目录,并命名为 $FILE_NAME"
|
|
|
|
- name: Commit and push changes
|
|
run: |
|
|
# 将更改提交到仓库并合并
|
|
git add /storage/*
|
|
git commit -m "提交代码文件到 /storage"
|
|
git push origin ${{ github.head_ref }} # 推送更改到当前分支
|
|
|
|
- name: Approve and merge PR
|
|
run: |
|
|
# 自动同意 PR 并合并
|
|
gh pr merge ${{ github.event.pull_request.number }} --merge --squash --admin
|