mirror of
https://github.com/hanxi/xiaomusic.git
synced 2025-12-06 14:52:50 +08:00
ci: 自动生成 versions.json 文件
This commit is contained in:
13
.github/workflows/static.yml
vendored
13
.github/workflows/static.yml
vendored
@@ -16,6 +16,10 @@ on:
|
|||||||
issues:
|
issues:
|
||||||
types: [opened, edited, reopened] # Specify events you're interested in
|
types: [opened, edited, reopened] # Specify events you're interested in
|
||||||
|
|
||||||
|
release:
|
||||||
|
types:
|
||||||
|
- uploaded
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
@@ -59,10 +63,17 @@ jobs:
|
|||||||
npm run docs:build
|
npm run docs:build
|
||||||
npm run docs:build
|
npm run docs:build
|
||||||
|
|
||||||
|
- uses: pdm-project/setup-pdm@v3
|
||||||
|
|
||||||
|
- name: generate versions.json
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: pdm run get_release.py
|
||||||
|
|
||||||
- name: Check for changes
|
- name: Check for changes
|
||||||
id: check_changes
|
id: check_changes
|
||||||
run: |
|
run: |
|
||||||
if [ -n "$(git diff docs/issues)" ]; then
|
if [ -n "$(git diff docs)" ]; then
|
||||||
echo "changed=true" >> $GITHUB_OUTPUT
|
echo "changed=true" >> $GITHUB_OUTPUT
|
||||||
else
|
else
|
||||||
echo "changed=false" >> $GITHUB_OUTPUT
|
echo "changed=false" >> $GITHUB_OUTPUT
|
||||||
|
|||||||
64
get_release.py
Normal file
64
get_release.py
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
# 替换为你的 GitHub 仓库信息
|
||||||
|
GITHUB_OWNER = "hanxi"
|
||||||
|
GITHUB_REPO = "xiaomusic"
|
||||||
|
GITHUB_API_URL = f"https://api.github.com/repos/{GITHUB_OWNER}/{GITHUB_REPO}/releases"
|
||||||
|
|
||||||
|
|
||||||
|
def fetch_releases():
|
||||||
|
headers = {}
|
||||||
|
github_token = os.getenv("GITHUB_TOKEN")
|
||||||
|
if github_token:
|
||||||
|
headers["Authorization"] = f"token {github_token}"
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.get(GITHUB_API_URL, headers=headers)
|
||||||
|
response.raise_for_status()
|
||||||
|
return response.json()
|
||||||
|
except requests.RequestException as e:
|
||||||
|
print(f"请求 GitHub API 失败: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def extract_tar_gz_files(releases):
|
||||||
|
versions = []
|
||||||
|
for release in releases:
|
||||||
|
version = release.get("tag_name")
|
||||||
|
if not version:
|
||||||
|
continue
|
||||||
|
|
||||||
|
files = []
|
||||||
|
for asset in release.get("assets", []):
|
||||||
|
if asset.get("name", "").endswith(".tar.gz"):
|
||||||
|
files.append(asset["name"])
|
||||||
|
|
||||||
|
if files:
|
||||||
|
versions.append({"version": version, "files": files})
|
||||||
|
return versions
|
||||||
|
|
||||||
|
|
||||||
|
def save_to_json(data, filename="versions.json"):
|
||||||
|
try:
|
||||||
|
with open(filename, "w") as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
|
print(f"数据已保存到 {filename}")
|
||||||
|
except OSError as e:
|
||||||
|
print(f"保存文件失败: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
releases = fetch_releases()
|
||||||
|
if not releases:
|
||||||
|
print("未获取到任何 release 数据")
|
||||||
|
return
|
||||||
|
|
||||||
|
versions = extract_tar_gz_files(releases)
|
||||||
|
save_to_json(versions, "docs/.vitepress/dist/versions.json")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user