mirror of https://github.com/mack-a/v2ray-agent
feat(workflows): add create release
parent
49a12b14cc
commit
b5081e9fe3
|
@ -1 +0,0 @@
|
|||
|
|
@ -0,0 +1,75 @@
|
|||
name: Release Check
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
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: |
|
||||
console.log(context)
|
||||
const {data:latest} = await github.rest.repos.getLatestRelease({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo
|
||||
}).catch(() => ({ data: null }));
|
||||
console.log(latest)
|
||||
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 release = await github.rest.repos.createRelease({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
tag_name: tag,
|
||||
body: `Auto-generated release for version ${tag}`
|
||||
}).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}`));
|
||||
}
|
Loading…
Reference in New Issue