-
Notifications
You must be signed in to change notification settings - Fork 208
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
separate agd build process from runtime files #6455
Comments
One emerynet upgrade participant reported:
One likely cause: Another advised:
Someone else reported a work-around:
|
The node.js side is probably going to be the most difficult, especially since we rely on native addons which are not very portable. Given our need for runtime bundling, and 3rd party executable like xsnap worker, it's likely a self extracting based approach such as |
The norm, I gather, for validator software releases is to have a separate package for each platform... at this point, basically: linux or mac. And if we only provided a binary on one platform to start, that would be something. by way of example, proposal 12: {
"binaries": {
"linux/amd64": "https://github.com/Agoric/ag0/releases/download/agoric-upgrade-7/ag0-agoric-upgrade-7-linux-amd64?checksum=sha256:e99081066fd5e25035dabb1e1e870757a9eb618a440c04fdbcc12c27774c9e4c",
"linux/arm64": "https://github.com/Agoric/ag0/releases/download/agoric-upgrade-7/ag0-agoric-upgrade-7-linux-arm64?checksum=sha256:24aa17821977ed5634db1ace3e7839a22dfa34dabaad14abfb15338935221616",
"darwin/amd64": "https://github.com/Agoric/ag0/releases/download/agoric-upgrade-7/ag0-agoric-upgrade-7-darwin-amd64?checksum=sha256:25fbd14eb2b853f51af88882c055f6e403f847b6c19972953ead002a3b98f02c",
"windows/amd64": "https://github.com/Agoric/ag0/releases/download/agoric-upgrade-7/ag0-agoric-upgrade-7-windows-amd64.exe?checksum=sha256:2590c742dd6ba2e67b8ad9333821935fa7b1b5cd9527f05504e51f9351826d49"
}
} |
I am not sure how portable some of the node addons are between linux versions. I do remember running into issues between Ubuntu/debian major versions, probably because of some dynamically linked libraries. |
In a cosmic-swingset meeting today, we agreed to de-emphasize the "binary" goal and emphasize the goal of building on one host and deploying on another. |
standard Tendermint installation process:
|
a cosmovisor approach to pismoCIn preparation for the pismoC upgrade on emerynet (prop 13), kjnodes shared https://services.kjnodes.com/testnet/agoric/upgrade Making a copy of the script here for future availability:
|
FYI, @michaelfig is making progress on cosmovisor support in #7037. It takes a different approach than the goal here; it refines the process of building on the validator machine, rather than separating the build process from installation. |
@michaelfig your recent work looks like it addresses this, which is cool. Is there more to do here? Or should we close this? |
I suggest pointing at the following, which is true of
CAVEAT: the built agoric-sdk directory will still have a runtime dependency on Node.js. |
What is the Problem Being Solved?
Our work with
agd
to date involves building from source:git clone ...; yarn && yarn build
and the like.We have yet to document a result from the build process that can be copied from a build host to a deployment host.
Description of the Design
Perhaps a tarball that could be installed in
/usr/local
similar to installing go?We would have to identify the necessary set of files. Perhaps the built
agoric-sdk
directory suffices? Butagd
itself typically goes in~/go/bin
; would that be a post-unpack step?Which platforms to support? How portable is the result of a
yarn build
?stretch goal
Security Considerations
This would reduce some risk involved in the
yarn && yarn build
step, which relies on various scripts from npm to be well-behaved. We do have checksums in ouryarn.lock
file that give reasonable assurance that the same scripts we routinely run in ci and development would be run by customers.Test Plan
Build a release artifact and try it out in places like a blank ubuntu docker container.
The text was updated successfully, but these errors were encountered: