From f9b093953894d9616a4a8fd9158276b1c9b1fd83 Mon Sep 17 00:00:00 2001 From: yixinnb <1667511790@qq.com> Date: Fri, 28 Feb 2025 14:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/demo.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/demo.yaml | 69 +++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 23 deletions(-) diff --git a/.gitea/workflows/demo.yaml b/.gitea/workflows/demo.yaml index ad495b7..70a7358 100644 --- a/.gitea/workflows/demo.yaml +++ b/.gitea/workflows/demo.yaml @@ -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 + + # 将文件名作为文件保存到 /storage 目录 + mkdir -p /storage + mv "code.py" "/storage/$FILE_NAME" + echo "文件已移动到 /storage 目录,并命名为 $FILE_NAME" - - name: Rename and archive file + - 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}" \ No newline at end of file + # 将更改提交到仓库并合并 + 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