Ошибка: использование скрипта Bash внутри декларативного Jenkinsfile - PullRequest
0 голосов
/ 05 марта 2019

Я сталкиваюсь с некоторыми проблемами при написании кода bash-скрипта внутри Jenkinsfile.UserCase: я храню код нескольких инструментов в структуре папок в одном репозитории GIT.Я хочу, чтобы всякий раз, когда какой-либо разработчик вносил изменения в отдельную папку, сборка запускалась для кода, связанного с конкретной папкой.
Моя логика: выберите два последних коммита, найдите разницу.На основании различий сделайте сборку в соответствии с измененными файлами.Я написал скрипт bash, и он отлично работает на Linux.Переместив его в Jenkinsfile, я столкнулся с некоторой ошибкой.Это может быть отличным специфическим. Нужна помощь в этих

#!/bin/bash
git log -2 --no-merges | grep commit > git_commit.txt
cat git_commit.txt
echo 'hi'
i=0;
while read -r line;
do
    commit[$i]=`echo "$line" | awk '{print \$2}'`
    i=$((i+1))
done < git_commit.txt

Это не полный код.Я получаю сообщение об ошибке при назначении значения:

commit[$i]=`echo "$line" | awk '{print \$2}'`

Дайте мне знать, если вам нужны дополнительные объяснения, чтобы помочь.

1 Ответ

0 голосов
/ 05 марта 2019

Я только что поймал это.Это была глупая ошибка при назначении var в bash.Я добавляю eval в назначении вывода команды awk.Таким образом, мое изменение кода:

eval commit[$i]=`echo "$line" | awk '{print \$2}'`

Не знаю, насколько мне помогает eval, но это решено сейчас.

...