-
Notifications
You must be signed in to change notification settings - Fork 308
95 lines (85 loc) · 3.35 KB
/
main.yml
File metadata and controls
95 lines (85 loc) · 3.35 KB
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
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: CI - Python 3.x
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'
jobs:
lint_test_smoke:
runs-on: ubuntu-24.04
strategy:
matrix:
python-version: ['3.8', '3.11'] # TODO add '3.12' '3.13' '3.14'
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python environment
run: |
pip install --upgrade pip
pip install -r requirements.txt && pip install -r tests/requirements.txt
- name: Run linter
run: |
pylint --output-format msvs --reports y ccmlib || true
pylint --output-format msvs --reports y tests || true
- name: Run tests
run: |
pytest --junitxml=junit.xml tests
- name: Smoke tests
run: |
sudo ./setup.py install
set -x
LATEST_4_0=$(curl -s https://downloads.apache.org/cassandra/ | grep -oE '4\.0\.[0-9]+' | sort -V | tail -1)
LATEST_4_1=$(curl -s https://downloads.apache.org/cassandra/ | grep -oE '4\.1\.[0-9]+' | sort -V | tail -1)
LATEST_5_0=$(curl -s https://downloads.apache.org/cassandra/ | grep -oE '5\.0\.[0-9]+' | sort -V | tail -1)
ccm_test() {
for i in {1..9}; do
echo "Checking nc -z 127.0.0.1 7000"
while nc -z 127.0.0.1 7000 ; do echo . ; ./ccm stop || true ; sleep 1 ; done
./ccm start -v && ./ccm remove && return 0 || echo retrying
sleep 20
done
echo "ccm start failed after 9 attempts"
exit 1
}
export -f ccm_test
./ccm create -h
./ccm create test -v ${LATEST_4_0} -n1 --vnodes --quiet
ccm_test
./ccm create test -v ${LATEST_4_1} -n1 --vnodes --quiet
ccm_test
./ccm create test -v ${LATEST_5_0} -n1 --vnodes --quiet
ccm_test
./ccm create test --version='git:cassandra-4.0' -n1 --vnodes --quiet
ccm_test
./ccm create test --version='git:cassandra-4.1' -n1 --vnodes --quiet
ccm_test
./ccm create test --version='git:cassandra-5.0' -n1 --vnodes --quiet
ccm_test
./ccm create test --version='git:trunk' -n1 --vnodes --quiet
ccm_test
- name: Publish Test Report
uses: mikepenz/action-junit-report@v5
if: always()
with:
report_paths: 'junit.xml'
annotate_only: true