Запустите плагин Jenkins после сборки - PullRequest
0 голосов
/ 30 июня 2018

У меня есть следующий конвейер:

pipeline {
    agent any
    stages {
        stage('test') {
            steps {
                sh 'echo "im a build"'
            }
        }
    }
    post {
        always {
            myPlugin()
        }
    }
}

А теперь в myPlugin я хочу получить результат сборки. Попробуйте сделать это так:

public class MyPluginPublisher extends Notifier implements SimpleBuildStep {
    @DataBoundConstructor
    public MyPluginPublisher() {
    }

    @Override
    public MyPluginDescriptor getDescriptor() {
        return (MyPluginDescriptor) super.getDescriptor();
    }

    @Override
    public boolean needsToRunAfterFinalized() {
        return true;
    }

    @Override
    public Action getProjectAction(AbstractProject<?, ?> project) {
        return null;
    }

    @Override
    public void perform(@Nonnull Run<?, ?> build, @Nonnull FilePath filePath, @Nonnull Launcher launcher, @Nonnull TaskListener taskListener) throws IOException {
        taskListener.getLogger().format("build result " + build.getResult() + "\n");
        taskListener.getLogger().format("isBuilding " + build.isBuilding() + "\n");
    }
}

Как видите, я использую метод needsToRunAfterFinalized, чтобы сигнализировать, что плагин должен ждать окончания сборки, но результат сборки равен нулю.

Выводится следующий журнал формы вывода:

build result null
isBuilding true

что мне сделать, чтобы запустить этот плагин после завершения сборки и получить результат.

1 Ответ

0 голосов
/ 30 июня 2018

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

pipeline {
agent any
stages {
    stage('test') {
        steps {
            sh 'echo "im a build"'
        }
    }
}
post {
    success {
        echo 'build success'
    }
    failure {
        echo 'build failed'
    }
 }
}
...