Skip to content

Commit 31e9026

Browse files
authored
Update release.yml
1 parent 94b4083 commit 31e9026

File tree

1 file changed

+86
-21
lines changed

1 file changed

+86
-21
lines changed

.github/workflows/release.yml

Lines changed: 86 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ jobs:
2424
steps:
2525
- name: Checkout the repository
2626
uses: actions/checkout@v3
27+
with:
28+
fetch-depth: 0
2729

2830
- name: Set up Go
2931
uses: actions/setup-go@v4
@@ -76,19 +78,45 @@ jobs:
7678
tag_name: ${{ env.TAG }}
7779
delete_release: true
7880

81+
- name: Debug Info
82+
run: |
83+
echo "Event name: ${{ github.event_name }}"
84+
echo "Ref: ${{ github.ref }}"
85+
echo "SHA: ${{ github.sha }}"
86+
git log -1
87+
git status
88+
7989
- name: Create Release
8090
id: create_release
81-
uses: actions/create-release@v1
82-
env:
83-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
91+
uses: actions/github-script@v6
8492
with:
85-
tag_name: ${{ env.TAG }}
86-
release_name: ${{ env.RELEASE_NAME }}
87-
body: ${{ github.event.inputs.releaseNote || 'Automated release' }}
88-
draft: false
89-
prerelease: false
93+
github-token: ${{ secrets.GITHUB_TOKEN }}
94+
script: |
95+
const eventName = '${{ github.event_name }}';
96+
const releaseNote = eventName === 'workflow_dispatch'
97+
? '${{ github.event.inputs.releaseNote || 'Manual release' }}'
98+
: `Automated release for commit ${process.env.GITHUB_SHA.substring(0, 7)}`;
99+
100+
try {
101+
const release = await github.rest.repos.createRelease({
102+
owner: context.repo.owner,
103+
repo: context.repo.repo,
104+
tag_name: '${{ env.TAG }}',
105+
name: '${{ env.RELEASE_NAME }}',
106+
body: releaseNote,
107+
draft: false,
108+
prerelease: false,
109+
generate_release_notes: true
110+
});
111+
console.log(`Release created successfully: ${release.data.html_url}`);
112+
return release.data.upload_url;
113+
} catch (error) {
114+
console.error(`Failed to create release: ${error.message}`);
115+
throw error;
116+
}
90117
91118
- name: Upload Release Assets
119+
if: success()
92120
env:
93121
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
94122
uses: actions/github-script@v6
@@ -98,20 +126,57 @@ jobs:
98126
const fs = require('fs').promises;
99127
const path = require('path');
100128
101-
const uploadUrl = '${{ steps.create_release.outputs.upload_url }}';
129+
const uploadUrl = '${{ steps.create_release.outputs.result }}';
102130
const buildDir = '${{ env.BUILD_DIR }}';
103131
104-
const files = await fs.readdir(buildDir);
105-
for (const file of files) {
106-
const filePath = path.join(buildDir, file);
107-
const stat = await fs.stat(filePath);
108-
if (stat.isFile()) {
109-
console.log(`Uploading ${file}...`);
110-
await github.rest.repos.uploadReleaseAsset({
111-
url: uploadUrl,
112-
headers: { 'content-type': 'application/octet-stream' },
113-
name: file,
114-
data: await fs.readFile(filePath)
115-
});
132+
try {
133+
const files = await fs.readdir(buildDir);
134+
console.log(`Found ${files.length} files in ${buildDir}`);
135+
136+
for (const file of files) {
137+
const filePath = path.join(buildDir, file);
138+
const stat = await fs.stat(filePath);
139+
if (stat.isFile()) {
140+
console.log(`Uploading ${file}...`);
141+
const fileContent = await fs.readFile(filePath);
142+
try {
143+
const response = await github.rest.repos.uploadReleaseAsset({
144+
url: uploadUrl,
145+
headers: {
146+
'content-type': 'application/octet-stream',
147+
'content-length': fileContent.length,
148+
},
149+
name: file,
150+
data: fileContent,
151+
});
152+
console.log(`Successfully uploaded ${file}`);
153+
} catch (error) {
154+
console.error(`Failed to upload ${file}: ${error.message}`);
155+
}
156+
}
157+
}
158+
} catch (error) {
159+
console.error(`Error accessing ${buildDir}: ${error.message}`);
160+
throw error;
161+
}
162+
163+
- name: Verify Release
164+
if: success()
165+
uses: actions/github-script@v6
166+
with:
167+
github-token: ${{ secrets.GITHUB_TOKEN }}
168+
script: |
169+
try {
170+
const release = await github.rest.repos.getRelease({
171+
owner: context.repo.owner,
172+
repo: context.repo.repo,
173+
tag: '${{ env.TAG }}'
174+
});
175+
console.log(`Release verification - ID: ${release.data.id}, Name: ${release.data.name}, Tag: ${release.data.tag_name}`);
176+
if (!release.data.id) {
177+
throw new Error('Release was not created properly');
116178
}
179+
} catch (error) {
180+
console.error(`Failed to verify release: ${error.message}`);
181+
throw error;
117182
}

0 commit comments

Comments
 (0)