22
22
build_and_release :
23
23
runs-on : ubuntu-latest
24
24
steps :
25
- - name : Checkout the repository
26
- uses : actions/checkout@v3
27
-
28
- - name : Set up Go
29
- uses : actions/setup-go@v4
30
- with :
31
- go-version : ' stable'
32
-
33
- - name : Install dependencies
34
- run : go mod download
35
-
36
- - name : Build binaries
37
- run : |
38
- mkdir -p ${{ env.BUILD_DIR }}
39
- PLATFORMS=(
40
- "darwin/arm64"
41
- "darwin/amd64"
42
- "linux/arm64"
43
- "linux/amd64"
44
- "windows/amd64"
45
- "windows/arm64"
46
- "freebsd/386"
47
- "freebsd/amd64"
48
- "freebsd/arm"
49
- "freebsd/arm64"
50
- "openbsd/386"
51
- "openbsd/amd64"
52
- "openbsd/arm"
53
- "openbsd/arm64"
54
- "dragonfly/amd64"
55
- "netbsd/386"
56
- "netbsd/amd64"
57
- "netbsd/arm"
58
- "netbsd/arm64"
59
- )
60
- for PLATFORM in "${PLATFORMS[@]}"; do
61
- GOOS=${PLATFORM%/*}
62
- GOARCH=${PLATFORM#*/}
63
- OUTPUT_NAME=${{ env.BINARY_PREFIX }}.$GOOS.$GOARCH
64
- if [ "$GOOS" = "windows" ]; then
65
- OUTPUT_NAME=$OUTPUT_NAME.exe
66
- fi
67
- echo "Building for $GOOS/$GOARCH..."
68
- GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "-X 'main.Version=$(date +'%Y-%m-%d_%H:%M:%S')'" -o "${{ env.BUILD_DIR }}/$OUTPUT_NAME" ${{ env.SOURCE_DIR }}
69
- done
70
-
71
- - name : Check build directory
72
- run : |
73
- echo "Contents of ${{ env.BUILD_DIR }}:"
74
- ls -la ${{ env.BUILD_DIR }}
25
+ # ... (previous steps remain the same)
75
26
76
27
- name : Delete existing release
77
28
uses :
dev-drprasad/[email protected]
88
39
github-token : ${{ secrets.GITHUB_TOKEN }}
89
40
script : |
90
41
const maxRetries = 3;
42
+ let release;
91
43
for (let i = 0; i < maxRetries; i++) {
92
44
try {
93
- const release = await github.rest.repos.createRelease({
45
+ console.log(`Attempting to create release (attempt ${i + 1})...`);
46
+ release = await github.rest.repos.createRelease({
94
47
owner: context.repo.owner,
95
48
repo: context.repo.repo,
96
49
tag_name: '${{ env.TAG }}',
@@ -99,16 +52,37 @@ jobs:
99
52
draft: false,
100
53
prerelease: false
101
54
});
102
- console.log(`Release created: ${release.data.html_url}`);
103
- return release.data.upload_url ;
55
+ console.log(`Release created successfully : ${release.data.html_url}`);
56
+ break ;
104
57
} catch (error) {
105
58
console.error(`Attempt ${i + 1} failed: ${error.message}`);
106
59
if (i === maxRetries - 1) throw error;
107
60
await new Promise(r => setTimeout(r, 5000)); // Wait 5 seconds before retrying
108
61
}
109
62
}
63
+ if (!release) {
64
+ throw new Error('Failed to create release after multiple attempts');
65
+ }
66
+ return release.data.upload_url;
67
+
68
+ - name : Verify Release
69
+ if : success()
70
+ uses : actions/github-script@v6
71
+ with :
72
+ github-token : ${{ secrets.GITHUB_TOKEN }}
73
+ script : |
74
+ const release = await github.rest.repos.getRelease({
75
+ owner: context.repo.owner,
76
+ repo: context.repo.repo,
77
+ release_id: '${{ env.TAG }}'
78
+ });
79
+ console.log(`Release verification - ID: ${release.data.id}, Name: ${release.data.name}, Tag: ${release.data.tag_name}`);
80
+ if (!release.data.id) {
81
+ throw new Error('Release was not created properly');
82
+ }
110
83
111
84
- name : Upload Release Assets
85
+ if : success()
112
86
env :
113
87
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
114
88
uses : actions/github-script@v6
0 commit comments