void tryAddKnownHost(String hostUrl){ // ssh-keygen -F ${hostUrl} will fail (in bash that means status code != 0) if ${hostUrl} is not yet a known host def statusCode = sh script:"ssh-keygen -F ${hostUrl}", returnStatus:true if(statusCode != 0){ sh "mkdir -p ~/.ssh" sh "ssh-keyscan ${hostUrl} >> ~/.ssh/known_hosts" } } pipeline { agent { docker { image 'pegasyseng/pantheon-build-jdk8:0.0.4' } } parameters { string(name: 'BRANCH_NAME', defaultValue: 'master', description: '[MANDATORY] The name of the branch to create the release from') string(name: 'RELEASE_VERSION', defaultValue: '', description: '[OPTIONAL] When empty: defaults to the current project version') string(name: 'NEXT_VERSION', defaultValue: '', description: '[OPTIONAL] When empty: defaults to next patch version after current project version') } stages { stage('Release') { steps { sshagent( credentials: ['pegasys-admin-github-ssh-private-key'] ) { withCredentials([ usernamePassword( credentialsId: 'pegasys-bintray', usernameVariable: 'BINTRAY_USER', passwordVariable: 'BINTRAY_KEY' ) ]) { withEnv([ 'GIT_COMMITTER_NAME="PegaSys Admin"', 'GIT_COMMITTER_EMAIL="pegasys.manager@gmail.com"', 'GIT_AUTHOR_NAME="PegaSys Admin"', 'GIT_AUTHOR_EMAIL="pegasys.manager@gmail.com"' ]) { tryAddKnownHost('github.com') script{ releaseVersion = '' if( params.RELEASE_VERSION?.trim() ){ releaseVersion = "-Prelease.releaseVersion=${params.RELEASE_VERSION}" } nextVersion = '' if( params.NEXT_VERSION?.trim() ){ nextVersion = "-Prelease.newVersion=${params.NEXT_VERSION}" } } sh "./gradlew release -Prelease.useAutomaticVersion=true -Prelease.branch=${params.BRANCH_NAME} ${releaseVersion} ${nextVersion}" } } } } } } }