Skip to content

Commit fe7a2a6

Browse files
committed
Merge branch '1081-migration-gitlab-ci' into 'master'
CARS-1081: migration gitlab-ci See merge request dali/cars-park/shareloc!213
2 parents 51a509f + d9aed15 commit fe7a2a6

9 files changed

Lines changed: 130 additions & 34 deletions

.gitlab-ci.yml

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
workflow:
2+
rules:
3+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
4+
- if: $CI_COMMIT_REF_NAME == "master"
5+
6+
stages:
7+
- init
8+
- env
9+
- build
10+
- test
11+
- sonarqube
12+
- sync
13+
14+
variables:
15+
# template SonarQube
16+
SONARQUBE_TOKEN: "${CARS_CI_SONARQUBE_TOKEN}"
17+
18+
include:
19+
# Sonarqube job
20+
- project: "usinelogicielle/public/gitlab-ci-templates"
21+
ref: v1.1.3
22+
file: "jobs/sonarqube-gitlab-ci.yml"
23+
# Variable defintion
24+
- component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-variables@master
25+
# Jobs for gitlab-github synchronisation
26+
- component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-github@master
27+
28+
# Install shareloc in a virtual-env and export so that following jobs can use it
29+
python-env:
30+
stage: env
31+
image: ${PYTHON_IMAGE}
32+
script:
33+
- pip install virtualenv
34+
- virtualenv python_env
35+
- source python_env/bin/activate
36+
- VENV="python_env" make install
37+
timeout: 15 minutes
38+
artifacts:
39+
untracked: true
40+
expire_in: 1 day
41+
42+
43+
unit-test:
44+
stage: test
45+
image: ${PYTHON_IMAGE}
46+
# Use dedicated runner for end2end tests
47+
tags:
48+
- ${TEST_RUNNER_TAG}
49+
script:
50+
- source python_env/bin/activate
51+
- VENV="python_env" make test
52+
artifacts:
53+
paths:
54+
- ./pytest-report.xml
55+
- ./coverage.xml
56+
expire_in: 1 day
57+
58+
59+
lint:
60+
stage: test
61+
image: ${PYTHON_IMAGE}
62+
needs:
63+
- python-env
64+
allow_failure: true
65+
script:
66+
- VENV="python_env" make lint
67+
artifacts:
68+
paths:
69+
- ./pylint-report.txt
70+
expire_in: 1 day
71+
72+
doc:
73+
stage: test
74+
# The sphinxdoc/docker-ci contains the dependency required to generate the
75+
# Shareloc documentation (latex, dvipng and sphinx)
76+
# https://hub.docker.com/r/sphinxdoc/docker-ci
77+
image: ${UL_ARTIFACTORY_HOST}/publicremotes-docker/sphinxdoc/docker-ci
78+
script:
79+
# Create a venv for documentation generation
80+
- python3 -m venv doc_env
81+
# Call documentation target
82+
- VENV="doc_env" make docs
83+
artifacts:
84+
# Export documentation as artifact, it can be opened directly from gitlab
85+
paths:
86+
- ./docs/build/html/
87+
expire_in: 1 day
88+
89+
# Push git project from gitlab to github
90+
github-sync:
91+
extends:
92+
- .github-sync-base
93+
94+
variables:
95+
BRANCH: "master"
96+
GITHUB_URL: github.com/CNES/shareloc.git

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ from urllib.request import pathname2url
3737
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
3838
endef
3939
export BROWSER_PYSCRIPT
40-
BROWSER := python -c "$$BROWSER_PYSCRIPT"
40+
BROWSER := ${VENV}/bin/python -c "$$BROWSER_PYSCRIPT"
4141

4242
# Python global variables definition
4343
PYTHON_VERSION_MIN = 3.9

