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:0.0.7-jdk11' }
    }
    parameters {
            string(name: 'TAG_NAME', defaultValue: '', description: '[MANDATORY] Name of the Tag to create the branch from')
            string(name: 'BRANCH_NAME', defaultValue: '', description: '[MANDATORY] The desired name of the new branch')
    }
    stages {
        stage('Release') {
            steps {
                sshagent(
                    credentials: ['pegasys-admin-github-ssh-private-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')
                        sh "./branch-from-tag.sh ${params.TAG_NAME} ${params.BRANCH_NAME}"
                    }
                }
            }
        }
    }
}
