Подтвердить что ты не робот

Дисплейное имя/ярлык Jenkins Pipeline sh

С плагином Jenkins 2 Pipeline существует полезная функция, позволяющая быстро просмотреть контуры трубопровода и состояние этапов, включая вывод журнала.

Однако, если вы используете шаг "Шелл script" (sh), похоже, нет способа маркировать это script полезным именем, поэтому на дисплее отображается только длинный список "Shell script" (показано на рисунке ниже).

Как назначить полезное имя или как я могу использовать другой шаг для достижения того же эффекта?

введите описание изображения здесь

4b9b3361

Ответ 1

Обновление февраля 2019:

Согласно ответу gertvdijk, приведенному ниже, теперь можно назначить дополнительную метку шагу sh, начиная с v2.28, и для тех, кто еще не может выполнить обновление, также существует обходной путь. Пожалуйста, проверьте его ответ для деталей и комментариев!


Предыдущая версия (наведите курсор на это):

Насколько я знаю, в настоящее время это невозможно. В трекере Jenkins существует проблема шага сценария имени (псевдонима) или псевдонима, аналогичная вашей ситуации:

Шаг sh добавляет шаг "Shell Script" в конвейер. Однако таких шагов может быть несколько, включая шаги из различных плагинов (например, Docker), что затрудняет их различение. Возможно, нам следует добавить необязательный параметр в sh, чтобы указать имя или псевдоним, которые затем будут отображаться на этапах конвейера. например, следующий шаг может быть для npm, который будет отображаться как "Shell script: npm" в представлении конвейера.

sh cmd:"npm install", name: "npm"
Тем не менее, он был закрыт как дубликат старой разрешающей стадии, чтобы работать как помеченный блок, который был недавно исправлен и, кажется, включен в v2.2 плагина-стадии-шага-конвейера (см. Список изменений).

Кажется, что этапы теперь могут быть вложенными, и они появятся в таблице представлений, но я не думаю, что вы ищете.

Ответ 2

В версии 2. 28+ модуля "Трубопроводные узлы и процессы" теперь доступна опция label для шага sh с JENKINS-55410:

ярлык (необязательно)

Метка, отображаемая в виде шага конвейера и детали синего океана для шага вместо типа шага. Таким образом, представление является более значимым и специфичным для конкретной области, а не технической.

  • Тип: Строка

Например:

sh script: "echo foo", label: "my step"

Если вы еще не можете выполнить обновление, другой вариант - использовать плагин Labeled Pipeline Steps.

Ответ 3

Ну, отчаянные времена требуют отчаянных мер. Если вы можете использовать Blue Ocean, вы можете использовать параллельный шаг с одной строкой выполнения.

        parallel(
            "This is my step name" : {
                sh 'env'
            }
        )

Ответ 4

sh "echo foo", label: "my step"

Не работает для меня,

Это должно быть:

sh script: "echo foo", label: "my step"

fooobar.com/questions/17070437/...

Ответ 5

Попробуйте это, хороший обходной путь

import org.jenkinsci.plugins.workflow.cps.CpsThread
import org.jenkinsci.plugins.workflow.actions.LabelAction


    def test() {
    def xyz = "Prints PWD"
    try {
        sh script: 'pwd'
    }
    finally {
        CpsThread.current().head.get().addAction(new LabelAction("Shell script ${xyz} "))
    }
}

Ответ 6

Я тоже пытался использовать одно и то же, но в другом контексте. Моя команда не хочет, чтобы несколько логарифмов журнала логарифмировались по лог-интерфейсу, поэтому я попытался использовать несколько команд UNIX в одной строке например   jenkinsPipeline.sh "echo \"PATH: $PATH\";java -version;echo PROJ DIR = $projectDirectory;env > env.txt;cat env.txt;ls && cd $projectDirectory && gradle --refresh-dependencies clean assemble" И он работал на трубопровод Дженкинса script в рамках работы Дженкинса. но если я использую общую библиотеку для расширения конвейера и той же стратегии, то он не работает или не создает несколько окон, как обычно, для sh log в пользовательском интерфейсе.

Ответ 7

Это не идеально, но я обычно нахожу достаточным добавить шаг эха, который описывает то, что пытается выполнить следующий шаг bat или sh. Кто-то, кто никогда раньше этого не видел, должен быстро это понять.

echo "Testing with Ping"
bat "ping www.stackoverflow.com"
echo "Getting IPs"
bat "nslookup www.stackoverflow.com"

Ответ 8

После превосходного ответа я создал небольшую оболочку сценария, которая инкапсулирует шаг sh в блоке try/finally.

Основное использование:

wrapper.script script: 'echo the invisible script', returnStdout: true, stepName: "description #1"

Покажет "описание # 1" вместо общего текста.

Полный исходный код и инструкции по установке здесь https://github.com/ael-computas/jenkins-script-wrapper

Может быть легко установлен как библиотека на вашем сервере jenkins.