GitLab Runner执行sudo免密问题及Deb包构建失败求助
GitLab Runner构建Deb包权限问题求助
我是GitLab Runner新手,目标是实现发布新标签时自动构建Deb包,使用macOS系统,按照官方教程完成配置。
初始配置与第一个错误
最初使用的.gitlab-ci.yml文件如下:
# Is performed before the scripts in the stages step before_script: - source /etc/profile # Defines stages which are to be executed stages: - build # Stage "build" run-build: stage: build script: - apt-get install -y libncurses5-dev libglib2.0-dev libgeoip-dev libtokyocabinet-dev zlib1g-dev libncursesw5-dev libbz2-dev - autoreconf -fvi - cp COPYING debian/copyright - dpkg-buildpackage -us -uc - mkdir build - mv ../goaccess*.deb build/ # This stage is only executed for new tags only: - tags # The files which are to be made available in GitLab artifacts: paths: - build/*
执行后出现权限错误(Output 1):
Fetching changes with git depth set to 20... Reinitialized existing Git repository in /home/gitlab-runner/builds/GJ7z2Aym/0/edge_release_management/.git/ Checking out 3d71402b as tag1-test... Skipping Git submodules setup Executing "step_script" stage of the job script 00:00 $ source /etc/profile $ apt-get install -y libncurses5-dev libglib2.0-dev libgeoip-dev libtokyocabinet-dev zlib1g-dev libncursesw5-dev libbz2-dev E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root? Cleaning up project directory and file based variables 00:00 ERROR: Job failed: exit status 1
核心错误提示:
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
尝试解决后的新错误
为解决权限问题,我修改了before_script部分:
# Is performed before the scripts in the stages step before_script: - source /etc/profile - echo "Hello, $GITLAB_USER_LOGIN!" - echo "Hello, $GITLAB_USER_PASSWORD" # - sudo rm /var/cache/apt/archives/lock # - sudo rm /var/lib/dpkg/lock - sudo su
先是尝试删除锁文件无效,改用sudo su后出现新错误(Output 2):
Getting source from Git repository 00:00 Fetching changes with git depth set to 20... Reinitialized existing Git repository in /home/gitlab-runner/builds/GJ7z2Aym/0/edge_release_management/.git/ Checking out 7fbaaf4f as testing4... Skipping Git submodules setup Executing "step_script" stage of the job script 00:00 $ source /etc/profile $ sudo rm /var/cache/apt/archives/lock sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required Cleaning up project directory and file based variables 00:00 ERROR: Job failed: exit status 1
错误提示:
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper sudo: a password is required
进一步尝试仍失败
随后尝试用sudo -S su < $password_secret,并在GitLab变量中配置了$password_secret,但仍报错(Output 3):
Fetching changes with git depth set to 20... Reinitialized existing Git repository in /home/gitlab-runner/builds/GJ7z2Aym/0/edge_release_management/.git/ Checking out 0b8ab538 as 26... Skipping Git submodules setup Executing "step_script" stage of the job script 00:02 $ source /etc/profile $ echo "Hello, $GITLAB_USER_LOGIN!" Hello, user! $ echo "Hello, $GITLAB_USER_PASSWORD" Hello, $ sudo -S su < $password_secret [sudo] password for gitlab-runner: Sorry, try again. [sudo] password for gitlab-runner: sudo: no password was provided sudo: 1 incorrect password attempt Cleaning up project directory and file based variables 00:00 ERROR: Job failed: exit status 1
我还试过Stack Overflow上的方法,因macOS没有usermod改用dscl,但还是出现和Output 3一样的错误。现在试过多种方法都没解决,求帮助。
总结:核心问题是初始的权限错误,后续所有操作都是为解决这个问题但均未成功。
内容的提问来源于stack exchange,提问作者Thor
相关产品推荐
相关产品推荐

