47 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
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.xml --cov-report xml:test_coverage.xml --cov=program"
 | 
						|
                xunit checksName: '', tools: [JUnit(excludesPattern: '', pattern: 'test_results.xml', stopProcessingIfError: true)]
 | 
						|
                cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: 'test_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 "python -m build"
 | 
						|
                // Additional build steps go here
 | 
						|
            }
 | 
						|
        }
 | 
						|
        stage("test installation") {
 | 
						|
            steps {
 | 
						|
                sh "pip install dist/*.whl"
 | 
						|
                // TODO Test installation by sample run
 | 
						|
            }
 | 
						|
        }
 | 
						|
        stage("archive") {
 | 
						|
            steps {
 | 
						|
                archiveArtifacts artifacts: 'dist/*.tar.gz, dist/*.whl'
 | 
						|
                // Additional archival or documentation steps go here
 | 
						|
            }
 | 
						|
        }
 | 
						|
        stage("publish") {
 | 
						|
            environment {
 | 
						|
                CREDS = credentials('rs-git-package-registry-ydeng')
 | 
						|
            }
 | 
						|
            when {
 | 
						|
                branch '**/main'
 | 
						|
            }
 | 
						|
            steps {
 | 
						|
                sh "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/*"
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |