-
Notifications
You must be signed in to change notification settings - Fork 5
132 lines (118 loc) · 3.56 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
#
# Copyright (c) 2024 ZettaScale Technology
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# ZettaScale Zenoh Team, <[email protected]>
#
name: CI
on:
push:
branches:
- "**"
pull_request:
branches:
- "**"
schedule:
- cron: "0 6 * * 1-5"
jobs:
build-rs:
name: Build Rust plugin on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
- name: Install Rust toolchain
run: |
rustup show
rustup component add rustfmt clippy
- name: Code format check
run: cargo fmt --check -- --config "unstable_features=true,imports_granularity=Crate,group_imports=StdExternalCrate"
- name: Clippy
run: cargo clippy --all --examples -- -D warnings
- name: Build
run: cargo build --all-targets
- name: Run tests
run: cargo test
- name: Cleanup
run: cargo clean
build-ts:
name: Build TS API on ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ./zenoh-ts
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "21"
- name: Install Deno
uses: denoland/setup-deno@v1
with:
deno-version: latest
- name: Run install
uses: borales/actions-yarn@v4
with:
cmd: install
dir: "zenoh-ts"
- name: Transpile Library
run: |
yarn run build
- name: Install dependencies for deno examples
uses: borales/actions-yarn@v4
with:
cmd: install
dir: "zenoh-ts/examples/deno"
- name: Verify build for deno examples
uses: borales/actions-yarn@v4
with:
cmd: verify
dir: "zenoh-ts/examples/deno"
- name: Install dependencies for chat example
uses: borales/actions-yarn@v4
with:
cmd: install
dir: "zenoh-ts/examples/chat"
- name: Verify build for chat example
uses: borales/actions-yarn@v4
with:
cmd: build
dir: "zenoh-ts/examples/chat"
markdown_lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DavidAnson/markdownlint-cli2-action@v18
with:
config: '.markdownlint.yaml'
globs: '**/README.md'
# NOTE: In GitHub repository settings, the "Require status checks to pass
# before merging" branch protection rule ensures that commits are only merged
# from branches where specific status checks have passed. These checks are
# specified manually as a list of workflow job names. Thus we use this extra
# job to signal whether all CI checks have passed.
ci:
name: CI status checks
runs-on: ubuntu-latest
needs: [build-rs, build-ts, markdown_lint]
if: always()
steps:
- name: Check whether all jobs pass
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")'