tests/geofunctions/test_localization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ def test_sensor_coloc_using_geotransform(col, row, h):
730730
row_coloc_optim, col_coloc_optim, _ = coloc_rpc(
731731
geom_model_left_optim, geom_model_right_optim, row, col, h, image_left, image_right, using_geotransform=True
732732
)
733-
np.testing.assert_allclose(row_coloc, row_coloc_optim, 0, 8e-12)
733+
np.testing.assert_allclose(row_coloc, row_coloc_optim, 0, 8e-10)
734734
np.testing.assert_allclose(col_coloc, col_coloc_optim, 0, 2e-11)
735735

736736
origin_left = [5000.0, 5000.0]

tests/geofunctions/test_rectification.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,11 @@ def test_compute_stereorectification_epipolar_grids_geomodel_rpc(init_rpc_geom_m
107107
).read()
108108

109109
# Check epipolar grids
110-
np.testing.assert_array_equal(reference_left_grid[1], left_grid[:, :, 0])
111-
np.testing.assert_array_equal(reference_left_grid[0], left_grid[:, :, 1])
110+
np.testing.assert_allclose(reference_left_grid[1], left_grid[:, :, 0], atol=1.0e-10)
111+
np.testing.assert_allclose(reference_left_grid[0], left_grid[:, :, 1], atol=1.0e-10)
112112

113-
np.testing.assert_array_equal(reference_right_grid[1], right_grid[:, :, 0])
114-
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=2.0e-12)
113+
np.testing.assert_allclose(reference_right_grid[1], right_grid[:, :, 0], atol=1.0e-10)
114+
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=1.0e-10)
115115

116116
# Check mean_baseline_ratio
117117
reference_mean_br = 0.7040047235162911
@@ -178,11 +178,11 @@ def test_compute_stereorectification_epipolar_grids_geomodel_rpc_displacement(in
178178
).read()
179179

180180
# Check epipolar grids
181-
np.testing.assert_array_equal(reference_left_grid[1], left_grid[:, :, 0])
182-
np.testing.assert_array_equal(reference_left_grid[0], left_grid[:, :, 1])
181+
np.testing.assert_allclose(reference_left_grid[1], left_grid[:, :, 0], atol=1.0e-10)
182+
np.testing.assert_allclose(reference_left_grid[0], left_grid[:, :, 1], atol=1.0e-10)
183183

184-
np.testing.assert_array_equal(reference_right_grid[1], right_grid[:, :, 0])
185-
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=2.0e-12)
184+
np.testing.assert_allclose(reference_right_grid[1], right_grid[:, :, 0], atol=1.0e-10)
185+
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=1.0e-10)
186186

187187
# Check mean_baseline_ratio
188188
reference_mean_br = 0.7040047235162911
@@ -258,11 +258,11 @@ def test_compute_stereorectification_epipolar_grids_geomodel_rpc_with_margins(in
258258
).read()
259259

260260
# Check epipolar grids
261-
np.testing.assert_array_equal(reference_left_grid[1], left_grid[:, :, 0])
262-
np.testing.assert_array_equal(reference_left_grid[0], left_grid[:, :, 1])
261+
np.testing.assert_allclose(reference_left_grid[1], left_grid[:, :, 0], atol=1.0e-10)
262+
np.testing.assert_allclose(reference_left_grid[0], left_grid[:, :, 1], atol=1.0e-10)
263263

264-
np.testing.assert_array_equal(reference_right_grid[1], right_grid[:, :, 0])
265-
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=2.0e-12)
264+
np.testing.assert_allclose(reference_right_grid[1], right_grid[:, :, 0], atol=1.0e-10)
265+
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=1.0e-10)
266266

267267

268268
@pytest.mark.unit_tests

tests/geofunctions/test_rectification_optim.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ def test_compute_strip_of_epipolar_grid_dtm(init_rpc_geom_model):
539539
)
540540

