GitLab CI/CD 管道在构建 Debian 软件包时找不到 GCC



TL;DR-为什么此管道找不到gcc

在以下管道中,作业失败,因为它在PATH中找不到gcc。这是使用官方GCC docker图像。我还将此工作流用于另一个项目。

image: gcc
variables:
DEBVER: "1"
VERSION: "0.0.1-alpha"
JSON_PARSER_MIRROR: "https://gitlab.com/oxr463/json-parser/-/jobs/484303930/artifacts/raw"
deb:
stage: build
before_script:
- apt update && apt install -y debhelper devscripts libpam0g-dev
- curl -O "${JSON_PARSER_MIRROR}/libjsonparser1.1_1.1.0-1_amd64.deb"
- curl -O "${JSON_PARSER_MIRROR}/libjsonparser-dev_1.1.0-1_amd64.deb"
- dpkg -i libjsonparser1.1_1.1.0-1_amd64.deb
- dpkg -i libjsonparser-dev_1.1.0-1_amd64.deb
- mkdir -p build
script:
- which gcc
- export PATH="${PATH}:/usr/local/bin"
- tar cvzf "../pam-oauth2_${VERSION}.orig.tar.gz" --exclude='.git*' --exclude='*.deb' .
- mv ../*.orig.tar.gz .
- tar -xf *.orig.tar.gz -C build/
- cd build
- debuild -us -uc -d -i'(.*)'
after_script:
- rm -rf build
artifacts:
paths:
- "*.deb"

来源:https://gitlab.com/oxr463/pam_oauth2/-/blob/debian-fix/.gitlab-ci.yml

$ debuild -us -uc -d -i'(.*)'
dpkg-architecture: warning: cannot determine CC system type, falling back to default (native compilation)
dpkg-buildpackage -us -uc -ui -d -i(.*)
dpkg-buildpackage: info: source package pam-oauth2
dpkg-buildpackage: info: source version 0.0.1-alpha-1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by Lucas Ramage <ramage.lucas@protonmail.com>
dpkg-architecture: warning: cannot determine CC system type, falling back to default (native compilation)
dpkg-source -i(.*) --before-build .
dpkg-buildpackage: info: host architecture amd64
debian/rules clean
dh clean
dh_auto_clean
make -j1 clean
make[1]: Entering directory '/builds/oxr463/pam_oauth2/build'
rm *.o *.so pam_test pam_oauth2
rm: cannot remove '*.o': No such file or directory
rm: cannot remove '*.so': No such file or directory
rm: cannot remove 'pam_test': No such file or directory
rm: cannot remove 'pam_oauth2': No such file or directory
make[1]: [Makefile:43: clean] Error 1 (ignored)
make[1]: Leaving directory '/builds/oxr463/pam_oauth2/build'
dh_clean
dpkg-source -i(.*) -b .
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building pam-oauth2 using existing ./pam-oauth2_0.0.1-alpha.orig.tar.gz
dpkg-source: info: building pam-oauth2 in pam-oauth2_0.0.1-alpha-1.debian.tar.xz
dpkg-source: info: building pam-oauth2 in pam-oauth2_0.0.1-alpha-1.dsc
debian/rules build
make: 'build' is up to date.
debian/rules binary
dh binary
dh_update_autotools_config
debian/rules override_dh_auto_configure
make[1]: Entering directory '/builds/oxr463/pam_oauth2/build'
dh_auto_configure -- --with-pam-dir=/lib/x86_64-linux-gnu/security
make[1]: Leaving directory '/builds/oxr463/pam_oauth2/build'
dh_auto_build
make -j1
make[1]: Entering directory '/builds/oxr463/pam_oauth2/build'
gcc -g -O2 -fdebug-prefix-map=/builds/oxr463/pam_oauth2/build=. -fstack-protector-strong -Wformat -Werror=format-security -Werror -fPIC -I/system/apps/pam/latest/include -I/system/apps/curl/latest/include -I/system/apps/json-parser/latest/include -Wdate-time -D_FORTIFY_SOURCE=2  -c -o pam_oauth2_core.o pam_oauth2_core.c
make[1]: gcc: Command not found
make[1]: *** [<builtin>: pam_oauth2_core.o] Error 127
make[1]: Leaving directory '/builds/oxr463/pam_oauth2/build'
dh_auto_build: make -j1 returned exit code 2
make: *** [debian/rules:6: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
debuild: fatal error at line 1182:
dpkg-buildpackage -us -uc -ui -d -i(.*) failed

来源:https://gitlab.com/oxr463/pam_oauth2/-/jobs/485171400

参考:

  • https://hub.docker.com/_/gcc
  • https://gitlab.com/oxr463/json-parser/-/blob/debian/.gitlab-ci.yml

debuild手册页(在环境变量部分(显示:

由于环境变量通常会影响包的构建无意中,debuild通过移除所有环境变量,TERM、HOME、LOGNAME、GNUPGHOME除外,PGPPATH、GPG_AGENT_INFO、FAKEROOTKEY、DEB_*、(C、CPP、CXX、LD和F( FLAGS变量及其_APPEND对应项和区域设置变量LANG和LC_*。如果未设置TERM,则将其设置为"dumb",并且PATH设置为"/usr/sbin://usr/bin:/sbin:/bin:/usr/bin/X11"。

参考:https://manpages.debian.org/jessie/devscripts/debuild.1.en.html

使用debuild --prepend-path=/usr/local/bin ...

最新更新