Шаг оценки конвейера Jenkins с slackSend - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь выполнить оценку внутри блока configFileProvider, внутри блока шагов, внутри конвейера. Вот полный код.

.

pipeline {
agent any
environment {
    GIT_CREDS = credentials('GIT')
    }

stages {
    stage ('Load Repos') {
    steps {
        cleanWs notFailBuild: true
        sh """
        env
        git clone "https://$GIT_CREDS@$GIT_URL
        git clone "https://$GIT_CREDS@$CONTENT_URL_SHORT"
        """
    }
    }

    stage ('Run Content Build Script') {
    steps {
        slackSend channel: 'notif', message: "Started Content Build and Validate for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", tokenCredentialId: '<Token>'
        configFileProvider(
        [configFile(fileId: '605dae22-d459-4c9a-8d3c-f88d305195aa', variable: 'script')]) {
            sh(returnStatus: true, script: """python3.6 $script""")
            if (returnStatus != 0) {
                currentBuild.result = 'FAILED'
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
            }
            else {
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
            }
        }
    }
    }

Блок, который меня интересует:

configFileProvider(
        [configFile(fileId: '605dae22-d459-4c9a-8d3c-f88d305195aa', variable: 'script')]) {
            sh(returnStatus: true, script: """python3.6 $script""")
            if (returnStatus != 0) {
                currentBuild.result = 'FAILED'
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
            }
            else {
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
            }
        }

В основном я хочу оценить успешность сценария на основе состояния возврата и отправить слабое сообщение на основена что.Я пробовал несколько разных способов, например, пытался настроить запуск сценария как оценку, например:

if (python3.6 "$ script) {......

Это тоже не сработало, любые предложения будут с благодарностью.

1 Ответ

0 голосов
/ 07 декабря 2018

Почти верно.(1) вам нужно поместить логику if внутри шага скрипта.(2) вам нужно сохранить результат шага sh и использовать его в if.

configFileProvider(
    [configFile(fileId: '605dae22-d459-4c9a-8d3c-f88d305195aa', variable: 'script')]) {
        script {
            def int buildStatus = sh(returnStatus: true, script: """python3.6 $script""")
            if (buildStatus != 0) {
                currentBuild.result = 'FAILED'
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
            }
            else {
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
            }

        }
    }

Попробуйте и посмотрите, как это работает.

...