@Library('cadoles') _

pipeline {
    agent {
        dockerfile {
            label 'docker'
            filename 'Dockerfile'
            dir 'misc/jenkins'
        }
    }

    stages {
        stage('Cancel older jobs') {
            steps {
                script {
                    def buildNumber = env.BUILD_NUMBER as int
                    if (buildNumber > 1) milestone(buildNumber - 1)
                    milestone(buildNumber)
                }
            }
        }

        stage('Run unit tests') {
            steps {
                script {
                    withCredentials([
                        usernamePassword([
                            credentialsId: 'forge-jenkins',
                            usernameVariable: 'GIT_USERNAME',
                            passwordVariable: 'GIT_PASSWORD'
                        ])
                    ]) {
                        sh '''
                        git config --global credential.https://forge.cadoles.com.username "$GIT_USERNAME"
                        git config --global credential.https://forge.cadoles.com.helper '!f() { test "$1" = get && echo "password=$GIT_PASSWORD"; }; f'

                        export GOPRIVATE=forge.cadoles.com/arcad/edge
                        make test
                        '''
                    }
                }
            }
        }

        stage('Release') {
            when {
                anyOf {
                    branch 'master'
                    branch 'develop'
                }
            }
            steps {
                script {
                    withCredentials([
                        usernamePassword([
                            credentialsId: 'forge-jenkins',
                            usernameVariable: 'GITEA_RELEASE_USERNAME',
                            passwordVariable: 'GITEA_RELEASE_PASSWORD'
                        ])
                    ]) {
                        sh """
                        export MKT_PROJECT_VERSION_BRANCH_NAME=${env.BRANCH_NAME}
                        make mktools
                        make gitea-release
                        """
                    }

                    String currentVersion = sh(script: "MKT_PROJECT_VERSION_BRANCH_NAME=${env.BRANCH_NAME} make version", returnStdout: true).trim()

                    build(
                        job: "../emissary-firmware/${env.GIT_BRANCH}",
                        parameters: [
                            [$class: 'StringParameterValue', name: 'emissaryRelease', value: currentVersion]
                        ],
                        wait: false
                    )
                }
            }
        }
    }

    post {
        always {
            cleanWs()
        }
    }
}