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