541541
np.testing.assert_allclose(res_py[0], res_cpp[0], 0, 2e-10)
542-
np.testing.assert_allclose(res_py[1], res_cpp[1], 0, 2e-9)
542+
np.testing.assert_allclose(res_py[1], res_cpp[1], 0, 3e-9)
543543
np.testing.assert_allclose(res_py[2], res_cpp[2], 0, 3e-12)
544544
assert res_py[3] == pytest.approx(res_cpp[3], abs=3e-14)
545545
assert res_cpp[4] == 0
@@ -626,7 +626,7 @@ def test_compute_strip_of_epipolar_grid_dtm(init_rpc_geom_model):
626626
)
627627

628628
np.testing.assert_allclose(res_py[0], res_cpp[0], 0, 2e-10)
629-
np.testing.assert_allclose(res_py[1], res_cpp[1], 0, 2e-9)
629+
np.testing.assert_allclose(res_py[1], res_cpp[1], 0, 3e-9)
630630
np.testing.assert_allclose(res_py[2], res_cpp[2], 0, 3e-12)
631631
assert res_py[3] == pytest.approx(res_cpp[3], abs=3e-14)
632632
assert res_cpp[4] == 0
@@ -673,7 +673,7 @@ def test_compute_strip_of_epipolar_grid_dtm(init_rpc_geom_model):
673673
)
674674

675675
np.testing.assert_allclose(res_py[0], res_cpp[0], 0, 3e-10)
676-
np.testing.assert_allclose(res_py[1], res_cpp[1], 0, 2e-9)
676+
np.testing.assert_allclose(res_py[1], res_cpp[1], 0, 3e-9)
677677
np.testing.assert_allclose(res_py[2], res_cpp[2], 0, 8e-12)
678678
assert res_py[3] == pytest.approx(res_cpp[3], abs=7e-14)
679679
assert res_cpp[4] == 0

tests/geofunctions/test_strip_rectification_grid.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ def test_compute_strip_of_epipolar_grid_columns_lines_rectangular(
105105
).read()
106106

107107
# Check epipolar grids
108-
np.testing.assert_array_equal(reference_left_grid[1][:21, :], left_grid[:, :, 0])
109-
np.testing.assert_array_equal(reference_left_grid[0][:21, :], left_grid[:, :, 1])
108+
np.testing.assert_allclose(reference_left_grid[1][:21, :], left_grid[:, :, 0], atol=1.0e-9)
109+
np.testing.assert_allclose(reference_left_grid[0][:21, :], left_grid[:, :, 1], atol=1.0e-9)
110110

111-
np.testing.assert_array_equal(reference_right_grid[1][:21, :], right_grid[:, :, 0])
112-
np.testing.assert_allclose(reference_right_grid[0][:21, :], right_grid[:, :, 1], atol=2.0e-12)
111+
np.testing.assert_allclose(reference_right_grid[1][:21, :], right_grid[:, :, 0], atol=1.0e-9)
112+
np.testing.assert_allclose(reference_right_grid[0][:21, :], right_grid[:, :, 1], atol=1.0e-9)
113113

114114
# Check mean_baseline_ratio
115115
reference_mean_br = 0.7024809
@@ -177,11 +177,11 @@ def test_compute_strip_of_epipolar_grid_columns_lines(init_inputs_rectification_
177177
).read()
178178

179179
# Check epipolar grids
180-
np.testing.assert_array_equal(reference_left_grid[1], left_grid[:, :, 0])
181-
np.testing.assert_array_equal(reference_left_grid[0], left_grid[:, :, 1])
180+
np.testing.assert_allclose(reference_left_grid[1], left_grid[:, :, 0], atol=1.0e-10)
181+
np.testing.assert_allclose(reference_left_grid[0], left_grid[:, :, 1], atol=1.0e-10)
182182

183-
np.testing.assert_array_equal(reference_right_grid[1], right_grid[:, :, 0])
184-
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=2.0e-12)
183+
np.testing.assert_allclose(reference_right_grid[1], right_grid[:, :, 0], atol=1.0e-10)
184+
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=1.0e-10)
185185

186186
# Check mean_baseline_ratio
187187
# ground truth mean baseline ratio
@@ -389,11 +389,11 @@ def test_working_with_strip(init_rpc_geom_model, init_inputs_rectification_fixtu
389389
).read()
390390

