Сборка RPM на Jenkins терпит неудачу на более поздней фиктивной версии, чем на успешной рабочей станции - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь собрать и развернуть RPM-пакет от Jenkins на основе некоторого стандартного файла спецификаций из другого проекта, который был написан ранее, чем мой.По некоторым причинам, я получаю ошибки сборки, когда я пытаюсь собрать или выпустить этот пакет из Jenkins.

+ rm -rf /builddir/build/BUILDROOT/component-prefix-blah-api-proxy-0.1.0.16-1.bbc.el7.x86_64
BUILDSTDERR: ++ dirname /builddir/build/BUILDROOT/component-prefix-blah-api-proxy-0.1.0.16-1.bbc.el7.x86_64
RPM build errors:
BUILDSTDERR: error: File not found by glob: /builddir/build/BUILDROOT/component-prefix-blah-api-proxy-0.1.0.16-1.bbc.el7.x86_64/var/www/cgi-bin/*
BUILDSTDERR:     File not found by glob: /builddir/build/BUILDROOT/component-prefix-blah-api-proxy-0.1.0.16-1.bbc.el7.x86_64/var/www/cgi-bin/*
Child return code was: 1
EXCEPTION: [Error()]
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/mockbuild/trace_decorator.py", line 96, in trace
    result = func(*args, **kw)
  File "/usr/lib/python2.7/site-packages/mockbuild/util.py", line 734, in do_with_status
    raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode)
Error: Command failed: 
 # /usr/bin/systemd-nspawn -q -M b88888b933974fe283e8497d165b5369 -D /var/lib/mock/epel-7-x86_64-9876/root --capability=cap_ipc_lock --bind=/tmp/mock-resolv.kXeD1i:/etc/resolv.conf --setenv=LANG=en_GB.UTF-8 --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOSTNAME=mock --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=HOME=/builddir --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PS1=<mock-chroot> \s-\v\$  -u mockbuild bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/blah-api-proxy.spec

Есть другая ошибка, которая возникла ранее, чем та, что выше в файле RPM build.logчто я не думаю, что это главная ошибка, поскольку я видел, что это происходило в других хорошо работающих сборках до

BUILDSTDERR: Failed to create directory /var/lib/mock/epel-7-x86_64-9876/root//sys/fs/selinux: Read-only file system

Я пытался установить флаг --old-chroot при выполнении макета.Однако я начал получать две ошибки -

ERROR: Exception(/var/lib/jenkins/workspace/component-prefix-blah-api-proxy/blah-api-proxy/SRPMS/component-prefix-blah-api-proxy-0.1.0.15-1.bbc.el7.src.rpm) Config(epel-7-x86_64) 0 minutes 11 seconds и

 # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/blah-api-proxy.spec
Version: 0.1.0%{?BUILD_NUMBER:.%{BUILD_NUMBER}}
Release: 1%{?dist}
Group: System Environment/Daemons
License: Internal COY use only
Summary: BLAH API Proxy
Source0: src.tar.gz
Requires: blah-blah-ssl-services-blah-staff jq
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildArch: x86_64

%description
BLAH API Proxy

%prep
%setup -q -n src

%build

%install
mkdir -p %{buildroot}
cp -r * %{buildroot}/

%clean
rm -rf %{buildroot}

%pre

%files
%defattr(0755, root, root, 0755)
/var/www/cgi-bin/*

%defattr(-, root, root, 0755)
/etc/bake-scripts/*

%defattr(0755, root, root, 0755)
/etc/bake-scripts/blah-api-proxy

Примечание: blah-api-proxy - это каталог, содержащий конфигурации прокси-сервера Apache.

Структура папок src выглядит следующим образом:

src/
├── etc
│   └── bake-scripts
│       ├── blah-api-proxy
│       └── public-endpoints
└── var
    └── www
        └── cgi-bin

Буду очень признателен, если мне помогут в решении этой проблемы.Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Я очень благодарен @msuchy за помощь в решении этой проблемы.Его рекомендация помогла мне быстро определить основную причину.

Проблема заключалась в том, что один из каталогов /var/, указанный в разделе %files spec file, был исключен из репозитория git.gitignore файл.Удаление каталога из файла .gitignore решило эту проблему

Другая необходимая вещь, которую мы сделали, это указала репозитории rpm, на которые опирался наш спецификационный файл, в нашей системе выпуска (не Jenkins).

0 голосов
/ 12 мая 2019

Состояние ошибки (при обработке раздела% файлов), что %{buildroot}/var/www/cgi-bin/ не существует.

Итак, вы думаете , что вы что-то копируете, но реальность другая.

Добавьте в конце раздела %install: find %{buildroot}/ и снова запустите сборку, и вы увидите, что на самом деле положил cp.

...