Replies: 4 comments
-
| When publishing large artifacts in GitHub Actions, here are professional best practices and key points: Use actions/upload-artifact@v4 to upload files or directories as workflow artifacts. You can specify a file, directory, or pattern for uploading. By default, this action compresses the files into a zip. For large files that do not compress well, set compression-level: 0 for faster uploads. Avoid uploading whole folders containing already zipped files to prevent double compression. Upload individual pre-zipped files directly by specifying their exact path to avoid the extra zip layer. Example: Artifact Size Limits and Storage: A single artifact can be up to 5 GB in size. Repository storage limits apply (2 GB per repository by default); enterprise accounts have their own quotas. For very large files (like your 3 GB Linux artifact), if it exceeds the release upload limits (about 2 GB max per release asset), consider: Splitting large artifacts into smaller parts. Uploading artifacts to external storage services like AWS S3 or Azure Blob Storage during workflows and referencing them in release notes. GitHub Releases and Artifacts: Artifacts uploaded via the Actions workflow are separate from GitHub Releases. To attach artifacts directly to GitHub Releases, use actions/upload-release-asset or marketplace tools like softprops/action-gh-release. Release assets have their own size limits, so very large binaries might still need external hosting. LFS and Artifacts: Git LFS is for versioning large files in git repositories, not for artifact or release asset storage. LFS cannot be used to bypass release asset size limits or to directly store workflow artifacts. Workflow Example for Uploading a Single Zip Artifact: Uploading to Releases: Summary: Upload your pre-zipped extension files directly to avoid double zipping. For very large files, split uploads or use external storage linked in your releases. Use dedicated release asset upload actions to attach files to GitHub Releases. Git LFS is not suitable for storing release artifacts or large workflow outputs. This approach helps you manage artifact size, prevents upload rejections, and offers users easy access to your Blender extensions professionally and efficiently. References: GitHub Docs(actions/upload-artifact), GitHub Release Uploads, community best practices. | 
Beta Was this translation helpful? Give feedback.
-
| For large artifacts in GitHub Actions, here are some approaches you can take: Use GitHub LFS – You can store large files (like your Linux artifact) in LFS, then reference them in releases. Just commit the files to LFS with .gitattributes configured, and your release can link to them. Skip additional zipping – Instead of using the default actions/upload-artifact which zips files automatically, you can: Use actions/upload-release-asset to directly attach existing zip files to a release | 
Beta Was this translation helpful? Give feedback.
-
| I'm trying to upload my artifact like this now, but it's still wrapping my zip file inside another zip file. Also, the  | 
Beta Was this translation helpful? Give feedback.
-
| 🕒 Discussion Activity Reminder 🕒 This Discussion has been labeled as dormant by an automated system for having no activity in the last 60 days. Please consider one the following actions: 1️⃣ Close as Out of Date: If the topic is no longer relevant, close the Discussion as  2️⃣ Provide More Information: Share additional details or context — or let the community know if you've found a solution on your own. 3️⃣ Mark a Reply as Answer: If your question has been answered by a reply, mark the most helpful reply as the solution. Note: This dormant notification will only apply to Discussions with the  Thank you for helping bring this Discussion to a resolution! 💬 | 
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Why are you starting this discussion?
Question
What GitHub Actions topic or product is this about?
Misc
Discussion Details
I'm trying to put together a set of workflows to automate packaging a Python for Blender extension. I've created separte workflows for Windows, Mac and Linux. At the moment, I'm able to generate the artifacts and upload them. They all require downloading and attaching python wheels to the distribution, which makes the artifact file sizes quite large. (The Linux artifact is huge at ~3GB. The windows one is ~300Mb and the MacOS is ~100Mb).
I'd like to be able to attach them to my releases to that users can download them. One issue is that the release page does not allow you to attach huge files to it, so the giant Linux artifact is rejected. I was reading that you could use LFS to get around this, and was wondering if I could just copy my artifacts into an extensions directory with ".zip" added to LFS and then somehow reference that in the release?
The other issue is that workflow that uploads the artifact wraps it in a zip file. However, the Blender tool that I'm using to create the extensions outputs a single zip file already. I'd rather not have the artifact uploader zip and already zipped file and instead just copy all the output files from my workflows to some directory where I can store them and then reference them for my releases. Is there some way to alter these scripts to do that?
This is what my MacOS workflow looks like. The workflows for Windows and Linux are pretty similar:
Beta Was this translation helpful? Give feedback.
All reactions