-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build self-contained native binaries #160
Comments
IntroductionWe discussed matters of how to derive subsets of functionality in CrateDB Toolkit into dedicated release artefacts, which not necessarily need to follow the development iterations and release cadence of Toolkit. Most prominently, this use case appeared with GH-88 and GH-153. We are sharing our thoughts here, about our first approach to that topic on behalf of monorepo paradigms. ProposalThis is our first proposal, based on preliminary discussions around needs, requirements, and their possible benefits or pitfalls. Driver
PublisherIn order to detach from the regular cadence and relevant build processes, we proposed to:
Footnotes
|
Hi there, I appreciate the idea of using setuptools On the other hand, as discussed, PyInstaller apparently expects an output name for the binary executable. This one, I strongly believe, goes orthogonal to the dependency selection process, and should be conveyed to the "driver" on behalf of a separate variable. In order to wrap it together, I would be fine if the "driver" synthesizes it from a single unique label/tag, by e.g. mapping it from Just sharing my humble thoughts on this matter, maybe possible to consider, otherwise please »go ahead« ;]. With kind regards, |
Status Update: GHCR is not suitableIt looks like GHCR is not suitable to host and distribute standalone artefacts of arbitrary nature. The means of what GHCR provides, is being a registry and provider for OCI images, which, for example in case of Homebrew, are apparently being unwrapped by the -- https://github.blog/2021-06-21-github-packages-container-registry-generally-available/ In that spirit, it is not suitable for our use case, and we need to find a different solution. Maybe JFrog, maybe just slap it onto our HTTP server, like we are doing it with the cratedb-prometheus-adapter, and also others like the standalone version of We will continue on this topic next week, and will also be happy about any suggestions, when applicable. |
A Build Matrix and Upload to GitHub Workflow ArtifactsHi again. As a start, I've expanded @seut's patch (thanks!) by adding a corresponding GitHub Actions workflow recipe that defines a build matrix and invokes ExampleWorkflow: https://github.com/crate-workbench/cratedb-toolkit/actions/runs/9826830191 |
BacklogBuilding upon this, we can think about other build- and publishing-destinations/-procedures/-cycles on behalf of subsequent iterations. @hammerhead was quick to spot that the current procedure is not sufficiently sustainable yet, see crate/cratedb-guide#55 (comment):
Yes, we need to improve the release and publishing procedure. @seut and I discussed it already, but we did not want to block the current minimal implementation iteration because of other obligations. NB: The maximum default retention time for GitHub Workflow Artifacts is 90 days. So, we need to improve this within the next three months. I think it is feasible. |
Downloading GitHub Workflow Artifacts worked before, up until recently, on this repository, while it was still located at crate-workbench. Now, it apparently stopped working, as you can observe at CI run #33706981188, triggered by crate/cratedb-guide#152. Apparently, it should never have worked? |
On another note, while looking into the issue outlined above, we also discovered a nice tool in this regard. /cc @WalBeh |
About
We might think about using traditional PyInstaller to build self-contained native binaries? Alternatively, let's try Briefcase, or PyApp?
References
The text was updated successfully, but these errors were encountered: