Как я могу остановить Jenkins от сброса прав пользователей после каждой сборки? - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть проект NodeJS 'hello world', который я пытаюсь построить на новой установке Jenkins (работающей на Ubuntu 18.04.3 LTS на сервере Digital Ocean).У меня ограниченный опыт работы с Linux, поэтому, пожалуйста, дайте мне знать, что мне здесь не хватает.

Сборка Jenkins "execute shell":

whoami
npm install
./script/test

Вывод консоли Jenkins:

Started by user twulz
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/node-app
No credentials specified
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/Twulz/node-app.git # timeout=10
Fetching upstream changes from https://github.com/Twulz/node-app.git
 > git --version # timeout=10
 > git fetch --tags --progress -- https://github.com/Twulz/node-app.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 81d9f909cfd34cd5eb65a123dd9f2a1e67686512 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 81d9f909cfd34cd5eb65a123dd9f2a1e67686512
Commit message: "Solve vulnerabilities"
 > git rev-list --no-walk 81d9f909cfd34cd5eb65a123dd9f2a1e67686512 # timeout=10
[node-app] $ /bin/sh -xe /tmp/jenkins4626689890347957662.sh
+ whoami
jenkins
+ npm install
audited 12356 packages in 4.203s
found 0 vulnerabilities

+ ./script/test
/tmp/jenkins4626689890347957662.sh: 4: /tmp/jenkins4626689890347957662.sh: ./script/test: Permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE

Так что я думаю, что проблема в том, что у пользователя jenkins нет разрешения на выполнение тестового скрипта / var / lib / jenkins / workspace / script / test.

В командной строке я запустил следующие команды, чтобы попытаться изменить разрешения:

$cd /var/lib/jenkins/workspace/node-app/script
$ls -l test
-rw-r--r-- 1 jenkins jenkins 51 Sep 22 07:30 test
$sudo chmod -R 757 /var/lib/jenkins/workspace/node-app
$sudo systemctl restart jenkins
$ls -l test
-rwxr-xrwx 1 jenkins jenkins 51 Sep 22 07:35 test

Затем выбрал «Build Now» в моем проекте jenkins, сразу после того, как я снова запустил:

$ls -l test
-rw-r--r-- 1 jenkins jenkins 51 Sep 22 07:50 test

Я также пытался дать рекурсивные разрешения всей папке jenkins или только тестовому файлу, но оба по-прежнему не удавались: sudo chmod -R 757 /var/lib/jenkins или sudo chmod -R 757 /var/lib/jenkins/workspace/node-app/script/test

Я повторно применил изаново сохранил мою конфигурацию в jenkins, как было предложено в другом потоке, но изменений не было.

Итак, что-то в процессе сборки сбрасывает разрешения - как я могу убедиться, что пользователь jenkins сохраняет права доступа для запуска этогосценарий

1 Ответ

0 голосов
/ 24 сентября 2019

Итак, я нашел ответ, надеюсь, это поможет другим - git также сохраняет права на исполняемый файл в GitHub, поэтому в моем случае каждый раз, когда Jenkins извлекал последний код, он перезаписывал разрешения на то, что было сохранено в git-репо.Первоначально я работал в Windows, поэтому я не знал, что это будет проблемой.

Чтобы решить эту проблему, мне просто нужно было клонировать репозиторий, изменить разрешения и зафиксировать снова:

$git clone https://github.com/Twulz/node-app.git
$sudo chmod -R 757 node-app
$cd node-app/
$git add .
$git status
$git commit -m "Update execute permissions"
$git push
...