Я установил Jenkins на машине с Ubuntu 16.04. Сам Дженкинс не запускается в контейнере. То, что я хочу сделать, это просто позвонить, yarn install
используя изображение узла. Итак, вот мой Jenkinsfile:
pipeline {
agent any
stages {
stage('install node modules...') {
agent { docker 'node' }
steps {
sh 'cd /path/to/package.json; yarn install'
}
}
}
}
Довольно просто, правда?
Пользователь / группа jenkins есть 112:116
, а uid контейнера узла 1000
, следовательно, процесс пряжи (который запускается как пользователь узла 1000) не может делать свои вещи, например mkdir /.config
.
Я попытался раскрутить контейнер узла, передавая аргумент -u 1000
, он столкнулся с проблемами прав доступа при попытке создания надежных каталогов.
Похоже, тот или иной вид проблемы, как я могу обойти это?
Дженкинс журналы:
Ниже, где сборка начинается и терпит неудачу.
[Pipeline] sh
[Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2] Running shell script
+ docker inspect -f . node
.
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 112:116 -w /var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2 -v /var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2:/var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2:rw,z -v /var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2@tmp:/var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat node
[Pipeline] {
[Pipeline] sh
[Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2] Running shell script
+ cd /path/to/package.json
+ yarn install
yarn install v0.24.6
error An unexpected error occurred: "EACCES: permission denied, mkdir '/.config'".
info If you think this is a bug, please open a bug report with the information provided in "/var/lib/jenkins/workspace/Pipeline_Test_Jenkins_test-4JTFYMX7KSJY6ZH44VINNGEB7WH2D2HWYZN5ABF6O32O2HBQJYXQ@2/<path>/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
[Pipeline] }
$ docker stop --time=1 c1147934ea689f71a449e486282db03338b12182368def31bdf8e8cf179ab46a
$ docker rm -f c1147934ea689f71a449e486282db03338b12182368def31bdf8e8cf179ab46a
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE
Ответы:
У меня была такая же проблема с узлом. Дело в том, что файлы в контейнере принадлежат «root: root». Попробуйте добавить аргументы docker
-u root:root
:источник
pip install
командой в результатеCould not install packages due to an EnvironmentError: [Errno 13] Permission denied
, упоминая его здесь , чтобы помочь людям , которые ищут , что даже с помощью.virtualenv
илиpip install --user
не исправить эту проблему для меня)У меня сегодня была похожая проблема, хотя и с другим изображением.
Ссылка: https://docs.docker.com/storage/tmpfs/ Таким образом, вы не должны беспокоиться о каких-либо утечках безопасности или файлах, которые присутствуют после разрушения контейнера внутри jenkins.
источник
buildEnv.inside("-u 0") {}
решил мою проблему. Но тогда рабочее пространство будет содержать каталог и файлы, принадлежащие пользователю root, которые пользователь Jenkins не сможет удалить при следующем запуске при очистке рабочего пространства, поэтому я добавил егоsh "sudo chown jenkins: -R \$PWD/"
в начале конвейера.источник