mirror of
https://github.com/mack-a/v2ray-agent.git
synced 2026-01-12 16:35:38 +08:00
81 lines
2.7 KiB
YAML
81 lines
2.7 KiB
YAML
name: Release Check
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
push:
|
||
branches:
|
||
- master
|
||
|
||
permissions:
|
||
contents: write
|
||
|
||
jobs:
|
||
check-release:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: Checkout repo
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Read version from install.sh
|
||
id: version
|
||
run: |
|
||
FILE_VERSION=$(grep -oP '当前版本:v[0-9]+\.[0-9]+\.[0-9]+' install.sh | sed 's/当前版本://')
|
||
echo "file_version=$FILE_VERSION" >> $GITHUB_OUTPUT
|
||
echo $FILE_VERSION
|
||
|
||
- name: Get latest release
|
||
id: latest
|
||
uses: actions/github-script@v7
|
||
with:
|
||
script: |
|
||
const {data:latest} = await github.rest.repos.getLatestRelease({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo
|
||
}).catch(() => ({ data: null }));
|
||
return latest ? latest.tag_name: "";
|
||
result-encoding: string
|
||
|
||
- name: Create release and cleanup old ones
|
||
if: ${{ steps.version.outputs.file_version != steps.latest.outputs.tag }}
|
||
uses: actions/github-script@v7
|
||
with:
|
||
script: |
|
||
const tag = "${{ steps.version.outputs.file_version }}";
|
||
|
||
const commits = await github.rest.repos.listCommits({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
per_page: 1
|
||
});
|
||
const lastMessage = commits.data[0].commit.message;
|
||
|
||
const release = await github.rest.repos.createRelease({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
tag_name: tag,
|
||
body: lastMessage
|
||
}).catch(err => console.log(`Skip release ${err.message}`));
|
||
|
||
const { data: releases } = await github.rest.repos.listReleases({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
per_page: 100
|
||
});
|
||
console.log(`releases:${releases}`)
|
||
|
||
const oldReleases = releases.slice(3);
|
||
for (const rel of oldReleases) {
|
||
console.log(`🗑 Deleting old release ${rel.tag_name} (id=${rel.id})`);
|
||
await github.rest.repos.deleteRelease({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
release_id: rel.id
|
||
}).catch(err => console.log(`Skip release ${rel.id}: ${err.message}`));
|
||
await github.rest.git.deleteRef({
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
ref: `tags/${rel.tag_name}`
|
||
}).catch(err => console.log(`Skip tag ${rel.tag_name}: ${err.message}`));
|
||
}
|