Files
test/.gitea/workflows/demo.yaml
T
yixinnb 366db709d9
Process Python Script on PR / process-python (pull_request) Failing after 33s
更新 .gitea/workflows/demo.yaml
2025-02-28 21:56:15 +08:00

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