Add instructions for building releases with Travis CI
This commit is contained in:
parent
aae972390a
commit
1bf7dc854e
59
README.md
59
README.md
|
@ -58,15 +58,66 @@ If you need an especially common library, please feel free to submit a pull
|
||||||
request adding it to the main `Dockerfile`! We'd like to support popular
|
request adding it to the main `Dockerfile`! We'd like to support popular
|
||||||
Rust crates out of the box.
|
Rust crates out of the box.
|
||||||
|
|
||||||
|
## Making static releases with Travis CI and GitHub
|
||||||
|
|
||||||
|
These instructions are inspired by [rust-cross][].
|
||||||
|
|
||||||
|
First, read the [Travis CI: GitHub Releases Uploading][uploading] page, and
|
||||||
|
run `travis setup releases` as instructed. Then add the following lines to
|
||||||
|
your existing `.travis.yml` file, replacing `myapp` with the name of your
|
||||||
|
package:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
language: rust
|
||||||
|
sudo: required
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
- osx
|
||||||
|
rust:
|
||||||
|
- stable
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
before_deploy: "./build-release myapp ${TRAVIS_TAG}-${TRAVIS_OS_NAME}"
|
||||||
|
deploy:
|
||||||
|
provider: releases
|
||||||
|
api_key:
|
||||||
|
secure: "..."
|
||||||
|
file_glob: true
|
||||||
|
file: "myapp-${TRAVIS_TAG}-${TRAVIS_OS_NAME}.*"
|
||||||
|
skip_cleanup: true
|
||||||
|
on:
|
||||||
|
rust: stable
|
||||||
|
tags: true
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, copy [`build-release`](./examples/build-release) into your project
|
||||||
|
and run `chmod +x build-release`.
|
||||||
|
|
||||||
|
When you push a new tag to your project, `build-release` will automatically
|
||||||
|
build new Linux binaries using `rust-musl-builder`, and new Mac binaries
|
||||||
|
with Cargo, and it will upload both to the GitHub releases page for your
|
||||||
|
repository.
|
||||||
|
|
||||||
|
For a working example, see [faradayio/conductor][conductor].
|
||||||
|
|
||||||
|
[rust-cross]: https://github.com/japaric/rust-cross
|
||||||
|
[uploading]: https://docs.travis-ci.com/user/deployment/releases
|
||||||
|
[conductor]: https://github.com/faradayio/conductor
|
||||||
|
|
||||||
## Development notes
|
## Development notes
|
||||||
|
|
||||||
After modifying the image, run `./test-image` to make sure that everything
|
After modifying the image, run `./test-image` to make sure that everything
|
||||||
works.
|
works.
|
||||||
|
|
||||||
After making changes, they must be pushed to the `stable` branch to build
|
MAINTAINERS ONLY: After making changes, they must be pushed to the `stable`
|
||||||
the official `stable` and `latest` images on Docker Hub. Tagged versions
|
branch to build the official `stable` and `latest` images on Docker Hub.
|
||||||
of Rust (such as `1.11`) must be given their own branches and manually
|
Tagged versions of Rust (such as `1.11`) must be given their own branches
|
||||||
configured on Docker Hub.
|
and manually configured on Docker Hub.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git push origin master:stable
|
||||||
|
git push origin master:rust-$(rustc --version | awk '{ print $2 }')
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
#
|
#
|
||||||
# Usage: ./build-release <PROJECT> ${TRAVIS_TAG}-${TRAVIS_OS_NAME}
|
# Usage: ./build-release <PROJECT> ${TRAVIS_TAG}-${TRAVIS_OS_NAME}
|
||||||
#
|
#
|
||||||
|
# The latest version of this script is available at
|
||||||
|
# https://github.com/emk/rust-musl-builder/blob/master/examples/build-release
|
||||||
|
#
|
||||||
# Called by `.travis.yml` to build release binaries. We use
|
# Called by `.travis.yml` to build release binaries. We use
|
||||||
# ekidd/rust-musl-builder to make the Linux binaries so that we can run
|
# ekidd/rust-musl-builder to make the Linux binaries so that we can run
|
||||||
# them unchanged on any distro, including tiny distros like Alpine (which
|
# them unchanged on any distro, including tiny distros like Alpine (which
|
||||||
|
|
Loading…
Reference in a new issue