移除 noprogress 插件 #253
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Process School Information on Commit | |
| on: | |
| push: | |
| branches: [ main, master ] | |
| pull_request: | |
| branches: [ main, master ] | |
| jobs: | |
| check-and-process-school-info: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Get changed files in school directory | |
| id: get-changed-files | |
| run: | | |
| # 获取最近commit中修改的文件 | |
| CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD -- "main/docs/guide/school/" "docs/guide/school/" 2>/dev/null || true) | |
| if [ -z "$CHANGED_FILES" ]; then | |
| # 如果没有找到,尝试其他可能的路径 | |
| CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD -- "*/docs/guide/school/*" 2>/dev/null || true) | |
| fi | |
| echo "changed_files<<EOF" >> $GITHUB_OUTPUT | |
| echo "$CHANGED_FILES" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| echo "检测到的变更文件:" | |
| echo "$CHANGED_FILES" | |
| - name: Extract school names from changed files | |
| id: extract-school-names | |
| if: steps.get-changed-files.outputs.changed_files != '' | |
| run: | | |
| CHANGED_FILES="${{ steps.get-changed-files.outputs.changed_files }}" | |
| SCHOOL_NAMES="" | |
| while IFS= read -r file; do | |
| if [ -n "$file" ] && [ -f "$file" ]; then | |
| # 从文件名提取学校名称(去掉路径和扩展名) | |
| FILENAME=$(basename "$file") | |
| SCHOOL_NAME=$(echo "$FILENAME" | sed 's/\.[^.]*$//') # 去掉文件扩展名 | |
| if [ -n "$SCHOOL_NAME" ]; then | |
| SCHOOL_NAMES="${SCHOOL_NAMES}${SCHOOL_NAME}\n" | |
| echo "提取的学校名称: $SCHOOL_NAME" | |
| fi | |
| fi | |
| done <<< "$CHANGED_FILES" | |
| echo "school_names<<EOF" >> $GITHUB_OUTPUT | |
| echo -e "$SCHOOL_NAMES" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| - name: Find related issues | |
| id: find-issues | |
| if: steps.extract-school-names.outputs.school_names != '' | |
| run: | | |
| # 创建包含学校名称的临时文件 | |
| echo -e "${{ steps.extract-school-names.outputs.school_names }}" > school_names.txt | |
| echo "开始搜索相关issue..." | |
| # 使用GitHub CLI搜索包含学校名称的issue | |
| ISSUE_LIST="" | |
| while IFS= read -r school_name; do | |
| if [ -n "$school_name" ]; then | |
| echo "搜索包含 '$school_name' 的issue..." | |
| # 搜索标题或内容包含学校名称且带有"学校信息填报"标签的open issue | |
| ISSUES=$(gh api search/issues -q "repo:${{ github.repository }} \"$school_name\" label:\"学校信息填报\" state:open" --jq '.items[].number' 2>/dev/null || true) | |
| if [ -n "$ISSUES" ]; then | |
| for issue_num in $ISSUES; do | |
| echo "找到相关issue: #$issue_num" | |
| ISSUE_LIST="${ISSUE_LIST}${issue_num}\n" | |
| done | |
| fi | |
| fi | |
| done < school_names.txt | |
| echo "issue_list<<EOF" >> $GITHUB_OUTPUT | |
| echo -e "$ISSUE_LIST" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| # 清理临时文件 | |
| rm -f school_names.txt | |
| - name: Process matching issues | |
| if: steps.find-issues.outputs.issue_list != '' | |
| uses: actions/github-script@v7 | |
| env: | |
| ISSUE_LIST: ${{ steps.find-issues.outputs.issue_list }} | |
| with: | |
| script: | | |
| const issueList = process.env.ISSUE_LIST.split('\n').filter(num => num.trim() !== ''); | |
| const owner = context.repo.owner; | |
| const repo = context.repo.repo; | |
| console.log(`找到 ${issueList.length} 个需要处理的issue:`, issueList); | |
| for (const issueNumber of issueList) { | |
| if (!issueNumber) continue; | |
| try { | |
| console.log(`处理issue #${issueNumber}`); | |
| // 添加评论 | |
| await github.rest.issues.createComment({ | |
| owner: owner, | |
| repo: repo, | |
| issue_number: parseInt(issueNumber), | |
| body: '👋 您的学校信息已经上传至网站,感谢加入多校联盟!' | |
| }); | |
| // 更新标签 | |
| await github.rest.issues.setLabels({ | |
| owner: owner, | |
| repo: repo, | |
| issue_number: parseInt(issueNumber), | |
| labels: ['学校信息填报', '审核通过', '添加完成'] | |
| }); | |
| // 关闭issue | |
| await github.rest.issues.update({ | |
| owner: owner, | |
| repo: repo, | |
| issue_number: parseInt(issueNumber), | |
| state: 'closed' | |
| }); | |
| console.log(`成功处理issue #${issueNumber}`); | |
| } catch (error) { | |
| console.error(`处理issue #${issueNumber}时出错:`, error); | |
| } | |
| } | |
| - name: Debug info | |
| if: always() | |
| run: | | |
| echo "变更文件: ${{ steps.get-changed-files.outputs.changed_files }}" | |
| echo "提取的学校名称: ${{ steps.extract-school-names.outputs.school_names }}" | |
| echo "找到的issue列表: ${{ steps.find-issues.outputs.issue_list }}" | |
| echo "当前commit: ${{ github.sha }}" |