forked from yixinnb/test
更新 .gitea/workflows/demo.yaml
This commit is contained in:
+46
-23
@@ -11,6 +11,13 @@ jobs:
|
||||
process-python:
|
||||
runs-on: auto_judgement_py
|
||||
steps:
|
||||
- name: test
|
||||
run: |
|
||||
echo $gtea
|
||||
ls /data --all
|
||||
ls /app --all
|
||||
ls /exec --all
|
||||
|
||||
- name: Checkout PR code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
@@ -19,35 +26,51 @@ jobs:
|
||||
- name: Find newly added .py file
|
||||
id: find-file
|
||||
run: |
|
||||
# 获取相对于主分支新增的 .py 文件(仅限添加操作)
|
||||
NEW_FILES=$(git diff --diff-filter=A --name-only origin/main...HEAD | grep '\.py$')
|
||||
# 取最后一个新增文件(假设最新提交只新增一个)
|
||||
NEW_PY_FILE=$(echo "$NEW_FILES" | tail -n 1)
|
||||
# 验证文件存在
|
||||
if [ -z "$NEW_PY_FILE" ]; then
|
||||
echo "No new .py file found!"
|
||||
# 获取相对于主分支新增的文件(仅限添加操作)
|
||||
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: Extract metadata from .py file
|
||||
id: extract-metadata
|
||||
- name: Rename and store file as code.py
|
||||
run: |
|
||||
# 提取三个 """ 包裹的 YAML 元数据
|
||||
sed -n '/^"""/,/^"""/p' ${{ steps.find-file.outputs.new_py_file }} | sed '1d;$d' > metadata.yaml
|
||||
# 使用 yq 解析 name 字段(需提前安装 yq)
|
||||
NAME=$(yq e '.name' metadata.yaml)
|
||||
if [ -z "$NAME" ]; then
|
||||
echo "Metadata 'name' not found!"
|
||||
# 将文件命名为 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
|
||||
echo "name=$NAME" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Rename and archive file
|
||||
# 将文件名作为文件保存到 /storage 目录
|
||||
mkdir -p /storage
|
||||
mv "code.py" "/storage/$FILE_NAME"
|
||||
echo "文件已移动到 /storage 目录,并命名为 $FILE_NAME"
|
||||
|
||||
- name: Commit and push changes
|
||||
run: |
|
||||
mkdir -p code # 创建归档目录
|
||||
# 组合新文件名:name_score.py
|
||||
NEW_NAME="${{ steps.extract-metadata.outputs.name }}_${{ steps.docker-process.outputs.score }}.py"
|
||||
# 移动并重命名文件
|
||||
mv "${{ steps.find-file.outputs.new_py_file }}" "code/${NEW_NAME}"
|
||||
echo "File archived to: code/${NEW_NAME}"
|
||||
# 将更改提交到仓库并合并
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user