-
Notifications
You must be signed in to change notification settings - Fork 18
146 lines (128 loc) · 3.75 KB
/
CI.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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 }}