-
Notifications
You must be signed in to change notification settings - Fork 2
162 lines (140 loc) · 4.78 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
# Copyright (c) 2023-2024 Contributors to the Eclipse Foundation
#
# This program and the accompanying materials are made available under the
# terms of the Apache License, Version 2.0 which is available at
# https://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.
#
# SPDX-License-Identifier: Apache-2.0
name: CI
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
on:
workflow_dispatch:
push:
# Run only on branches/commits and not tags
branches:
- main
pull_request:
branches:
- main
jobs:
lint-job:
name: "Run linters"
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install deps
run: |
pip install mypy
pip install types-requests
- name: Run Linters
uses: pre-commit/action@v3.0.1
unit-test:
name: "Run unit tests"
runs-on: ubuntu-22.04
container: ghcr.io/eclipse-velocitas/devcontainer-base-images/python:v0.3
strategy:
matrix:
component:
[
"setup",
"grpc-interface-support",
"vehicle-model-lifecycle",
"sdk-installer",
"build-system/cpp-cmake-conan",
]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install required packages
run: |
if [ -e "${{ matrix.component }}/requirements.txt" ]; then
pip install -r ${{ matrix.component }}/requirements.txt
fi
if [ -e "${{ matrix.component }}/test/requirements.txt" ]; then
pip install -r ${{ matrix.component }}/test/requirements.txt
fi
- name: unit test
shell: bash
run: |
pytest --override-ini junit_family=xunit1 \
--junit-xml=./results/UnitTest/${{ matrix.component }}/junit.xml \
--cov . \
--cov-report=xml:results/CodeCoverage/${{ matrix.component }}/cobertura-coverage.xml \
--cov-branch \
./${{ matrix.component }}/test/unit
- name: Publish Test Report
uses: mikepenz/action-junit-report@v4
if: always()
with:
report_paths: ./results/UnitTest/${{ matrix.component }}/junit.xml
summary: true
update_check: true
annotate_only: true
- uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: results/CodeCoverage/${{ matrix.component }}/cobertura-coverage.xml
badge: true
format: markdown
hide_complexity: true
indicators: true
output: both
- run: |
cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
run-integration-tests:
name: Run Integration Test
runs-on: ubuntu-22.04
env:
packageInstallPath: .velocitas/packages/package_under_test/@main
strategy:
matrix:
language: ["python", "cpp"]
component:
[
"setup",
"grpc-interface-support",
"vehicle-model-lifecycle",
"sdk-installer",
"build-system/cpp-cmake-conan",
]
fail-fast: false
steps:
- name: Checkout template repository
uses: actions/checkout@v4
with:
repository: eclipse-velocitas/vehicle-app-${{ matrix.language }}-template
fetch-depth: 0
- name: Checkout package repository
uses: actions/checkout@v4
with:
path: ${{ env.packageInstallPath }}
fetch-depth: 0
- name: Add safe directory
run: |
git config --global --add safe.directory "*"
- name: Replace project config
run: |
cp -f ${{ env.packageInstallPath }}/test/${{ matrix.language }}/.velocitas.json .
- name: Run devContainer
uses: devcontainers/ci@v0.3
with:
env: VELOCITAS_HOME=/workspaces/devenv-devcontainer-setup
runCmd: |
CWD=$(pwd)
export VELOCITAS_TEMPLATE_REPO_PATH=$CWD
export VELOCITAS_PACKAGE_REPO_PATH=$CWD/${{ env.packageInstallPath }}
export VELOCITAS_TEST_LANGUAGE=${{ matrix.language }}
export VELOCITAS_COMPONENT_PATH=${VELOCITAS_PACKAGE_REPO_PATH}/${{ matrix.component }}
cd $VELOCITAS_PACKAGE_REPO_PATH
python3 -m pip install -r ./${{ matrix.component }}/test/requirements.txt
python3 -m pip install -r ./${{ matrix.component }}/requirements.txt
pytest -s ./${{ matrix.component }}/test/integration