Bitnami Jenkins VM: почему конвейеру не хватает разрешений при попытке извлечь git-репо при запуске во второй раз? - PullRequest
0 голосов
/ 06 июля 2018

это мой первый вопрос здесь, так что, пожалуйста, имейте в виду. =) * * Тысяча одна

Я использую виртуальную машину Bitnami Jenkins на своей локальной машине для игры с Дженкинсом, а позже я хочу представить ее в своей компании.

Я установил конвейер через Jenkinsfile в репозитории так:

pipeline {
    agent {
        docker {
            image 'apmyp1990/lamp'
            args '-u root'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'service mysql start'
                sh 'mysql -u root -proot -e "DROP DATABASE IF EXISTS text_db; CREATE DATABASE test_db;"'
                sh 'mysql -u root -proot -e "show databases;"'
                sh 'mysql -u root -proot -e "use test_db; source database/2018-06-26.sql;"'
                sh 'composer update'
                sh 'nightwatch'
            }
        }
    }
}

Когда я впервые запустил этот конвейер, он не смог запустить docker, но я просто добавил пользователя tomcat (jenkins работает с этим пользователем) в группу Docker. Во время первого запуска все в порядке (несмотря на то, что Nightwatch не запускается - но это не проблема). Когда я пытаюсь запустить этот конвейер во второй раз, я получаю следующую ошибку:

Started by user admin
Obtained jenkinsfile from git https://bitbucket.org/{PROJECTNAME}.git
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in /opt/bitnami/apps/jenkins/jenkins_home/workspace/{Project}
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
 > /opt/bitnami/git/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /opt/bitnami/git/bin/git config remote.origin.url https://bitbucket.org/{PROJECTNAME}.git # timeout=10
Fetching upstream changes from https://bitbucket.org/{PROJECTNAME}.git
 > /opt/bitnami/git/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials Arturs Bitbucket Account
 > /opt/bitnami/git/bin/git fetch --tags --progress https://bitbucket.org/{PROJECTNAME}.git +refs/heads/*:refs/remotes/origin/*
 > /opt/bitnami/git/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > /opt/bitnami/git/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision a9acc7b417f410ad4b3b8b73aeb905e7ace7df2b (refs/remotes/origin/master)
 > /opt/bitnami/git/bin/git config core.sparsecheckout # timeout=10
 > /opt/bitnami/git/bin/git checkout -f a9acc7b417f410ad4b3b8b73aeb905e7ace7df2b
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
hudson.plugins.git.GitException: Command "/opt/bitnami/git/bin/git checkout -f a9acc7b417f410ad4b3b8b73aeb905e7ace7df2b" returned status code 1:
stdout: 
stderr: error: unable to unlink old 'web/typo3conf/ext/dce/Classes/Components/BackendView/SimpleBackendView.php': Permission denied
error: unable to unlink old 'web/typo3conf/ext/dce/Classes/Components/DceContainer/Container.php': Permission denied
{much more of permission denied errors}

Previous HEAD position was 606c9db lamp:latest
HEAD is now at a9acc7b add root user

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2002)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$800(CliGitAPIImpl.java:72)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:2301)
Caused: hudson.plugins.git.GitException: Could not checkout a9acc7b417f410ad4b3b8b73aeb905e7ace7df2b
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$9.execute(CliGitAPIImpl.java:2325)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1236)
    at org.jenkinsci.plugins.workflow.steps.scm.SCMStep.checkout(SCMStep.java:113)
    at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:85)
    at org.jenkinsci.plugins.workflow.steps.scm.SCMStep$StepExecutionImpl.run(SCMStep.java:75)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
    at hudson.security.ACL.impersonate(ACL.java:290)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

Затем я проверил разрешения через bash (см. Связанные изображения, потому что я не могу копировать из Debian Bash): корневой каталог моего проекта

веб-каталог

Чего мне не хватает, чтобы правильно запустить конвейер? Я не понимаю, почему у Дженкинса проблема с разрешениями - Дженкинс работает с пользователем tomcat, так что все должно быть в порядке?

Edit:

Я разместил неверный файл jenkinsfile, в разделе агента должна быть команда args '-u root' (см. Выше). Теперь я понял, что запуск конвейера с этой командой вызывает ошибку. Но когда я не использую эту команду, я не могу запустить сервер MySQL из-за отсутствия разрешений. При первом запуске конвейера (только что созданный конвейер) без args '-u root' происходит сбой при запуске сервера mysql, но следующий запуск конвейера с помощью команды args не вызовет никаких ошибок. Есть какие-нибудь предложения?

Заранее спасибо!

...