Automatically publishing a meteor package with binary code

When I publish my Meteor package, I get a message like this:

Published csats:libxmljs@1.0.1.               
                                              
You're not done publishing yet! This package contains binary code and must be built on all of Meteor's
architectures, including this machine's architecture.
                                              
You can access Meteor provided build machines, pre-configured to support older versions of MacOS and
Linux, by running:
  meteor admin get-machine os.osx.x86_64      
  meteor admin get-machine os.linux.x86_64    
  meteor admin get-machine os.linux.x86_32    
  meteor admin get-machine os.windows.x86_32  
                                              
On each machine, run:                         
                                              
  meteor publish-for-arch csats:libxmljs@1.0.1
                                              
For more information on binary ABIs and consistent builds, see:
  https://github.com/meteor/meteor/wiki/Build-Machines

Why? Seriously–I’m going to get a repetitive stress injury. Has anyone automated these steps?

Side notes: I can’t get an OS X machine and can’t build for Windows.

1 Like

I hope no one. But it’s not that complicated. I tried to do. But, meteor build servers couldn’t build my projects. So I give up. Here are instructions.

  • You can get a json file with the SSH server login info: meteor admin get-machine os.linux.x86_32 --json
  • Then you can use nodemiral or similar to invoke commands: https://github.com/arunoda/nodemiral
  • You may also need to copy the ~/.meteorsession to the build server as well (to authenticate)

Yes the MDG has automated the part that you have to do on the build machine for the meteor-tool. This reduced the task to:

  1. Run ./scripts/admin/publish-meteor-tool-on-all-platforms.sh <COMMIT_SHA>
  2. Enter credentials.
  3. Paste and execute the four commands into new shells.
  4. Get a coffee and wait until the publishing has finished.

Reducing this to a one line command shouldn’t be that hard.

Nice find, thanks!

I need to dig further. Surely they also automated publishing their other packages with binary dependencies.