[英]GitLab CI/CD Pipeline - Run Linux commands interactively on GitLab Runner
[英]GitLab CI/CD Pipeline can't find GCC when building Debian package
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
參考:
debuild
手冊頁說(在 ENVIRONMENTAL VARIABLES 部分):
由於環境變量會影響 package 的構建,因此 debuild 通常會在無意中通過刪除除 TERM、HOME、LOGNAME、GNUPGHOME、PGPPATH、GPG_AGENT_INFO、FAKEROOTKEY、DEB_* 之外的所有環境變量來清理環境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...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.