Skip to content

Commit 7dae861

Browse files
committed
feat: Introduce test release workflow and update main release configuration
- Added a new workflow for testing releases with dummy artifacts and Homebrew formula generation. - Updated the main release workflow to remove the existing release deletion step and adjusted file handling settings. - Configured permissions and environment variables for both workflows to ensure proper execution.
1 parent ef6d75a commit 7dae861

File tree

2 files changed

+120
-15
lines changed

2 files changed

+120
-15
lines changed

.github/workflows/release.yml

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
name: Release
22

33
on:
4-
push:
5-
tags:
6-
- 'v*.*.*'
7-
- 'v*.*.*-*'
4+
workflow_dispatch:
5+
# push:
6+
# tags:
7+
# - "v*.*.*"
8+
# - "v*.*.*-*"
9+
10+
811

912
env:
1013
CARGO_TERM_COLOR: always
1114
RUST_BACKTRACE: 1
1215

16+
permissions:
17+
contents: write
18+
1319
jobs:
1420
build-linux-amd64:
1521
name: Build Linux AMD64
@@ -278,17 +284,6 @@ jobs:
278284
echo "Generated formula:"
279285
cat release/temps.rb
280286
281-
- name: Delete existing release if exists
282-
env:
283-
GH_TOKEN: ${{ github.token }}
284-
run: |
285-
if gh release view ${{ github.ref_name }} > /dev/null 2>&1; then
286-
echo "Deleting existing release ${{ github.ref_name }}"
287-
gh release delete ${{ github.ref_name }} --yes
288-
else
289-
echo "No existing release to delete"
290-
fi
291-
292287
- name: Create Release
293288
uses: softprops/action-gh-release@v2
294289
with:
@@ -297,6 +292,7 @@ jobs:
297292
generate_release_notes: false
298293
fail_on_unmatched_files: true
299294
make_latest: ${{ !contains(github.ref, '-') }}
295+
overwrite_files: false
300296
files: |
301297
release/temps-linux-amd64
302298
release/temps-linux-amd64.sha256

.github/workflows/test-release.yml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
name: Test Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'test-v*'
7+
8+
env:
9+
CARGO_TERM_COLOR: always
10+
RUST_BACKTRACE: 1
11+
12+
jobs:
13+
test-release:
14+
name: Test Release (No Build)
15+
runs-on: ubuntu-latest
16+
permissions:
17+
contents: write
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
22+
- name: Create dummy artifacts
23+
run: |
24+
mkdir -p release
25+
26+
# Create dummy binaries
27+
echo "fake linux binary" > release/temps-linux-amd64
28+
echo "fake darwin amd64 binary" > release/temps-darwin-amd64
29+
echo "fake darwin arm64 binary" > release/temps-darwin-arm64
30+
31+
# Generate checksums
32+
sha256sum release/temps-linux-amd64 > release/temps-linux-amd64.sha256
33+
sha256sum release/temps-darwin-amd64 > release/temps-darwin-amd64.sha256
34+
sha256sum release/temps-darwin-arm64 > release/temps-darwin-arm64.sha256
35+
36+
# Combined checksums
37+
cat release/temps-linux-amd64.sha256 > release/checksums.txt
38+
cat release/temps-darwin-amd64.sha256 >> release/checksums.txt
39+
cat release/temps-darwin-arm64.sha256 >> release/checksums.txt
40+
41+
- name: Copy install script
42+
run: |
43+
cp scripts/install.sh release/install.sh
44+
chmod +x release/install.sh
45+
46+
- name: Generate Homebrew formula
47+
run: |
48+
VERSION="${GITHUB_REF#refs/tags/test-v}"
49+
SHA256_LINUX_AMD64=$(awk '{print $1}' release/temps-linux-amd64.sha256)
50+
SHA256_DARWIN_AMD64=$(awk '{print $1}' release/temps-darwin-amd64.sha256)
51+
SHA256_DARWIN_ARM64=$(awk '{print $1}' release/temps-darwin-arm64.sha256)
52+
53+
sed -e "s/{{VERSION}}/$VERSION/g" \
54+
-e "s/{{SHA256_LINUX_AMD64}}/$SHA256_LINUX_AMD64/g" \
55+
-e "s/{{SHA256_DARWIN_AMD64}}/$SHA256_DARWIN_AMD64/g" \
56+
-e "s/{{SHA256_DARWIN_ARM64}}/$SHA256_DARWIN_ARM64/g" \
57+
scripts/homebrew-formula.rb.template > release/temps.rb
58+
59+
echo "Generated formula:"
60+
cat release/temps.rb
61+
62+
- name: List release files
63+
run: |
64+
echo "Release files:"
65+
ls -lh release/
66+
67+
- name: Check if release exists and delete
68+
id: check_release
69+
continue-on-error: true
70+
env:
71+
GH_TOKEN: ${{ github.token }}
72+
run: |
73+
if gh release view ${{ github.ref_name }} >/dev/null 2>&1; then
74+
echo "release_exists=true" >> $GITHUB_OUTPUT
75+
echo "Release ${{ github.ref_name }} exists, will delete..."
76+
gh release delete ${{ github.ref_name }} --yes --cleanup-tag
77+
sleep 3
78+
else
79+
echo "release_exists=false" >> $GITHUB_OUTPUT
80+
echo "No existing release found"
81+
fi
82+
83+
- name: Create Release
84+
uses: softprops/action-gh-release@v2
85+
with:
86+
tag_name: ${{ github.ref_name }}
87+
name: ${{ github.ref_name }}
88+
draft: false
89+
prerelease: true
90+
generate_release_notes: false
91+
fail_on_unmatched_files: true
92+
files: |
93+
release/temps-linux-amd64
94+
release/temps-linux-amd64.sha256
95+
release/temps-darwin-amd64
96+
release/temps-darwin-amd64.sha256
97+
release/temps-darwin-arm64
98+
release/temps-darwin-arm64.sha256
99+
release/checksums.txt
100+
release/install.sh
101+
release/temps.rb
102+
body: |
103+
## Test Release
104+
105+
This is a test release with dummy binaries for testing the release workflow.
106+
107+
**Do not use these binaries - they are not functional!**
108+
109+
To create a real release, push a tag like `v0.1.0` (without `test-` prefix).

0 commit comments

Comments
 (0)