#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
ними? Если это так, вы должны удалить его…