Unifies gh-pages with documentation #721
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
tags: | |
- 'v*.*.*' | |
jobs: | |
style: | |
name: Check Style | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
components: rustfmt | |
profile: minimal | |
override: true | |
- name: cargo fmt -- --check | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
test: | |
name: Test | |
needs: [ style ] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build: [ stable, beta, nightly ] | |
include: | |
- build: beta | |
rust: beta | |
- build: nightly | |
rust: nightly | |
benches: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust || 'stable' }} | |
profile: minimal | |
override: true | |
- name: Install protoc | |
run: sudo apt-get install -y protobuf-compiler | |
- name: Build debug | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --all | |
- name: Create /var/run/horust directory | |
run: sudo mkdir -p /var/run/horust && sudo chmod 777 /var/run/horust | |
- name: Test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: ${{ matrix.features }} | |
# Publish latest and releases (e.g. tags with semver) on dockerhub. | |
docker-push-release-latest: | |
needs: [ test ] | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/master' | |
steps: | |
- uses: actions/checkout@master | |
- name: Publish to Registry | |
uses: elgohr/Publish-Docker-Github-Action@master | |
with: | |
name: federicoponzi/horust | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
tag_names: true | |
## This will create a new release in github/releases page. It will run only for tags with semver format. | |
create-release: | |
name: deploy | |
needs: [ test ] | |
if: startsWith(github.ref, 'refs/tags/') | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: | |
- aarch64-unknown-linux-gnu | |
- armv7-unknown-linux-gnueabihf | |
- i686-unknown-linux-gnu | |
- i686-unknown-linux-musl | |
- x86_64-unknown-linux-gnu | |
- x86_64-unknown-linux-musl | |
- aarch64-apple-darwin | |
- i686-apple-darwin | |
- x86_64-apple-darwin | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
target: ${{ matrix.target }} | |
- name: Install protoc | |
run: sudo apt-get install -y protobuf-compiler | |
- name: Build target | |
uses: actions-rs/cargo@v1 | |
with: | |
use-cross: true | |
command: build | |
# TODO: There should be a step to build horustctl. | |
args: --release --package horust --bin horust --target ${{ matrix.target }} | |
- name: Package | |
shell: bash | |
run: | | |
#strip target/${{ matrix.target }}/release/horust | |
cd target/${{ matrix.target }}/release | |
tar czvf ../../../horust-${{ matrix.target }}.tar.gz horust | |
cd - | |
- name: Publish | |
uses: softprops/action-gh-release@v1 | |
# TODO: if any of the build step fails, the release should be deleted. | |
with: | |
files: 'horust*' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |