Skip to content

Commit d638fe6

Browse files
committed
fix: update release workflow to use persistent 'termcopy tip' prerelease
- CI releases now update a single 'termcopy tip' prerelease instead of creating new tags - Tagged releases continue to work as before - Prevents accumulation of development release tags
1 parent ea3e1e5 commit d638fe6

1 file changed

Lines changed: 35 additions & 5 deletions

File tree

.github/workflows/release.yml

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
if [[ $GITHUB_REF == refs/tags/* ]]; then
2929
VERSION=${GITHUB_REF#refs/tags/}
3030
else
31-
VERSION=$(grep '^version' Cargo.toml | cut -d '"' -f 2)
31+
VERSION="tip"
3232
fi
3333
echo "version=$VERSION" >> $GITHUB_OUTPUT
3434
echo "Version: $VERSION"
@@ -40,8 +40,38 @@ jobs:
4040
script: |
4141
const version = '${{ steps.get_version.outputs.version }}';
4242
const isTag = context.ref.startsWith('refs/tags/');
43-
const tagName = isTag ? version : `v${version}`;
44-
const releaseName = isTag ? `Release ${version}` : `Development Release ${version}`;
43+
const tagName = isTag ? version : 'termcopy-tip';
44+
const releaseName = isTag ? `Release ${version}` : 'termcopy tip';
45+
46+
if (!isTag) {
47+
// For CI releases, delete existing 'termcopy tip' release if it exists
48+
try {
49+
const releases = await github.rest.repos.listReleases({
50+
owner: context.repo.owner,
51+
repo: context.repo.repo
52+
});
53+
const existingRelease = releases.data.find(r => r.name === 'termcopy tip');
54+
if (existingRelease) {
55+
await github.rest.repos.deleteRelease({
56+
owner: context.repo.owner,
57+
repo: context.repo.repo,
58+
release_id: existingRelease.id
59+
});
60+
// Also delete the tag if it exists
61+
try {
62+
await github.rest.git.deleteRef({
63+
owner: context.repo.owner,
64+
repo: context.repo.repo,
65+
ref: 'tags/termcopy-tip'
66+
});
67+
} catch (tagError) {
68+
// Tag might not exist, ignore error
69+
}
70+
}
71+
} catch (error) {
72+
// Release might not exist, continue
73+
}
74+
}
4575
4676
try {
4777
const release = await github.rest.repos.createRelease({
@@ -57,8 +87,8 @@ jobs:
5787
core.setOutput('upload_url', release.data.upload_url);
5888
return release.data.id;
5989
} catch (error) {
60-
if (error.status === 422) {
61-
// Release already exists, get it
90+
if (error.status === 422 && isTag) {
91+
// Release already exists for tag, get it
6292
const releases = await github.rest.repos.listReleases({
6393
owner: context.repo.owner,
6494
repo: context.repo.repo

0 commit comments

Comments
 (0)