у меня есть сервер с 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.