Skip to content

Commit

Permalink
update: switch assets.yml to use GitHub API for artifact upload
Browse files Browse the repository at this point in the history
Previous action for uploading artifacts to GitHub Releases failed due to
parallel (matrix) execution issues. Replaced it with direct GitHub API
calls to handle uploads.

This change provides more flexibility and control over artifact
management and release handling.

Added step to generate sha256 checksum for rootfs.img

Signed-off-by: yash-zededa <[email protected]>
  • Loading branch information
yash-zededa committed Oct 28, 2024
1 parent 8e7e500 commit ed4f9ab
Showing 1 changed file with 44 additions and 8 deletions.
52 changes: 44 additions & 8 deletions .github/workflows/assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,30 @@ on: # yamllint disable-line rule:truthy
type: string

jobs:
create_release:
runs-on: ubuntu-latest
outputs:
release_id: ${{ steps.create_release.outputs.release_id }}
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Create GitHub Release
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
response=$(curl -s -X POST \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tag_name": "${{ inputs.tag_ref }}",
"name": "${{ inputs.tag_ref }}",
"draft": false,
"prerelease": true
}' https://api.github.com/repos/${{ github.repository }}/releases)
release_id=$(echo "$response" | jq -r .id)
upload_url=$(echo "$response" | jq -r .upload_url | sed -e "s/{?name,label}//")
echo "release_id=$release_id" >> "$GITHUB_OUTPUT"
echo "upload_url=$upload_url" >> "$GITHUB_OUTPUT"
build:
runs-on: ubuntu-20.04
strategy:
Expand Down Expand Up @@ -86,13 +110,25 @@ jobs:
for asset in assets/*; do
mv "$asset" "assets/${{ env.ARCH }}.$(basename "$asset")"
done
- name: Upload release files
id: upload-release-files
uses: softprops/action-gh-release@v2
sha256sum "assets/${{ env.ARCH }}.rootfs.img" | awk '{ print $1 }' > "assets/${{ env.ARCH }}.rootfs.img.sha256"
- name: Upload binary to GitHub Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ inputs.tag_ref }}
make_latest: false
files: |
assets/${{ env.ARCH }}.*
RELEASE_ID: ${{ needs.create_release.outputs.release_id }}
UPLOAD_URL: ${{ needs.create_release.outputs.upload_url }}
run: |
for file in assets/*${{env.ARCH}}*; do
file_name=$(basename "$file")
echo "Uploading $file as $file_name..."
upload_response=$(curl -s -X POST \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @"$file" \
"$UPLOAD_URL?name=$file_name")
if echo "$upload_response" | jq -e .id > /dev/null; then
echo "$file_name uploaded successfully."
else
echo "Error uploading $file_name: $upload_response"
fi
done

0 comments on commit ed4f9ab

Please sign in to comment.