Докеру Jenkins Pipeline и maven отказано в разрешении - PullRequest
0 голосов
/ 19 сентября 2019

у меня есть сервер с CentOS и установленным докером. У меня есть установщик док. Jenkins.

dockerfile

FROM jenkins/jenkins

USER root

# Install ansible
RUN curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" && python get-pip.py

RUN pip install -U ansible

# Install Docker

RUN apt-get update && \
apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get -y install docker-ce

# COmpose

RUN curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

RUN usermod -aG docker jenkins

USER jenkins

файл составления docker:

version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/docker
    build:
      context: pipeline
    ports:
      - "8090:8080"
    volumes:
      - "$PWD/jenkins_home:/var/jenkins_home"
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      - net
networks:
  net:

я пытаюсь построить конвейер jenkins, используя svn, maven, docker.

мой файл конвейера jenkins:

pipeline {

    agent any
    stages {

        stage('Build') {
            steps {
                sh '''
                    ./jenkins/build/mvn.sh mvn -B -DskipTests clean package
                    ./jenkins/build/build.sh
                '''
            }

            post {
                success {
                   archiveArtifacts artifacts: 'java-app/target/*.jar', fingerprint: true
                }
            }
        }
    }
}

пути правильные, но файл сценария оболочки всякий раз, когда он берется из svnrep, он не может выполнить его в контейнере jenkins.

я получаю следующую ошибку:

./jenkins/build/mvn.sh mvn -B -DskipTests clean package
/var/jenkins_home/workspace/pipeline-console-test@tmp/durable-0d637bb3/script.sh: 2: /var/jenkins_home/workspace/pipeline-console-test@tmp/durable-0d637bb3/script.sh: ./jenkins/build/mvn.sh: Permission denied

я должен дать разрешение на выполнение вручную командой в контейнере:

chmod +x shell_script_file.sh

UID одинаковы на сервере и в контейнере. Но UID не совпадает, когда взят из SVN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...