Skip to content

Commit a0480b7

Browse files
authored
enh(ci): deliver centreon plugins for debian 13 and rhel 10 (#6029)
Refs: CTOR-2086
1 parent 73902cb commit a0480b7

File tree

8 files changed

+70
-23
lines changed

8 files changed

+70
-23
lines changed

.github/actions/parse-distrib/action.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,7 @@ runs:
2424
- name: Parse distrib
2525
id: parse-distrib
2626
run: |
27-
if [[ "${{ inputs.distrib }}" == "centos7" || "${{ inputs.distrib }}" == "el7" ]]; then
28-
PACKAGE_DISTRIB_SEPARATOR="."
29-
PACKAGE_DISTRIB_NAME="el7"
30-
PACKAGE_EXTENSION="rpm"
31-
DISTRIB_FAMILY="el"
32-
elif [[ "${{ inputs.distrib }}" == "alma8" || "${{ inputs.distrib }}" == "el8" ]]; then
27+
if [[ "${{ inputs.distrib }}" == "alma8" || "${{ inputs.distrib }}" == "el8" ]]; then
3328
PACKAGE_DISTRIB_SEPARATOR="."
3429
PACKAGE_DISTRIB_NAME="el8"
3530
PACKAGE_EXTENSION="rpm"

.github/actions/promote-to-stable/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ runs:
6666
shell: bash
6767

6868
- name: Promote DEB package to stable
69-
if: ${{ contains(fromJSON('["bullseye", "bookworm", "jammy", "noble"]'), inputs.distrib) }}
69+
if: ${{ contains(fromJSON('["bullseye", "bookworm", "trixie", "jammy", "noble"]'), inputs.distrib) }}
7070
run: |
7171
set -eux
7272

.github/docker/unit-tests/Dockerfile.unit-tests-alma10

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ dnf install -y make cpan perl-Test2-Suite.noarch 'perl(Authen::Radius)' 'perl(Co
5353
dnf -y install 'perl(Crypt::OpenSSL::AES)' 'perl-Net-Curl' 'perl(YAML::XS)' 'perl(Hash::Merge)' 'perl(Clone)' 'perl(CryptX)' 'perl(JSON::XS)' 'perl(JSON::PP)' 'perl(Digest::MD5::File)'
5454
dnf -y install 'perl(ZMQ::FFI)' 'perl(EV)' 'perl(RRDs)' 'perl(DBI)' 'perl(DBD::SQLite)' 'perl(HTTP::Daemon)' 'perl(HTTP::Daemon::SSL)' 'perl(NetAddr::IP)' 'perl(Mojolicious)' 'perl(Mojo::IOLoop::Signal)' 'perl(Net::Curl)'
5555
dnf -y install git mariadb
56+
# Replace libcurl-minimal with the full libcurl to enable NTLM support (removed from minimal build in RHEL 10)
57+
dnf -y install --allowerasing libcurl
5658

5759
dnf clean all
5860
mkdir -p /var/lib/centreon/centplugins/

.github/scripts/list-plugins-to-build-and-test.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,22 @@ def add_package_info(packaging_file, build=True, test=True):
4343
if line.startswith("package "):
4444
plugin_package_name = line.split()[1].replace(";", "")
4545
break
46+
packaging_dir = Path(packaging_file).parent
47+
test_dependencies = []
48+
rpm_file = packaging_dir / 'rpm.json'
49+
if rpm_file.exists():
50+
with open(rpm_file) as rf:
51+
rpm_data = json.load(rf)
52+
test_dependencies = [dependency for dependency in rpm_data.get('dependencies', []) if dependency.lower().startswith('centreon-plugin-')]
4653
if packaging['pkg_name'] not in list_plugins:
4754
list_plugins[packaging['pkg_name']] = {
4855
"perl_package": plugin_package_name,
4956
"command": packaging['plugin_name'],
5057
"paths": plugin_paths,
5158
"build": build,
5259
"test": test,
53-
"runner_id": runner_id
60+
"runner_id": runner_id,
61+
"test_dependencies": test_dependencies
5462
}
5563
if runner_id == max_runners:
5664
runner_id = 1

.github/scripts/test-plugins.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,18 @@ def refresh_packet_manager(archi, logs_dir):
4747

4848

4949
# Install plugin, from local file if build is true, from repository if false.
50-
def install_plugin(plugin, archi, build, logs_dir):
50+
def install_plugin(plugin, archi, build, logs_dir, dependencies=None):
51+
if dependencies:
52+
for dep in dependencies:
53+
if archi == "deb":
54+
local_exists = len(glob.glob(f"./{dep.lower()}*.deb")) > 0
55+
else:
56+
local_exists = len(glob.glob(f"./{dep}*.rpm")) > 0
57+
if local_exists:
58+
print(f"Installing test dependency {dep} for {plugin}")
59+
dep_status = install_plugin(dep, archi, True, logs_dir)
60+
if dep_status != 0:
61+
print(f"Warning: failed to install test dependency {dep} for {plugin}")
5162
with open(f'{logs_dir}/test-plugins-installation.log', "a") as outfile:
5263
if archi == "deb":
5364
if build:
@@ -99,12 +110,12 @@ def get_plugin_modes(plugin_command):
99110
break
100111
return modes
101112

102-
def test_plugin(plugin_name, plugin_command, plugin_perl_package, plugin_paths, logs_dir, reports_dir):
113+
def test_plugin(plugin_name, plugin_command, plugin_perl_package, plugin_paths, logs_dir, reports_dir, skip_robot_tests):
103114
tests_path = []
104115
for path in plugin_paths:
105116
if os.path.exists(f"tests/{path}"):
106117
tests_path.append(f"tests/{path}")
107-
if len(tests_path) == 0:
118+
if len(tests_path) == 0 or skip_robot_tests:
108119
output_status = 3
109120
with open(f'{logs_dir}/test-plugins-help.log', "a") as outfile:
110121
print(
@@ -177,11 +188,13 @@ def remove_plugin(plugin, archi, logs_dir):
177188
parser.add_argument('--runner-id', type=int, help='ID du runner pour le test des plugins')
178189
parser.add_argument('--logs-dir', type=str, help='Répertoire des logs', default='/var/log')
179190
parser.add_argument('--reports-dir', type=str, help='Répertoire des rapports', default='reports')
191+
parser.add_argument('--skip-robot-tests', type=str, help='True to skip robot tests, default value: False', default='false')
180192
args = parser.parse_args()
181193

182194
launch_snmp_sim()
183195
archi = args.extension # expected either deb or rpm.
184196
logs_dir = args.logs_dir
197+
skip_robot_tests = args.skip_robot_tests.lower() == 'true'
185198
if args.runner_id:
186199
logs_dir = os.path.join(logs_dir, f"runner-{args.runner_id}")
187200
os.makedirs(logs_dir, exist_ok=True)
@@ -211,13 +224,15 @@ def remove_plugin(plugin, archi, logs_dir):
211224
print("Testing plugin : ", plugin)
212225

213226
nb_plugins += 1
214-
tmp = install_plugin(plugin, archi, plugins[plugin]["build"], logs_dir)
227+
228+
test_deps = plugins[plugin].get("test_dependencies", [])
229+
tmp = install_plugin(plugin, archi, plugins[plugin]["build"], logs_dir, test_deps)
215230
if tmp > 0:
216231
error_install += 1
217232
list_plugin_error.add(plugin)
218233
else:
219234
if plugins[plugin]["test"]:
220-
tmp = test_plugin(plugin, plugins[plugin]["command"], plugins[plugin]["perl_package"], plugins[plugin]["paths"], logs_dir, reports_dir)
235+
tmp = test_plugin(plugin, plugins[plugin]["command"], plugins[plugin]["perl_package"], plugins[plugin]["paths"], logs_dir, reports_dir, skip_robot_tests)
221236
if tmp > 0:
222237
error_tests += 1
223238
list_plugin_error.add(plugin)

.github/workflows/plugins-robot-tests.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ on:
3333
description: "The cache key for plugin's json"
3434
required: true
3535
type: string
36+
skip-robot-tests:
37+
description: "Whether to run robot tests or not"
38+
type: boolean
39+
default: false
3640
secrets:
3741
registry_username:
3842
required: true
@@ -128,7 +132,7 @@ jobs:
128132
--workdir /test_plugins \
129133
${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ inputs.image }} \
130134
bash -c "if [ -f /.venv/bin/activate ]; then source /.venv/bin/activate; fi; \
131-
python3 .github/scripts/test-plugins.py --extension=${{ inputs.package-extension }} --runner-id=${{ matrix.index }} --logs-dir=./logs --reports-dir=./reports"
135+
python3 .github/scripts/test-plugins.py --extension=${{ inputs.package-extension }} --runner-id=${{ matrix.index }} --logs-dir=./logs --reports-dir=./reports --skip-robot-tests=${{ inputs.skip-robot-tests }}"
132136
133137
- name: Upload logs as artifacts if tests failed
134138
if: failure()

.github/workflows/plugins.yml

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ jobs:
174174
fail-fast: false
175175
max-parallel: 3
176176
matrix:
177-
image: [unit-tests-alma8, unit-tests-alma9, unit-tests-bullseye, unit-tests-bullseye-arm64, unit-tests-bookworm, unit-tests-jammy, unit-tests-noble]
177+
image: [unit-tests-alma8, unit-tests-alma9, unit-tests-alma10, unit-tests-bullseye, unit-tests-bullseye-arm64, unit-tests-bookworm, unit-tests-trixie, unit-tests-jammy, unit-tests-noble]
178178
include:
179179
- runner_name: ubuntu-24.04
180180
- package_extension: rpm
@@ -183,6 +183,9 @@ jobs:
183183
- package_extension: rpm
184184
image: unit-tests-alma9
185185
distrib: el9
186+
- package_extension: rpm
187+
image: unit-tests-alma10
188+
distrib: el10
186189
- package_extension: deb
187190
image: unit-tests-bullseye
188191
distrib: bullseye
@@ -193,6 +196,9 @@ jobs:
193196
- package_extension: deb
194197
image: unit-tests-bookworm
195198
distrib: bookworm
199+
- package_extension: deb
200+
image: unit-tests-trixie
201+
distrib: trixie
196202
- package_extension: deb
197203
image: unit-tests-jammy
198204
distrib: jammy
@@ -277,21 +283,24 @@ jobs:
277283
max-parallel: 5
278284
matrix:
279285
include:
280-
- package_extension: rpm
281-
image: packaging-plugins-alma8
282-
distrib: el7
283286
- package_extension: rpm
284287
image: packaging-plugins-alma8
285288
distrib: el8
286289
- package_extension: rpm
287290
image: packaging-plugins-alma9
288291
distrib: el9
292+
- package_extension: rpm
293+
image: packaging-plugins-alma10
294+
distrib: el10
289295
- package_extension: deb
290296
image: packaging-plugins-bullseye
291297
distrib: bullseye
292298
- package_extension: deb
293299
image: packaging-plugins-bookworm
294300
distrib: bookworm
301+
- package_extension: deb
302+
image: packaging-plugins-trixie
303+
distrib: trixie
295304
- package_extension: deb
296305
image: packaging-plugins-jammy
297306
distrib: jammy
@@ -355,8 +364,9 @@ jobs:
355364
strategy:
356365
fail-fast: false
357366
matrix:
358-
image: [testing-plugins-alma8, testing-plugins-alma9, testing-plugins-jammy, testing-plugins-bullseye, testing-plugins-bookworm, testing-plugins-noble, testing-plugins-bullseye-arm64]
367+
image: [testing-plugins-alma8, testing-plugins-alma9, testing-plugins-alma10, testing-plugins-jammy, testing-plugins-bullseye, testing-plugins-bookworm, testing-plugins-trixie, testing-plugins-noble, testing-plugins-bullseye-arm64]
359368
include:
369+
- skip_robot_tests: false
360370
- package_extension: rpm
361371
image: testing-plugins-alma8
362372
distrib: el8
@@ -365,6 +375,11 @@ jobs:
365375
image: testing-plugins-alma9
366376
distrib: el9
367377
arch: amd64
378+
- package_extension: rpm
379+
image: testing-plugins-alma10
380+
distrib: el10
381+
arch: amd64
382+
skip_robot_tests: true
368383
- package_extension: deb
369384
image: testing-plugins-bullseye
370385
distrib: bullseye
@@ -373,6 +388,11 @@ jobs:
373388
image: testing-plugins-bookworm
374389
distrib: bookworm
375390
arch: amd64
391+
- package_extension: deb
392+
image: testing-plugins-trixie
393+
distrib: trixie
394+
arch: amd64
395+
skip_robot_tests: true
376396
- package_extension: deb
377397
image: testing-plugins-jammy
378398
distrib: jammy
@@ -398,6 +418,7 @@ jobs:
398418
package-extension: ${{ matrix.package_extension }}
399419
packages-cache-key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }}
400420
plugins-json-cache-key: plugins-${{ github.sha }}-${{ github.run_id }}
421+
skip-robot-tests: ${{ matrix.skip_robot_tests }}
401422
secrets:
402423
registry_username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
403424
registry_password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
@@ -416,16 +437,18 @@ jobs:
416437
fail-fast: false
417438
matrix:
418439
include:
419-
- distrib: el7
420-
package_extension: rpm
421440
- distrib: el8
422441
package_extension: rpm
423442
- distrib: el9
424443
package_extension: rpm
444+
- distrib: el10
445+
package_extension: rpm
425446
- distrib: bullseye
426447
package_extension: deb
427448
- distrib: bookworm
428449
package_extension: deb
450+
- distrib: trixie
451+
package_extension: deb
429452
- distrib: jammy
430453
package_extension: deb
431454
- distrib: noble

as400/packaging/centreon-as400-daemon.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ scripts:
6060
overrides:
6161
rpm:
6262
depends:
63-
- "java-17-openjdk"
63+
- "java-17-openjdk-headless"
6464
deb:
6565
depends:
66-
- "openjdk-17-jre"
66+
- "openjdk-17-jre-headless"
6767

6868
rpm:
6969
summary: Centreon AS 400 Plugin daemon

0 commit comments

Comments
 (0)