-
Notifications
You must be signed in to change notification settings - Fork 43
126 lines (103 loc) · 3.34 KB
/
ci-rust.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
name: CI - Rust
on:
push:
paths:
# NOTE: GitHub Actions do not allow using YAML references, the same path
# list is used below for the pull request event. Keep both lists in sync!!
# this file as well
- .github/workflows/ci-rust.yml
# any change in the rust subfolder
- rust/**
# except Markdown documentation
- "!rust/**.md"
# except the packaging
- "!rust/package/**"
# except the DBus configuration
- "!rust/share/**"
pull_request:
paths:
# NOTE: GitHub Actions do not allow using YAML references, the same path
# list is used above for the push event. Keep both lists in sync!!
# this file as well
- .github/workflows/ci-rust.yml
# any change in the rust subfolder
- rust/**
# except Markdown documentation
- "!rust/**.md"
# except the packaging
- "!rust/package/**"
# except the DBus configuration
- "!rust/share/**"
# allow running manually
workflow_dispatch:
jobs:
rust_ci:
runs-on: ubuntu-latest
env:
COVERAGE: 1
defaults:
run:
working-directory: ./rust
strategy:
fail-fast: false
matrix:
distro: [ "tumbleweed" ]
container:
image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby
options: --security-opt seccomp=unconfined
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Configure and refresh repositories
# disable unused repositories to have faster refresh
run: zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && ( zypper ref || zypper ref || zypper ref )
- name: Install Rust development files
run: zypper --non-interactive install rustup
- name: Install required packages
run: zypper --non-interactive install
clang-devel
dbus-1-daemon
jq
libopenssl-3-devel
openssl-3
pam-devel
python-langtable-data
python3-openapi_spec_validator
timezone
xkeyboard-config
- name: Install Rust toolchains
run: rustup toolchain install stable
- name: Run clippy linter
run: cargo clippy
- name: Run rustfmt
run: cargo fmt --all -- --check
- name: Install cargo-binstall
uses: taiki-e/install-action@v2
with:
tool: cargo-binstall
- name: Install Tarpaulin (for code coverage)
run: |
echo "$PWD/share/bin" >> $GITHUB_PATH
cargo-binstall --no-confirm cargo-tarpaulin
- name: Run the tests
run: cargo tarpaulin --out xml -- --nocapture
- name: Generate and validate the OpenAPI specification
run: |
cargo xtask openapi
openapi-spec-validator out/openapi/*
# send the code coverage for the Rust part to the coveralls.io
- name: Coveralls GitHub Action
uses: coverallsapp/github-action@v2
with:
base-path: ./rust
format: cobertura
flag-name: rust
parallel: true
# close the code coverage and inherit the previous coverage for the Ruby and
# Web parts (it needs a separate step, the "carryforward" flag can be used
# only with the "parallel-finished: true" option)
- name: Coveralls Finished
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
carryforward: "service,web"