Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions .github/actions/parse-distrib/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,7 @@ runs:
- name: Parse distrib
id: parse-distrib
run: |
if [[ "${{ inputs.distrib }}" == "centos7" || "${{ inputs.distrib }}" == "el7" ]]; then
PACKAGE_DISTRIB_SEPARATOR="."
PACKAGE_DISTRIB_NAME="el7"
PACKAGE_EXTENSION="rpm"
DISTRIB_FAMILY="el"
elif [[ "${{ inputs.distrib }}" == "alma8" || "${{ inputs.distrib }}" == "el8" ]]; then
if [[ "${{ inputs.distrib }}" == "alma8" || "${{ inputs.distrib }}" == "el8" ]]; then
PACKAGE_DISTRIB_SEPARATOR="."
PACKAGE_DISTRIB_NAME="el8"
PACKAGE_EXTENSION="rpm"
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/promote-to-stable/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ runs:
shell: bash

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

Expand Down
2 changes: 2 additions & 0 deletions .github/docker/unit-tests/Dockerfile.unit-tests-alma10
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ dnf install -y make cpan perl-Test2-Suite.noarch 'perl(Authen::Radius)' 'perl(Co
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)'
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)'
dnf -y install git mariadb
# Replace libcurl-minimal with the full libcurl to enable NTLM support (removed from minimal build in RHEL 10)
dnf -y install --allowerasing libcurl

dnf clean all
mkdir -p /var/lib/centreon/centplugins/
Expand Down
10 changes: 9 additions & 1 deletion .github/scripts/list-plugins-to-build-and-test.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,22 @@ def add_package_info(packaging_file, build=True, test=True):
if line.startswith("package "):
plugin_package_name = line.split()[1].replace(";", "")
break
packaging_dir = Path(packaging_file).parent
test_dependencies = []
rpm_file = packaging_dir / 'rpm.json'
if rpm_file.exists():
with open(rpm_file) as rf:
rpm_data = json.load(rf)
test_dependencies = [dependency for dependency in rpm_data.get('dependencies', []) if dependency.lower().startswith('centreon-plugin-')]
if packaging['pkg_name'] not in list_plugins:
list_plugins[packaging['pkg_name']] = {
"perl_package": plugin_package_name,
"command": packaging['plugin_name'],
"paths": plugin_paths,
"build": build,
"test": test,
"runner_id": runner_id
"runner_id": runner_id,
"test_dependencies": test_dependencies
}
if runner_id == max_runners:
runner_id = 1
Expand Down
25 changes: 20 additions & 5 deletions .github/scripts/test-plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,18 @@ def refresh_packet_manager(archi, logs_dir):


# Install plugin, from local file if build is true, from repository if false.
def install_plugin(plugin, archi, build, logs_dir):
def install_plugin(plugin, archi, build, logs_dir, dependencies=None):
if dependencies:
for dep in dependencies:
if archi == "deb":
local_exists = len(glob.glob(f"./{dep.lower()}*.deb")) > 0
else:
local_exists = len(glob.glob(f"./{dep}*.rpm")) > 0
if local_exists:
print(f"Installing test dependency {dep} for {plugin}")
dep_status = install_plugin(dep, archi, True, logs_dir)
if dep_status != 0:
print(f"Warning: failed to install test dependency {dep} for {plugin}")
with open(f'{logs_dir}/test-plugins-installation.log', "a") as outfile:
if archi == "deb":
if build:
Expand Down Expand Up @@ -99,12 +110,12 @@ def get_plugin_modes(plugin_command):
break
return modes

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

launch_snmp_sim()
archi = args.extension # expected either deb or rpm.
logs_dir = args.logs_dir
skip_robot_tests = args.skip_robot_tests.lower() == 'true'
if args.runner_id:
logs_dir = os.path.join(logs_dir, f"runner-{args.runner_id}")
os.makedirs(logs_dir, exist_ok=True)
Expand Down Expand Up @@ -211,13 +224,15 @@ def remove_plugin(plugin, archi, logs_dir):
print("Testing plugin : ", plugin)

nb_plugins += 1
tmp = install_plugin(plugin, archi, plugins[plugin]["build"], logs_dir)

test_deps = plugins[plugin].get("test_dependencies", [])
tmp = install_plugin(plugin, archi, plugins[plugin]["build"], logs_dir, test_deps)
if tmp > 0:
error_install += 1
list_plugin_error.add(plugin)
else:
if plugins[plugin]["test"]:
tmp = test_plugin(plugin, plugins[plugin]["command"], plugins[plugin]["perl_package"], plugins[plugin]["paths"], logs_dir, reports_dir)
tmp = test_plugin(plugin, plugins[plugin]["command"], plugins[plugin]["perl_package"], plugins[plugin]["paths"], logs_dir, reports_dir, skip_robot_tests)
if tmp > 0:
error_tests += 1
list_plugin_error.add(plugin)
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/plugins-robot-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ on:
description: "The cache key for plugin's json"
required: true
type: string
skip-robot-tests:
description: "Whether to run robot tests or not"
type: boolean
default: false
secrets:
registry_username:
required: true
Expand Down Expand Up @@ -128,7 +132,7 @@ jobs:
--workdir /test_plugins \
${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ inputs.image }} \
bash -c "if [ -f /.venv/bin/activate ]; then source /.venv/bin/activate; fi; \
python3 .github/scripts/test-plugins.py --extension=${{ inputs.package-extension }} --runner-id=${{ matrix.index }} --logs-dir=./logs --reports-dir=./reports"
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 }}"

