Skip to content

Commit 1f92482

Browse files
eransclaude
andcommitted
fix: Update release workflow to use modern GitHub Actions approach
- Replace deprecated actions/create-release@v1 with github-script - Replace deprecated upload-release-asset@v1 with github-script - Add proper permissions for content write access - Update cache actions from v3 to v4 - Fix "Resource not accessible by integration" error 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 35c8680 commit 1f92482

1 file changed

Lines changed: 62 additions & 54 deletions

File tree

.github/workflows/release.yml

Lines changed: 62 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,34 @@ jobs:
1414
name: Create Release
1515
runs-on: ubuntu-latest
1616
outputs:
17-
release_id: ${{ steps.create_release.outputs.id }}
18-
upload_url: ${{ steps.create_release.outputs.upload_url }}
17+
release_id: ${{ steps.create_release.outputs.result }}
18+
permissions:
19+
contents: write
1920
steps:
2021
- name: Checkout code
2122
uses: actions/checkout@v4
2223

2324
- name: Create Release
2425
id: create_release
25-
uses: actions/create-release@v1
26-
env:
27-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26+
uses: actions/github-script@v7
2827
with:
29-
tag_name: ${{ github.ref }}
30-
release_name: Release ${{ github.ref }}
31-
draft: true
32-
prerelease: false
28+
script: |
29+
const release = await github.rest.repos.createRelease({
30+
owner: context.repo.owner,
31+
repo: context.repo.repo,
32+
tag_name: context.ref.replace('refs/tags/', ''),
33+
name: `Release ${context.ref.replace('refs/tags/', '')}`,
34+
draft: true,
35+
prerelease: false
36+
});
37+
return release.data.id;
3338
3439
build:
3540
name: Build ${{ matrix.target }}
3641
needs: create-release
3742
runs-on: ${{ matrix.os }}
43+
permissions:
44+
contents: write
3845
strategy:
3946
matrix:
4047
include:
@@ -83,19 +90,19 @@ jobs:
8390
targets: ${{ matrix.target }}
8491

8592
- name: Cache cargo registry
86-
uses: actions/cache@v3
93+
uses: actions/cache@v4
8794
with:
8895
path: ~/.cargo/registry
8996
key: ${{ matrix.target }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
9097

9198
- name: Cache cargo index
92-
uses: actions/cache@v3
99+
uses: actions/cache@v4
93100
with:
94101
path: ~/.cargo/git
95102
key: ${{ matrix.target }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
96103

97104
- name: Cache cargo build
98-
uses: actions/cache@v3
105+
uses: actions/cache@v4
99106
with:
100107
path: target
101108
key: ${{ matrix.target }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
@@ -157,46 +164,47 @@ jobs:
157164
$hash = Get-FileHash -Path "${{ matrix.asset_name }}.zip" -Algorithm SHA256
158165
"$($hash.Hash.ToLower()) ${{ matrix.asset_name }}.zip" | Out-File -FilePath "${{ matrix.asset_name }}.zip.sha256" -NoNewline
159166
160-
- name: Upload Release Asset (Unix)
161-
if: matrix.os != 'windows-latest'
162-
uses: actions/upload-release-asset@v1
163-
env:
164-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
165-
with:
166-
upload_url: ${{ needs.create-release.outputs.upload_url }}
167-
asset_path: ./${{ matrix.asset_name }}.tar.gz
168-
asset_name: ${{ matrix.asset_name }}.tar.gz
169-
asset_content_type: application/gzip
170-
171-
- name: Upload Release Asset (Windows)
172-
if: matrix.os == 'windows-latest'
173-
uses: actions/upload-release-asset@v1
174-
env:
175-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
176-
with:
177-
upload_url: ${{ needs.create-release.outputs.upload_url }}
178-
asset_path: ./${{ matrix.asset_name }}.zip
179-
asset_name: ${{ matrix.asset_name }}.zip
180-
asset_content_type: application/zip
181-
182-
- name: Upload SHA256 (Unix)
183-
if: matrix.os != 'windows-latest'
184-
uses: actions/upload-release-asset@v1
185-
env:
186-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
187-
with:
188-
upload_url: ${{ needs.create-release.outputs.upload_url }}
189-
asset_path: ./${{ matrix.asset_name }}.tar.gz.sha256
190-
asset_name: ${{ matrix.asset_name }}.tar.gz.sha256
191-
asset_content_type: text/plain
192-
193-
- name: Upload SHA256 (Windows)
194-
if: matrix.os == 'windows-latest'
195-
uses: actions/upload-release-asset@v1
196-
env:
197-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
167+
- name: Upload Release Assets
168+
uses: actions/github-script@v7
198169
with:
199-
upload_url: ${{ needs.create-release.outputs.upload_url }}
200-
asset_path: ./${{ matrix.asset_name }}.zip.sha256
201-
asset_name: ${{ matrix.asset_name }}.zip.sha256
202-
asset_content_type: text/plain
170+
script: |
171+
const fs = require('fs');
172+
const path = require('path');
173+
174+
const releaseId = ${{ needs.create-release.outputs.release_id }};
175+
176+
// Determine file extension based on OS
177+
const isWindows = '${{ matrix.os }}' === 'windows-latest';
178+
const archiveExt = isWindows ? 'zip' : 'tar.gz';
179+
const archiveName = `${{ matrix.asset_name }}.${archiveExt}`;
180+
const checksumName = `${archiveName}.sha256`;
181+
182+
// Upload main archive
183+
console.log(`Uploading ${archiveName}...`);
184+
const archiveData = fs.readFileSync(archiveName);
185+
await github.rest.repos.uploadReleaseAsset({
186+
owner: context.repo.owner,
187+
repo: context.repo.repo,
188+
release_id: releaseId,
189+
name: archiveName,
190+
data: archiveData,
191+
headers: {
192+
'content-type': isWindows ? 'application/zip' : 'application/gzip',
193+
'content-length': archiveData.length
194+
}
195+
});
196+
197+
// Upload checksum
198+
console.log(`Uploading ${checksumName}...`);
199+
const checksumData = fs.readFileSync(checksumName);
200+
await github.rest.repos.uploadReleaseAsset({
201+
owner: context.repo.owner,
202+
repo: context.repo.repo,
203+
release_id: releaseId,
204+
name: checksumName,
205+
data: checksumData,
206+
headers: {
207+
'content-type': 'text/plain',
208+
'content-length': checksumData.length
209+
}
210+
});

0 commit comments

Comments
 (0)