One thing you might want to do at some stage is set up continuous integration.
I was looking for an option that gave me rust support and windows, mac and linux builds. Travis does offer all of that and is free to use for open source projects. I spent too much time setting it up, especially with the uploading part, so here we go:
language: rust rust: - nightly-2019-06-24 cache: cargo script: - cargo build --release - git config --local user.name "Johann Woelper" - git config --local user.email "firstname.lastname@example.org" os: - linux - osx - windows before_deploy: - cd $TRAVIS_BUILD_DIR - export TRAVIS_TAG="latest"-$TRAVIS_OS_NAME deploy: provider: releases skip_cleanup: true file_glob: true # draft: true overwrite: true name: $TRAVIS_OS_NAME file: - target/release/my_executable - target/release/my_executable.exe api_key: secure: <done with travis setup releases>
First of all, I wanted to pin a specific nightly version because a dependency did not work with the latest nightly - and by default travis installs the latest before building. You can now specify a specific version like
Next up, on the
os: section all operating systems are added
script: section, declare your git credentials
before deploy: will run on each VM that has spun up, so that's where we set the
TRAVIS_TAG to the tag we want for our build and change to the build dir.
This will create three releases, one for each OS. If you want to have a single release make sure you have unique executable names for each operating systems - then you could set
true so the release does not trigger at each
os build step and realease it after all builds are done.
travis setup releases is convenient to modify your config file automatically with the correct oauth token.