From 862a3911f028c11784a9b3eaf4eade9ee495246d Mon Sep 17 00:00:00 2001 From: Guillaume Raffy Date: Mon, 18 Nov 2024 16:42:12 +0100 Subject: [PATCH] v0.0.2 - added continuous integration using ipr jenkins work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3958] --- .gitignore | 1 + ci/ipr.jenkins | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ iprbench/main.py | 2 +- pyproject.toml | 10 ++++----- 4 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 ci/ipr.jenkins diff --git a/.gitignore b/.gitignore index 61ae26f..4813502 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ test/__pycache__/ iprbench/resources/__pycache__/ iprbench/resources/mamul1/__pycache__/ iprbench/resultsdb/__pycache__/ +build/ diff --git a/ci/ipr.jenkins b/ci/ipr.jenkins new file mode 100644 index 0000000..625f76d --- /dev/null +++ b/ci/ipr.jenkins @@ -0,0 +1,55 @@ +// Jenkinsfile for jenkins.ipr.univ-rennes1.fr (Institut de Physique de Rennes) +pipeline { + agent {label 'alambix_agent'} + environment { + IPRBENCH_VENV_PATH = "${WORKSPACE}/iprbench.venv" + } + stages { + stage('setup') { + steps { + echo 'setting up itinv test environment' + sh """#!/bin/bash + python3 -m venv ${IPRBENCH_VENV_PATH} && + source ${IPRBENCH_VENV_PATH}/bin/activate && + pip install --upgrade pip && + pip install --upgrade setuptools && + pip install . + """ + } + } + stage('testing') { + steps { + sh """#!/bin/bash + set -o errexit + source ${IPRBENCH_VENV_PATH}/bin/activate && + python -m unittest + """ + } + } + stage('releasing iprbench...') { + steps { + // see https://www.jenkins.io/doc/book/pipeline/jenkinsfile/ + // graffy created the credential 4e327c3e-8b22-462b-8294-199402e22e7c from jenkin's interface in 2020. This credential is named maco-tester, stores a private ssh key that is allowed access to ssh maco@store.ipr.univ-rennes1.fr. This maco-tester credential belongs to global domain and Jenkins store. + withCredentials([sshUserPrivateKey(credentialsId: '4e327c3e-8b22-462b-8294-199402e22e7c', keyFileVariable: 'MACO_AT_STORE_KEY_FILE_PATH', passphraseVariable: '', usernameVariable: '')]) { + // MACO_AT_STORE_KEY_FILE_PATH stores the path of the public key file to access maco@store.ipr.univ-rennes1.fr + sh """ + git archive -o fr.univ-rennes.ipr.iprbench.tar.gz HEAD && + scp -i ${MACO_AT_STORE_KEY_FILE_PATH} fr.univ-rennes.ipr.iprbench.tar.gz maco@store.ipr.univ-rennes1.fr:/mnt/store.ipr/InstallProgs/ipr/ipr-packages + """ + } + } + } + } + post + { + // always, success, failure, unstable, changed + failure + { + mail bcc: '', body: "Example
Project: ${env.JOB_NAME}
Build Number: ${env.BUILD_NUMBER}
Build URL: ${env.BUILD_URL}", cc: '', charset: 'UTF-8', from: '', mimeType: 'text/html', replyTo: '', subject: "CI build failed for ${env.JOB_NAME}", to: "guillaume.raffy@univ-rennes1.fr"; + } + cleanup { + cleanWs() + } + } +} + diff --git a/iprbench/main.py b/iprbench/main.py index 48a0827..39e7a5c 100644 --- a/iprbench/main.py +++ b/iprbench/main.py @@ -1,4 +1,4 @@ -__version__ = '0.0.1' +__version__ = '0.0.2' from .core import BenchmarkId, IBenchmark, ResultsDbFactory from .benchmarks.hibench import HiBench diff --git a/pyproject.toml b/pyproject.toml index 32fe444..1c9e71b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,10 +13,10 @@ dependencies = [ "pandas", "matplotlib", "sqlalchemy", - "cocluto >= 1.6", -# "cocluto@git+https://git.ipr.univ-rennes.fr/cellinfo/cocluto" - "starbench >= 1.0.1" -# "starbench@git+https://github.com/g-raffy/starbench" + # "cocluto >= 1.7", + "cocluto@git+https://git.ipr.univ-rennes.fr/cellinfo/cocluto@v1.7.0", + # "starbench >= 1.0.1" + "starbench@git+https://github.com/g-raffy/starbench@v1.0.2", ] requires-python = ">= 3.8" authors = [ @@ -32,7 +32,7 @@ showresults = "iprbench.benchmarks.showresults:main" Repository = "https://github.com/g-raffy/starbench" [tool.setuptools] -packages = ["iprbench", "iprbench.benchmarks"] +packages = ["iprbench", "iprbench.benchmarks", "iprbench.resultsdb"] [tool.setuptools.dynamic] version = {attr = "iprbench.main.__version__"}