-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (118 loc) · 3.16 KB
/
main.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
name: Tests
on:
push:
branches:
- master
pull_request:
branches:
- "**"
env:
CARGO_TERM_COLOR: always
jobs:
check-version:
name: Check version
runs-on: ubuntu-latest
outputs:
publish-version: ${{ steps.set-outputs.outputs.publish-version }}
is-release: ${{ steps.set-outputs.outputs.is-release }}
steps:
- name: Git checkout
uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: 1.58.0
- name: Check version to publish and whether to make a release
id: check-version
uses: ./.github/actions/check-version
- name: Set outputs
id: set-outputs
run: |
echo "::set-output name=publish-version::${{ steps.check-version.outputs.publish-version }}"
echo "::set-output name=is-release::${{ steps.check-version.outputs.is-release }}"
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
override: true
- name: Run clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
test:
name: Run tests
runs-on: ubuntu-latest
services:
redis:
image: redis:6
ports:
- 6379:6379
env:
APP_CONFIG: localhost
RUST_TEST_THREADS: 1
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Cache dependencies
id: cache-dependencies
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
args: --features "unit_test integration_test"
publish:
name: Publish
runs-on: ubuntu-latest
needs:
- check-version
- fmt
- clippy
- test
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and publish docker image
id: publish
uses: ./.github/actions/publish-image
with:
docker-img-name: "dlt-shortener"
publish-version: ${{ needs.check-version.outputs.publish-version }}