Skip to content

Commit

Permalink
Merge pull request #50 from datalogics-aarroyo/jenkinsfile
Browse files Browse the repository at this point in the history
Add Jenkinsfile to repository
  • Loading branch information
datalogics-saharay authored Aug 16, 2024
2 parents 17dd3f8 + ad9a6c9 commit 80ced58
Show file tree
Hide file tree
Showing 2 changed files with 155 additions and 196 deletions.
196 changes: 0 additions & 196 deletions .github/workflows/test-dotnet-samples.yml

This file was deleted.

155 changes: 155 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
@Library('jenkins-shared-libraries') _
def ENV_LOC=[:]
pipeline {
parameters {
choice(name: 'PLATFORM_FILTER', choices: ['all', 'windows-dotnet-samples', 'linux-dotnet-samples', 'mac-arm-dotnet-samples', 'mac-intel-dotnet-samples','linux-arm-dotnet-samples'], description: 'Run on specific platform')
booleanParam defaultValue: false, description: 'Completely clean the workspace before building, including the Conan cache', name: 'CLEAN_WORKSPACE'
booleanParam defaultValue: false, description: 'Run clean-samples', name: 'DISTCLEAN'
}
options{
buildDiscarder logRotator(artifactDaysToKeepStr: '4', artifactNumToKeepStr: '10', daysToKeepStr: '7', numToKeepStr: '10')
disableConcurrentBuilds()
timeout(time: 4, unit: "HOURS")
}
agent none
triggers {
// From the doc: @midnight actually means some time between 12:00 AM and 2:59 AM.
// This gives us automatic spreading out of jobs, so they don't cause load spikes.
cron('@midnight')
}
stages {
stage('Matrix stage') {
matrix {
agent {
label "${NODE}"
}
when { anyOf {
expression { params.PLATFORM_FILTER == 'all' }
expression { params.PLATFORM_FILTER == env.NODE }
} }
axes {
axis {
name 'NODE'
values 'windows-dotnet-samples', 'linux-dotnet-samples', 'mac-arm-dotnet-samples', 'mac-intel-dotnet-samples','linux-arm-dotnet-samples'
}
}
environment {
CONAN_USER_HOME = "${WORKSPACE}"
CONAN_NON_INTERACTIVE = '1'
CONAN_PRINT_RUN_COMMANDS = '1'
}
stages {
stage('Axis'){
steps {
printPlatformNameInStep()
}
}
stage('Clean/reset Git checkout for release') {
when {
expression {
params.CLEAN_WORKSPACE
}
}
steps {
echo "Clean ${NODE}"
script {
// Ensure that the checkout is clean and any changes
// to .gitattributes and .gitignore have been taken
// into effect
if (isUnix()) {
sh """
git rm -f -q -r .
git reset --hard HEAD
git clean -fdx
"""
} else {
// On Windows, 'git clean' can't handle long paths in .conan,
// so remove that first.
bat """
if exist ${WORKSPACE}\\.conan\\ rmdir/s/q ${WORKSPACE}\\.conan
git rm -q -r .
git reset --hard HEAD
git clean -fdx
"""
}
}
}
}
stage('Set-Up Environment') {
steps {
echo "Set-Up Environment ${NODE}"
script {
if (isUnix()) {
sh './mkenv.py --verbose'
ENV_LOC[NODE] = sh (
script: './mkenv.py --env-name',
returnStdout: true
).trim()
} else {
// Using the mkenv.py script like this assumes the Python Launcher is
// installed on the Windows host.
// https://docs.python.org/3/using/windows.html#launcher
bat '.\\mkenv.py --verbose'
ENV_LOC[NODE] = bat (
// The @ prevents Windows from echoing the command itself into the stdout,
// which would corrupt the value of the returned data.
script: '@.\\mkenv.py --env-name',
returnStdout: true
).trim()
}
}
}
}
stage('Clean Samples') {
steps {
echo "Clean ${NODE}"
script {
if (isUnix()) {
sh """. ${ENV_LOC[NODE]}/bin/activate
invoke clean-samples
"""
} else {
bat """CALL ${ENV_LOC[NODE]}\\Scripts\\activate
invoke clean-samples
"""
}
}
}
}
stage('Build Samples') {
steps {
echo "Bootstrap ${NODE}"
script {
if (isUnix()) {
sh """. ${ENV_LOC[NODE]}/bin/activate
invoke build-samples
"""
} else {
bat """CALL ${ENV_LOC[NODE]}\\Scripts\\activate
invoke build-samples
"""
}
}
}
}
stage('Run Samples') {
steps {
echo "Show Conan dependencies ${NODE}"
script {
if (isUnix()) {
sh """. ${ENV_LOC[NODE]}/bin/activate
invoke run-samples
"""
} else {
bat """CALL ${ENV_LOC[NODE]}\\Scripts\\activate
invoke run-samples
"""
}
}
}
}
}
}
}
}
}

0 comments on commit 80ced58

Please sign in to comment.