Skip to content

Auto Update, Merge, and Create Pre-release #1

Auto Update, Merge, and Create Pre-release

Auto Update, Merge, and Create Pre-release #1

Workflow file for this run

name: Auto Update, Merge, and Create Pre-release
on:
schedule:
# 每天检查更新,8:00 UTC 时间(16:00 北京时间)
- cron: '0 8 * * *'
workflow_dispatch: # 允许手动触发工作流
jobs:
update:
runs-on: ubuntu-latest
steps:
# 检出仓库代码
- name: Checkout code
uses: actions/checkout@v2
# 设置 Git 用户信息
- name: Set up Git
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"
# 拉取上游仓库的更新
- name: Fetch upstream updates
run: |
git fetch upstream # 确保远程仓库名称为 'upstream'
git checkout main # 确保你在 main 分支
git merge upstream/main --no-edit # 合并上游的更新
# 检查是否有更新
- name: Check if changes were made
id: check_changes
run: |
git diff --exit-code || echo "Changes detected" # 如果有更改,返回 "Changes detected"
# 如果有更改,创建 pre-release 版本
- name: Create Pre-release if changes detected
if: steps.check_changes.outputs.exit_code != '0' # 如果有更新
run: |
# 获取最新的标签并增加版本号
VERSION=$(git describe --tags --abbrev=0)
NEW_VERSION=$(echo $VERSION | awk -F. -v OFS=. '{$NF++;print}')
# 创建新的标签
git tag $NEW_VERSION
# 推送标签
git push origin $NEW_VERSION
# 使用 GitHub API 创建 pre-release
curl -X POST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-d '{
"tag_name": "'$NEW_VERSION'",
"target_commitish": "main",
"name": "Pre-release '$NEW_VERSION'",
"body": "This is an automatically created pre-release for updates.",
"draft": true,
"prerelease": true
}' \
https://api.github.com/repos/${{ github.repository }}/releases
# 如果没有更新,跳过创建 pre-release
- name: Skip pre-release creation if no changes
if: steps.check_changes.outputs.exit_code == '0'
run: echo "No updates detected, skipping pre-release creation."