391391
# Check epipolar grids
392-
np.testing.assert_array_equal(reference_left_grid[1], left_grid[:, :, 0])
393-
np.testing.assert_array_equal(reference_left_grid[0], left_grid[:, :, 1])
392+
np.testing.assert_allclose(reference_left_grid[1], left_grid[:, :, 0], atol=2.0e-9)
393+
np.testing.assert_allclose(reference_left_grid[0], left_grid[:, :, 1], atol=2.0e-9)
394394

395-
np.testing.assert_array_equal(reference_right_grid[1], right_grid[:, :, 0])
396-
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=2.0e-12)
395+
np.testing.assert_allclose(reference_right_grid[1], right_grid[:, :, 0], atol=2.0e-9)
396+
np.testing.assert_allclose(reference_right_grid[0], right_grid[:, :, 1], atol=2.0e-9)
397397

398398
assert nan_col + nan_count == 0
399399
mean_br = sum_br / (grid_size[0] * grid_size[1])

tests/geofunctions/test_triangulation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ def test_epi_triangulation_disp_rpc_roi():
454454
np.testing.assert_allclose(point_ecef[:, 1], point_ecef_optim[:, 1], 0, 2e-8)
455455
np.testing.assert_allclose(point_ecef[:, 2], point_ecef_optim[:, 2], 0, 2e-7)
456456
np.testing.assert_allclose(point_wgs84[:, 0], point_wgs84_optim[:, 0], 0, 7e-14)
457-
np.testing.assert_allclose(point_wgs84[:, 1], point_wgs84_optim[:, 1], 0, 5e-14)
457+
np.testing.assert_allclose(point_wgs84[:, 1], point_wgs84_optim[:, 1], 0, 5e-13)
458458
np.testing.assert_allclose(point_wgs84[:, 2], point_wgs84_optim[:, 2], 0, 2e-7)
459459

460460
# open cloud

tests/geomodels/test_grid.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def test_sensor_loc_inv(get_geotiff_grid):
205205
h = 200.0
206206
gri.estimate_inverse_loc_predictor()
207207
res = gri.inverse_loc(lon, lat, h)
208-
np.testing.assert_allclose(res, [[50], [100], [200.0]], rtol=0, atol=1e-9)
208+
np.testing.assert_allclose(res, [[50], [100], [200.0]], rtol=0, atol=1e-8)
209209
lon = np.array([2.1828713504608683, np.nan, 2.1828713504608683, np.nan, 2.1828713504608683])
210210
lat = np.array([48.942429997483146, np.nan, np.nan, 48.942429997483146, 48.942429997483146])
211211
h = 200.0
@@ -214,5 +214,5 @@ def test_sensor_loc_inv(get_geotiff_grid):
214214
res,
215215
[[50, np.nan, np.nan, np.nan, 50], [100, np.nan, np.nan, np.nan, 100], [200.0, np.nan, np.nan, np.nan, 200.0]],
216216
rtol=0,
217-
atol=1e-9,
217+
atol=1e-8,
218218
)

tests/geomodels/test_rpc_optim.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,10 @@ def test_compute_rational_function_polynomial(geom_path):
245245
res_py_1 = np.append(res_py[1], [np.nan, np.nan])
246246

247247
np.testing.assert_allclose(np.array(res_cpp[1]), res_py_0, 0, 3e-9)
248-
np.testing.assert_allclose(np.array(res_cpp[0]), res_py_1, 0, 2e-9)
248+
np.testing.assert_allclose(np.array(res_cpp[0]), res_py_1, 0, 3e-9)
249249

250250
np.testing.assert_allclose(res_cpp_row, res_py_0, 0, 3e-9)
251-
np.testing.assert_allclose(res_cpp_col, res_py_1, 0, 2e-9)
251+
np.testing.assert_allclose(res_cpp_col, res_py_1, 0, 3e-9)
252252

253253

254254
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)