Как запустить пользовательскую цель maven в Jenkins?

#maven #jenkins-pipeline

#maven #дженкинс-конвейер

Вопрос:

Я использую декларативный конвейер Дженкинса:

 pipeline{
    agent : any
    environment {
        APPSCAN_CLOUD = credentials("APPSCAN_CLOUD")
        APPSCAN_CLOUD_ID = credentials("APPSCAN_CLOUD_ID")
        MAVEN_SETTINGS = credentials("MAVEN_SETTINGS")
    }
    tools {
        maven "maven-3.6.3"
        jdk "jdk8"
        git "Default"
    }
    stages{
        stage("AppScan"){
            steps{
                echo "======== here is the show ========"
                sh "./run_appscan.sh"
            }
        }
    }
}
 

который запускает сценарий оболочки:

 #!/bin/bash
# Run the appscan security check
mvn -s $MAVEN_SETTINGS 
-DskipTests 
-DappId= $APPSCAN_CLOUD_ID 
-DappscanKey=$APPSCAN_CLOUD_USR 
-DappscanSecret=$APPSCAN_CLOUD_PSW 
com.hcl.security:appscan-maven-plugin:analyze
 

Когда я запускаю скрипт локально, он ведет себя так, как ожидалось. Однако в конвейере Jenkins я получаю сообщение об ошибке:

[ОШИБКА] Неизвестная фаза жизненного цикла « **** «. Вы должны указать действительную фазу жизненного цикла или цель в формате <plugin-prefix>:<goal> или <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal> . Доступные этапы жизненного цикла: проверка, инициализация, генерация источников, обработка источников, генерация ресурсов, обработка ресурсов, компиляция, обработка классов, генерация тестовых источников, процесс тестирования источников, генерация тестовых ресурсов, процесс тестирования ресурсов, тестовая компиляция, процесс-тест-классы, тест, подготовка-пакет, пакет, предварительная интеграция-тест, интеграция-тест, постинтегрирование-тест, проверка, установка, развертывание, предварительная очистка, очистка, постчистка, предварительный сайт, сайт, постсайт, сайт-развертывание.

-> [Справка 1] org.apache.maven.lifecycle.Исключение LifecyclePhaseNotFoundException: неизвестная фаза жизненного цикла « **** «. Вы должны указать действительную фазу жизненного цикла или цель в формате <plugin-prefix>:<goal> или <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal> . Доступные этапы жизненного цикла: проверка, инициализация, генерация источников, обработка источников, генерация ресурсов, обработка ресурсов, компиляция, обработка классов, генерация тестовых источников, процесс тестирования источников, генерация тестовых ресурсов, процесс тестирования ресурсов, тестовая компиляция, процесс-тест-классы, тест, подготовка-пакет, пакет, предварительная интеграция-тест, интеграция-тест, постинтегрирование-тест, проверка, установка, развертывание, предварительная очистка, очистка, постчистка, предварительный сайт, сайт, постсайт, сайт-развертывание. в org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateLifecycleMappings (DefaultLifecycleExecutionPlanCalculator.java:248)

Я попытался поместить все команды в одну строку и поставить стимул первым перед -D параметрами. Результат не изменился.

Стандартные цели, такие как compile или package или site , работают должным образом.

Похоже, что цель каким-то образом замаскирована. Что я пропускаю?

Комментарии:

1. Сложно.. вы уверены, что плагин доступен в Jenkins?

2. Да, это есть

3. Одна из ваших переменных $ расширяется неожиданным образом, например, содержит пробелы?

4. Это тоже было одним из моих подозрений. Я так не думаю, но я продолжу расследование. Я также проверю, смогу ли я подключить плагин к обычной фазе.

5. Есть ли в вашем скрипте пробел -DappId= $APPSCAN_CLOUD_ID между appId=HER ними? Если это так, вы должны удалить его…