From 4c0e7fe25c5100597acb2aa4d5fcab37065c36f2 Mon Sep 17 00:00:00 2001 From: Harrison Date: Fri, 2 Jun 2023 05:19:43 +0000 Subject: [PATCH] Setup as 'pip' library --- Jenkinsfile | 35 +++++++++++++++++++++++++++++++++++ environment.yml | 10 ++++++++-- setup.cfg | 18 ++++++++++++++++++ setup.py | 3 +++ tests/test_trainers.py | 5 +++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 Jenkinsfile create mode 100644 setup.cfg create mode 100644 setup.py create mode 100644 tests/test_trainers.py diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..7c9bd38 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,35 @@ +pipeline { + agent any + stages { + stage("install") { + steps { + sh 'mamba env update --file environment.yml --prefix ./env || mamba env create --force --file environment.yml --prefix ./env' + sh 'echo conda environment: $CONDA_PREFIX' + } + } + stage("unit tests") { + steps { + sh returnStatus: true, script: "python -m pytest --junitxml=test_results.tests.xml --cov-report xml:test_coverage.coverage.xml --cov=mltraining" + xunit checksName: '', thresholdMode: 2, thresholds: [failed(unstableThreshold: '90')], tools: [JUnit(excludesPattern: '', pattern: 'test_results.tests.xml', stopProcessingIfError: true)] + // cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'test_coverage.coverage.xml', failUnhealthy: false, failUnstable: false, maxNumberOfBuilds: 64, lineCoverageTargets: '50, 0, 0', methodCoverageTargets: '50, 0, 0', onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false + } + } + stage("build") { + steps { + sh 'rm -rf ./dist/*' + sh "python -m build" + } + } + stage("publish") { + environment { + CREDS = credentials('rs-git-package-registry-ydeng') + } + when { + branch '**/main' + } + steps { + sh returnStatus: true, script: 'python -m twine upload --repository-url https://git.reslate.systems/api/packages/${CREDS_USR}/pypi -u ${CREDS_USR} -p ${CREDS_PSW} --non-interactive --disable-progress-bar --verbose dist/*' + } + } + } +} \ No newline at end of file diff --git a/environment.yml b/environment.yml index 52f9baa..4fd2f97 100644 --- a/environment.yml +++ b/environment.yml @@ -1,8 +1,14 @@ -name: huggingface_transformers_utils +name: mltraining channels: - conda-forge - huggingface dependencies: - transformers=4.28 + - python-build=0.10 + - pip=23.1 + - setuptools=67.7 + - pytest=7.3 + - pytest-cov=4 - pip: - - evaluate==0.4.0 + - evaluate==0.4 + - datasets==2.12 diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..9257d84 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,18 @@ +[metadata] +name = mltraining +version = 0.0.1 + +[options] +package_dir = + = src +packages = mltraining +install_requires = + transformers==4.28 + evaluate==0.4 + datasets==2.12 + pytest==7.3 + +[tool:pytest] +pythonpath = src +testpaths = tests +log_cli = 1 \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..fc1f76c --- /dev/null +++ b/setup.py @@ -0,0 +1,3 @@ +from setuptools import setup + +setup() \ No newline at end of file diff --git a/tests/test_trainers.py b/tests/test_trainers.py new file mode 100644 index 0000000..890416b --- /dev/null +++ b/tests/test_trainers.py @@ -0,0 +1,5 @@ +import pytest + +def test_placeholder(): + # TODO Placeholder test for library + assert True \ No newline at end of file