localnet
@localnet

Как решить проблему выполнения пайплайна?

RPMBUILD + GITLAB CI. /bin/sh: /dev/`ps -p $$ -o tty | tail -n 1`: Permission denied.

Раньше собирал rpm-ки от рута ручками и все было нормально, но, это было не очень правильно и тем более, сейчас нужно собирать RPM черз Gitlab CI, автоматизация таки, и там работает раннер от пользователя gitlab-runner, от рута его запускать не очень хочется, да и проблема не в этом видимо. Проблема заключается в том, что RPM собирается вполне нормально сама по себе, но, в конце происходит какая-то внутренняя логика rpmbuild, и он пытается обратиться к /dev/pts/ и переключитьс в него. И вот в этом загвоздка, выдает:

+ umask 022
+ cd /home/gitlab-runner/rpm/BUILD
+ exit 0
+ umask 022
+ cd /home/gitlab-runner/rpm/BUILD
+ /usr/bin/rm -rf /home/gitlab-runner/rpm/BUILDROOT/ftest-2.3-5.x86_64
++ dirname /home/gitlab-runner/rpm/BUILDROOT/ftest-2.3-5.x86_64
+ /usr/bin/mkdir -p /home/gitlab-runner/rpm/BUILDROOT
+ /usr/bin/mkdir /home/gitlab-runner/rpm/BUILDROOT/ftest-2.3-5.x86_64
+ echo BUILD
+ exit 0
+ umask 022
+ cd /home/gitlab-runner/rpm/BUILD
+ echo INSTALL
+ cp -rp /home/gitlab-runner/rpm/SOURCES/ftest/data/struct/opt/ /home/gitlab-runner/rpm/BUILDROOT/ftest-2.3-5.x86_64
+ install -p -m 0644 /home/gitlab-runner/rpm/SOURCES/ftest/data/testfile.txt /home/gitlab-runner/rpm/BUILDROOT/ftest-2.3-5.x86_64/opt/ftest
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-suse
+ umask 022
+ cd /home/gitlab-runner/rpm/BUILD
+ rm -rf /home/gitlab-runner/rpm/BUILDROOT/ftest-2.3-5.x86_64
+ exit 0
/bin/sh: /dev/`ps -p $$ -o tty | tail -n 1`: Permission denied


И тут получается, что залогинившись по ssh сам руками от gitlab-runner, мой pts принадлежит мне и все завершается успехом, а вот Gitlab CI видимо не использует pts, а свой API, там в ответ на команду падающую (/dev/`ps -p $$ -o tty | tail -n 1`) возвращается:

TT
?


вместо например такого, когда логинишься по ssh:

TT
pts/0


Я наверное не смогу как-то повлиять на сам rpmbuild, ибо содержание rpm spec файла само не влияет на это. Или смогу? Проблема в том, что rpmbuild пытается вызвать свой pts, и возвращает не нулевой exit code из-за ошибки, от этого ломается пайплайн в Gitlab CI, так как получает exit code 126, при этом RPM у меня готова, но, с заваленным пайплайном. У меня пока в мыслях только прописать в команде игнорирование exit code 126, но это такое себе

что можно придумать?
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы