Automate uploading Release assets
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 196
- Forks
- 34
- Avg merge
- 4d 1h
- Merged PRs (30d)
- 11
Description
As part of the release process, ``scripts/make_release_tarball.sh --with-data`` is run to create compressed tar files of the release with the submodules included. I ran the script at LC to create the files. The Yubikey is required to authenticate to upload the files. However, a browser running at LC does not have access to the Yubikey. Only a browser running on the local machine (Windows in my case). Since Windows is very different than Linux I haven't spent much effort to understand how to use it. Mostly just run VNC to access LC. I didn't see how to run scp to move the files to the laptop. Instead I found how to upload the files from LC via the github API. In the course of looking up how to do this I discovered that github actions have features to perform actions on a release. This could be used to run ``make_release_tarball.sh``, maybe.
My main concern is that we don't release very often so the effort to automate this process may be wasted if github changes the process between releases. But if the process was more automated we may release more often. Or it may be easier to document how to move files from LC to a Windows laptop (just more googling).
From LC, the essential command is:
curl \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: $(file -b --mime-type $FILE)" \
--data-binary @$FILE \
"https://uploads.github.com/repos/LLNL/axom/releases/42931013/assets?name=$(basename $FILE)"
The tricks are getting the release number (42931013 in this case) but that can be automated. Then setting up GITHUB_TOKEN to authenticate to the github API. The details are at https://docs.github.com/en/rest/reference/repos. I found a few scripts that claim to help automate the process that could be used instead of github actions.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading scripts/make_release_tarball.sh and tracing how it creates the release tarballs with submodules. Then review the GitHub release API details in the linked documentation, focusing on release identification, asset uploads, and GITHUB_TOKEN authentication. Done means a documented or automated process can create the assets and upload them to the intended release.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, shell
- Domain
- ci-cd, release
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100