- name: Upload logs as artifacts if tests failed
if: failure()
Expand Down
37 changes: 30 additions & 7 deletions .github/workflows/plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ jobs:
fail-fast: false
max-parallel: 3
matrix:
image: [unit-tests-alma8, unit-tests-alma9, unit-tests-bullseye, unit-tests-bullseye-arm64, unit-tests-bookworm, unit-tests-jammy, unit-tests-noble]
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]
include:
- runner_name: ubuntu-24.04
- package_extension: rpm
Expand All @@ -183,6 +183,9 @@ jobs:
- package_extension: rpm
image: unit-tests-alma9
distrib: el9
- package_extension: rpm
image: unit-tests-alma10
distrib: el10
- package_extension: deb
image: unit-tests-bullseye
distrib: bullseye
Expand All @@ -193,6 +196,9 @@ jobs:
- package_extension: deb
image: unit-tests-bookworm
distrib: bookworm
- package_extension: deb
image: unit-tests-trixie
distrib: trixie
- package_extension: deb
image: unit-tests-jammy
distrib: jammy
Expand Down Expand Up @@ -277,21 +283,24 @@ jobs:
max-parallel: 5
matrix:
include:
- package_extension: rpm
image: packaging-plugins-alma8
distrib: el7
- package_extension: rpm
image: packaging-plugins-alma8
distrib: el8
- package_extension: rpm
image: packaging-plugins-alma9
distrib: el9
- package_extension: rpm
image: packaging-plugins-alma10
distrib: el10
- package_extension: deb
image: packaging-plugins-bullseye
distrib: bullseye
- package_extension: deb
image: packaging-plugins-bookworm
distrib: bookworm
- package_extension: deb
image: packaging-plugins-trixie
distrib: trixie
- package_extension: deb
image: packaging-plugins-jammy
distrib: jammy
Expand Down Expand Up @@ -355,8 +364,9 @@ jobs:
strategy:
fail-fast: false
matrix:
image: [testing-plugins-alma8, testing-plugins-alma9, testing-plugins-jammy, testing-plugins-bullseye, testing-plugins-bookworm, testing-plugins-noble, testing-plugins-bullseye-arm64]
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]
include:
- skip_robot_tests: false
- package_extension: rpm
image: testing-plugins-alma8
distrib: el8
Expand All @@ -365,6 +375,11 @@ jobs:
image: testing-plugins-alma9
distrib: el9
arch: amd64
- package_extension: rpm
image: testing-plugins-alma10
distrib: el10
arch: amd64
skip_robot_tests: true
- package_extension: deb
image: testing-plugins-bullseye
distrib: bullseye
Expand All @@ -373,6 +388,11 @@ jobs:
image: testing-plugins-bookworm
distrib: bookworm
arch: amd64
- package_extension: deb
image: testing-plugins-trixie
distrib: trixie
arch: amd64
skip_robot_tests: true
- package_extension: deb
image: testing-plugins-jammy
distrib: jammy
Expand All @@ -398,6 +418,7 @@ jobs:
package-extension: ${{ matrix.package_extension }}
packages-cache-key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }}
plugins-json-cache-key: plugins-${{ github.sha }}-${{ github.run_id }}
skip-robot-tests: ${{ matrix.skip_robot_tests }}
secrets:
registry_username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
registry_password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
Expand All @@ -416,16 +437,18 @@ jobs:
fail-fast: false
matrix:
include:
- distrib: el7
package_extension: rpm
- distrib: el8
package_extension: rpm
- distrib: el9
package_extension: rpm
- distrib: el10
package_extension: rpm
- distrib: bullseye
package_extension: deb
- distrib: bookworm
package_extension: deb
- distrib: trixie
package_extension: deb
- distrib: jammy
package_extension: deb
- distrib: noble
Expand Down
4 changes: 2 additions & 2 deletions as400/packaging/centreon-as400-daemon.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ scripts:
overrides:
rpm:
depends:
- "java-17-openjdk"
- "java-17-openjdk-headless"
deb:
depends:
- "openjdk-17-jre"
- "openjdk-17-jre-headless"

rpm:
summary: Centreon AS 400 Plugin daemon
Expand Down
Loading