forked from datenlord/datenlord
-
Notifications
You must be signed in to change notification settings - Fork 0
207 lines (199 loc) · 6.66 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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
name: CI
on:
pull_request:
branches: [master]
env:
CI_RUST_TOOLCHAIN: 1.74.0
CONTROLLER_SOCKET_FILE: /tmp/controller.sock
BIND_MOUNTER: target/debug/bind_mounter
ETCD_CONTAINER_NAME: etcd
ETCD_IMAGE: gcr.io/etcd-development/etcd:v3.4.13
NODE_SOCKET_FILE: /tmp/node.sock
RUST_BACKTRACE: full
RUST_LOG: debug
DATENLORD_LOCAL_BIND_DIR: /tmp/datenlord_data_dir
jobs:
outdated:
name: Outdated
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/install@v0.1
with:
crate: cargo-outdated
version: latest
- run: cargo outdated
audit:
name: Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: rustsec/audit-check@v1.4.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
# `RUSTSEC-2023-0071`: `rsa` crate depended by `opendal`. There are no better solutions now.
ignore: RUSTSEC-2023-0071
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Install CSI dependencies
run: |
sudo apt update
sudo apt install -y cmake g++ libprotobuf-dev protobuf-compiler
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.CI_RUST_TOOLCHAIN }}
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/cargo@v1
with:
command: check
csi-sanity-test:
name: CSI-Sanity-Test
runs-on: ubuntu-latest
steps:
- name: Install CSI dependencies
run: |
sudo apt update
sudo apt install -y cmake g++ libprotobuf-dev protobuf-compiler
- name: Set up Docker
id: buildx
uses: docker/setup-buildx-action@v1
with:
version: latest
- name: Check out code
uses: actions/checkout@v2
- name: Prepare Rust environment
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.CI_RUST_TOOLCHAIN }}
override: true
- uses: Swatinem/rust-cache@v2
- name: Cargo build
uses: actions-rs/cargo@v1
with:
command: build
- name: Enable bind_mounter permission
run: |
sudo chown root:root $BIND_MOUNTER
sudo chmod u+s $BIND_MOUNTER
ls -lsh $BIND_MOUNTER
export ETCD_END_POINT=127.0.0.1:2379
export BIND_MOUNTER=`realpath $BIND_MOUNTER`
- name: Run etcd service
run: |
./scripts/setup/setup_etcd.sh
- name: Check out csi-sanity code
uses: actions/checkout@v2
with:
repository: kubernetes-csi/csi-test
path: ./csi-test
- name: Build csi-sanity code
env:
PROJECT_PATH: "./csi-test/cmd/csi-sanity"
run: |
cd $PROJECT_PATH
go build
- name: Run csi plugin and csi-sanity test
run: |
export ETCD_END_POINT=127.0.0.1:2379
sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
mkdir $DATENLORD_LOCAL_BIND_DIR
target/debug/datenlord --role=node --csi-endpoint=unix://$NODE_SOCKET_FILE --csi-worker-port=0 --node-name=localhost --node-ip=127.0.0.1 --csi-driver-name=io.datenlord.csi.plugin --mount-path=$DATENLORD_LOCAL_BIND_DIR --kv-server-list=$ETCD_END_POINT --storage-fs-root=/tmp/datenlord_backend --server-port=8800 --storage-type=fs &
target/debug/datenlord --role=controller --csi-endpoint=unix://$CONTROLLER_SOCKET_FILE --csi-worker-port=0 --node-name=localhost --node-ip=127.0.0.1 --csi-driver-name=io.datenlord.csi.plugin --mount-path=$DATENLORD_LOCAL_BIND_DIR --kv-server-list=$ETCD_END_POINT &
./csi-test/cmd/csi-sanity/csi-sanity -csi.endpoint=$NODE_SOCKET_FILE -csi.controllerendpoint=$CONTROLLER_SOCKET_FILE --ginkgo.flake-attempts 3
- name: Setup tmate session
if: ${{ failure() }}
uses: mxschmitt/action-tmate@v3
fmt:
name: Fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.CI_RUST_TOOLCHAIN }}
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Install CSI dependencies
run: |
sudo apt update
sudo apt install -y cmake g++ libprotobuf-dev protobuf-compiler
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.CI_RUST_TOOLCHAIN }}
override: true
- uses: Swatinem/rust-cache@v2
- run: rustup component add clippy
- uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features --all-targets -- -D warnings
fstest:
name: fstest
runs-on: ubuntu-latest
steps:
- name: Install CSI dependencies
run: |
sudo apt update
sudo apt install -y cmake g++ libprotobuf-dev protobuf-compiler
- name: Set up Docker
id: buildx
uses: docker/setup-buildx-action@v1
with:
version: latest
- name: Check out code
uses: actions/checkout@v2
- name: Prepare Rust environment
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.CI_RUST_TOOLCHAIN }}
override: true
- uses: Swatinem/rust-cache@v2
- name: Cargo build
uses: actions-rs/cargo@v1
with:
command: build
- name: Enable bind_mounter permission
run: |
sudo chown root:root $BIND_MOUNTER
sudo chmod u+s $BIND_MOUNTER
ls -lsh $BIND_MOUNTER
export ETCD_END_POINT=127.0.0.1:2379
export BIND_MOUNTER=`realpath $BIND_MOUNTER`
- name: Modify fuse.conf
run: sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
- name: Run Datenlord in the background locally.
run: |
./scripts/setup/start_local_node.sh &
- name: Build fstest
run: |
cd /home/runner/work/datenlord/datenlord/tests/fstest_dir/
make
- name: Run fstest
run: |
# wait $DATENLORD_LOCAL_BIND_DIR to be ready
for i in {1..100}; do
if [ -d $DATENLORD_LOCAL_BIND_DIR ]; then
echo "Try $i times, $DATENLORD_LOCAL_BIND_DIR is ready"
break
fi
sleep 5
done
sudo prove -rv /home/runner/work/datenlord/datenlord/tests/fstest_dir/tests/