Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cd12233
docs: design spec for AppImage hosting on Azure Blob
amitsingh21 Jun 14, 2026
52805e3
docs: implementation plan for AppImage Azure Blob hosting
amitsingh21 Jun 14, 2026
4d5268d
feat(update): add AppImage channel detection and blob URL builders
amitsingh21 Jun 14, 2026
d0406e0
feat(update): add channel-aware update-available check
amitsingh21 Jun 14, 2026
8836e9d
feat(update): fetch manifest and replace AppImage with checksum verify
amitsingh21 Jun 14, 2026
65e4486
style: move imports to top of test file (ruff E402)
amitsingh21 Jun 14, 2026
6801b93
fix(update): atomic AppImage swap, require sha256, timeouts, no devel…
amitsingh21 Jun 14, 2026
ec70efc
feat(update): route AppImage updates through Azure Blob channels
amitsingh21 Jun 14, 2026
0525715
fix(update): guard missing manifest version, add latest-path test, re…
amitsingh21 Jun 14, 2026
c04eb83
ci: stamp channel suffix into version for devel/dev AppImage builds
amitsingh21 Jun 14, 2026
8ffd598
ci: upload AppImage and latest.json manifest to Azure Blob
amitsingh21 Jun 14, 2026
733d0f0
ci: harden AppImage upload (mask SAS in trace, guard empty file, expl…
amitsingh21 Jun 14, 2026
24d4bb5
ci: upload devel/PR AppImages to Azure Blob, link blob URL on PRs
amitsingh21 Jun 14, 2026
a88f3cd
ci: upload release AppImage to Azure Blob via semantic-release
amitsingh21 Jun 14, 2026
151ef27
docs: document rio update channels and Azure Blob infra
amitsingh21 Jun 14, 2026
3ed3e74
fix(update): robust full write of AppImage via file object
amitsingh21 Jun 14, 2026
e98d0e2
fix(update): use PEP 440 local-version for channel marker so uv build…
amitsingh21 Jun 14, 2026
022b9d2
fix(update): detect AppImage via APPIMAGE env, drop GitHub artifact
amitsingh21 Jun 14, 2026
aa6138a
fix(update): address remaining Copilot review comments
amitsingh21 Jun 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@ jobs:
MINIO_URL: ${{ secrets.MINIO_URL }}
MINIO_ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY }}
MINIO_SECRET: ${{ secrets.MINIO_SECRET }}
CHANNEL: release
AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE_ACCOUNT }}
AZURE_SAS_TOKEN: ${{ secrets.AZURE_SAS_TOKEN }}
59 changes: 16 additions & 43 deletions .github/workflows/upload-appimage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ name: ⬆️ Upload AppImage
on:
push:
branches:
- main
- devel
pull_request:

Expand All @@ -20,59 +19,33 @@ jobs:
run: ./scripts/build-rio-appimage.sh
shell: bash
env:
CHANNEL: ${{ github.event_name == 'pull_request' && 'dev' || 'devel' }}
MINIO_URL: ${{ secrets.MINIO_URL }}
MINIO_ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY }}
MINIO_SECRET: ${{ secrets.MINIO_SECRET }}

- name: Upload AppImage artifact
uses: actions/upload-artifact@v4
with:
name: appimages
path: ${{ github.workspace }}/scripts/rio*.AppImage
if-no-files-found: error
retention-days: 15
AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE_ACCOUNT }}
AZURE_SAS_TOKEN: ${{ secrets.AZURE_SAS_TOKEN }}

- name: Install GitHub CLI
run: |
sudo apt-get update
sudo apt-get install gh

- name: Edit the last bot comment
id: edit-comment
- name: Comment blob link on PR
if: github.event_name == 'pull_request'
run: |
set -e
gh pr comment $PR_NUMBER --edit-last -b "
**🤖 Pull Request [Artifacts](https://github.com/rapyuta-robotics/rapyuta-io-cli/actions/runs/"$RUN_ID") (#"$RUN_ID") 🎉**
"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RUN_ID: ${{ github.run_id }}
PR_NUMBER: ${{ github.event.number }}
continue-on-error: true

- name: Delete existing bot comments
if: steps.edit-comment.outcome == 'failure'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.number }}
run: |
# Get all comments on the PR where the author is the bot
COMMENTS=$(gh api repos/${{ github.repository }}/issues/$PR_NUMBER/comments --jq '.[] | select(.user.login == "github-actions[bot]") | .id')

# Loop through each bot comment and delete it
for COMMENT_ID in $COMMENTS; do
gh api repos/${{ github.repository }}/issues/comments/$COMMENT_ID -X DELETE
done

- name: Artifact Comment on PR
# if: github.event_name == 'pull_request'
if: steps.edit-comment.outcome == 'failure'
run: |
gh pr comment $PR_NUMBER -b "
**🤖 Pull Request [Artifacts](https://github.com/rapyuta-robotics/rapyuta-io-cli/actions/runs/"$RUN_ID") (#"$RUN_ID") 🎉**
"
ACCOUNT="${{ secrets.AZURE_STORAGE_ACCOUNT }}"
if [ -z "$ACCOUNT" ]; then
echo "No Azure account secret (fork PR?) — skipping blob comment"
exit 0
fi
# Same sanitization as build-rio-appimage.sh so the link matches the
# actual dev/<safe-branch>/ upload path.
BRANCH=$(echo "${{ github.head_ref }}" | tr -c '0-9A-Za-z' '-' | sed -E 's/-+/-/g; s/^-|-$//g')

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This branch-sanitization one-liner (tr -c '0-9A-Za-z' '-' | sed -E 's/-+/-/g; s/^-|-$//g') is duplicated verbatim in scripts/build-rio-appimage.sh (the SAFE_BRANCH computation). If one is edited without the other, this PR-comment link silently stops matching the real upload path. Consider computing the branch slug once (e.g. exposed as a step/job output from the build step) instead of keeping two copies in sync by comment convention.

FILE=$(ls scripts/rio*.AppImage | xargs -n1 basename | head -n1)
URL="https://${ACCOUNT}.blob.core.windows.net/dev/${BRANCH}/${FILE}"
gh pr comment "$PR_NUMBER" --edit-last -b "**🤖 PR AppImage:** [$FILE]($URL)" \
|| gh pr comment "$PR_NUMBER" -b "**🤖 PR AppImage:** [$FILE]($URL)"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RUN_ID: ${{ github.run_id }}
PR_NUMBER: ${{ github.event.number }}
Comment thread
amitsingh21 marked this conversation as resolved.
Loading
Loading