
แแถแแขแแแแแแแถแ แแแพแแแ แแพ Habre แขแแแธ Jenkins แแแปแแแแแแถแแแแปแแแแแทแ แแถแแแแแแแทแแแแแถแขแแแธแแทแแธแแแ Jenkins แแทแแแแแถแแแแถแ docker แแแแพแแถแแ แงแแแแแแแถแแแแแแแแแแแแแแแทแแแแถแแแขแแแแผแ แแถ , , , แแทแแขแแแแแแแแแแแแขแถแ แแแแแผแแขแแแธแแแแแแแแถแแแ แแแแปแแแปแแ แแแปแแแแแ แปแ Jenkins แแทแ?
แแแแแแแแแถแแแแแแแแแแถแแ แแแแแแแแ แถแ Jenkins 2 แแผแแแแแแพแแถแแแถแแฝแ . แแ แแแแปแแขแแแแแแแแ แแแแปแแ แแแ แแแแแแแแแแแทแแแแแแแแแแแแแปแ แแทแแแแแ แถแแแธแแแแแแแแขแแแแขแถแ แแแแพแแถแแแแแแแฝแแฏแแแถแแ
แ แแแปแขแแแธแแถแแแถแแแแปแแ แถแแแแแแพแแแแแแแแถแแแแแ แถแแแ?
แ แถแแแแถแแแแธแแพแแแ แแแแปแแแแแปแแ แแปแ แแแแแถแแแพแแแแแพแแ แแ แแแแทแแแแถแแแแแแแแแแถแแถแ แแแพแ แแพแแแแแผแแแแแแถแแแแแแแแแแแแแถแแ Node.JS, Gradle, Ruby, JDK แแทแแแแแแแแแแแ แแพแแแถแแแธแแแแกแพแแ แแแปแแแแแแถแแฟแแแแถแแแแแแแแแทแ แแแแแแแแทแแขแถแ แแแแแถแแแถแแแแ แแถแ/แ แถแ แขแแแแแนแแแทแแถแแแแแผแแแแแแทแแแพแขแแแแแทแแถแแแถแแถแแแแแแแทแแธแแแแแแแแแแแแแแแแแแแแแผแ แแถ nvm, rvm แแแปแแแแแแทแแแแแขแแแธแแแถแแแขแแแแบแแแผแแแถแแฝแแแฝแแแแแ แ แพแแแแแแแแแแถแแแถแแแแแแแถแแแแแ แถแ
- แ แแแฝแแแแ แแแพแแแแแแแแแแถแแแแแแแขแแแแขแแทแแแแแแแแแแแ แแแแขแถแแ
- แแถแแแถแแแแแแแแแทแ แแแถแแแแแแแแแแแแแแถแแแแแแแแแถแแแแพแแแถแแแผแ แแแแถ;
- แขแแแแขแแทแแแแแแแแแแแแแผแแแแแผแแแถแแแแแปแแแแถแแแถแแแแแแแแแแถแ
แแถแแแแแ แถแแแแแแแแ แแแปแแแแแแแแปแแแผแแแแแถแแแขแแแแขแแแธแแแแแแแแแถแแ
Jenkins แแ Docker
แแแแแถแแฅแกแผแแแแ Docker แแแแผแแแถแแแแแแพแแกแพแแแแถแแแแขแแ แแแแปแแแทแแแขแแทแแแแแแ แแแแพแแแแขแแแธแแแถแแแขแแแขแถแ แแแแพแแแถแแแถแแแแแแแแพ Docker แ แแแแแแแแแถแแแแแแแแแปแแแบแแแแผแแแถแ Jenkins แแ แแแแปแ Docker แ แพแแขแถแ แแแแพแแแถแ Docker containers แแแแแแแแแ แแแแฝแโแแแโแ แถแแโแแแแพแโแแฝแโแแแแโแแแโแแแแปแโแแแแถแ แขแ แกแฃ แแแแปแโแขแแแแแ โ"แ
แแทแแถแแฑแแแแแแธแขแแแแแแแถแแแแแแแแผแแแแกแพแ Docker แแแแฝแแแถแแ
แแแแปแแแปแแแบแแแแแแแพแแถแแ แพแแแแแแฏแแแถแ /var/run/docker.sock.
แแแแแบแแถแงแแถแ แแแ Dockerfile แแแแแถแแแแแแแแแถแแแแแแถแแ Jenkins แ
FROM jenkins/jenkins:lts
USER root
RUN apt-get update &&
apt-get -y install apt-transport-https
ca-certificates
curl
gnupg2
git
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 &&
usermod -aG docker jenkins
RUN curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
RUN apt-get clean autoclean && apt-get autoremove โyes && rm -rf /var/lib/{apt,dpkg,cache,log}/
USER jenkinsแแผแ แแแแแ แพแ แแพแแแแฝแแแถแ Docker container แแแแขแถแ แแแแแทแแแแแทแแถแแแแแแแแถ Docker แแ แแพแแแถแแแธแแแแถแแแธแแ
แแแแแพแแแถแแแแกแพแ
แแทแแแผแแแแปแแแแถแ Jenkins แแแฝแแแถแแฑแแถแแแพแแแแธแแทแแแแแถแขแแแธแ แแแถแแแแแแแแถแแแแแแแพ แแถแแแแแแแแแแแ แแแแแแแพแฑแแแแถแแถแแแแแฝแแแแแปแแแถแแแแแถแแแแแแผแแแแแแแธแแแถแแแแ แแทแแแแแแถแแปแแแถแแ แแแแปแแแแแถแแแ
แแผแ แแแแ แ แผแแแพแแแถแแ Dockerfile แแทแแแแแฝแแแ แแแแปแแแแแถแแแแแแฝแแแถ แแแแแนแแแถแแแแแแถแแแแแถแแแขแแแแแแ แถแแแถแ แแแแแแถแแแแถแแแถแแแแแ แแทแแธแแแ แขแแแแขแแทแแแแแแแแแแฝแแฏแแขแถแ แแแแ แแแแทแแแแถแแแแแขแถแ แแแแพแแแแแแแแแถแ แ แพแแแนแแแทแแ แถแแแถแ แแแแแพแแปแแฑแแ OPS แแแกแพแแแแแแแถแแแแถแแแแ Node.JS แแ แแพแแแถแแแธแแแแแแแ
FROM node:12.10.0-alpine
RUN npm install yarn -gแแผแแแถแแแแแแพแแแแแแบแแแแแแแแแแแถแแแแแแแแทแแธ Node.JS แแถแแ แแแพแแ แ แปแแแพแแถแงแแถแ แแแ แขแแแแแแแผแแแถแแแผแแแถแแแแแแถแแแแแแแแ JVM แแแแแถแแแแถแแแธแแแแแแ Sonar แแฝแแแแแ แผแแแ แแถแแแแแปแ? แขแแแแแถแแแแแธแแถแแแแแปแแแถแแแแแพแแแพแแแแถแแแถแแปแแแแขแแแแแแแผแแแถแแแแแแถแแแแถแแแฝแแแแแแปแแแแแถแ
FROM adoptopenjdk/openjdk12:latest
RUN apt update
&& apt install -y
bash unzip wget
RUN mkdir -p /usr/local/sonarscanner
&& cd /usr/local/sonarscanner
&& wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
&& unzip sonar-scanner-cli-3.3.0.1492-linux.zip
&& mv sonar-scanner-3.3.0.1492-linux/* ./
&& rm sonar-scanner-cli-3.3.0.1492-linux.zip
&& rm -rf sonar-scanner-3.3.0.1492-linux
&& ln -s /usr/local/sonarscanner/bin/sonar-scanner /usr/local/bin/sonar-scanner
ENV PATH $PATH:/usr/local/sonarscanner/bin/
ENV SONAR_RUNNER_HOME /usr/local/sonarscanner/bin/
แแพแแแถแแแทแแแแแถแขแแแธแแแทแแถแแถแแแแแถแแแฝแแแแแแปแแแแแถ แแแปแแแแแแพ Jenkins แแแแผแแแแแพแขแแแธแแถแแฝแแแถ? แ แพแแแแแถแแแแถแ Jenkins แขแถแ แแแแพแแถแแแถแแฝแแแผแแแถแ Docker แแทแแแแแแพแแแถแแ แแถแแแแแปแแ
stage("Build project") {
agent {
docker {
image "project-build:${DOCKER_IMAGE_BRANCH}"
args "-v ${PWD}:/usr/src/app -w /usr/src/app"
reuseNode true
label "build-image"
}
}
steps {
sh "yarn"
sh "yarn build"
}
}แแแ
แแแแธแแแแถแ agent แแแแพแแแแถแแแแแแแแแแแแแแแแท dockerแแแแแแแแแแขแแแแขแถแ
แแแแแถแแแ
- แแแแแแแแแแแปแแแบแแแแแแกแพแแแถแแแแแแถแแแแแถแแแแแแแแแแแแขแแแ;
- แขแถแแปแแแแแแแแแแแแผแแแถแแแพแแแแธแแแแพแแแถแ build container แแแแแแแปแแแแแธแแแแแแพแ แแพแแแแแแแแแ แแ แปแแแแแแแแถแแแแ แแถแแแแแปแแแปแแแบแแแแ
แ แพแแแ แแแแปแแแแ แถแแแถแแแแแแฝแ แ แพแ แแพแแ แแแขแปแแแแแ แถแแแถแแถแแแแแแแแถแแถแแแแแแแผแแแแแแทแแแแแทแแ แแถแแแแแปแ Docker build agentแ แแแแขแถแ แแถแขแแแธแแแแถแ แแผแ แแแแแแแแปแแแแ แถแแแแแแพแแแถแแแถแแแฑแแแแแแพแแแแถแแแแแแแแทแแธแแแแแแแพ ansible แ
แแถแแแแแแแแแแแแแปแแ แแแแแแ แถแแฏแแแถแ Jenkins แแผแแ แแแแแแแแแทแแธ Node.JS แแถแแแแแขแถแ แแแแแพแแแถแแ
def DOCKER_IMAGE_BRANCH = ""
def GIT_COMMIT_HASH = ""
pipeline {
options {
buildDiscarder(
logRotator(
artifactDaysToKeepStr: "",
artifactNumToKeepStr: "",
daysToKeepStr: "",
numToKeepStr: "10"
)
)
disableConcurrentBuilds()
}
agent any
stages {
stage("Prepare build image") {
steps {
sh "docker build -f Dockerfile.build . -t project-build:${DOCKER_IMAGE_BRANCH}"
}
}
stage("Build project") {
agent {
docker {
image "project-build:${DOCKER_IMAGE_BRANCH}"
args "-v ${PWD}:/usr/src/app -w /usr/src/app"
reuseNode true
label "build-image"
}
}
steps {
sh "yarn"
sh "yarn build"
}
}
post {
always {
step([$class: "WsCleanup"])
cleanWs()
}
}
}แแพแแถแแขแแแธแแพแแกแพแ?
แแผแแขแแแปแแ แแแแแแทแแธแแถแแแแแแแแ แแพแแแถแแแแแแแแถแแแแแ แถแแผแ แแถแแแแแแแ
- แแแแแแแถแแแแแแแ แแถแแแแแแแแแแถแแแแแแผแแแแแปแแแแทแแแแถแแแแแผแแแถแแแถแแแแแแแแแแแแแนแ 10 - 15 แแถแแธแแแแปแแแฝแแแแแแแแ
- แแแทแแแแถแแแแแแพแแแแแแแทแแธแแแแขแถแ แแแแพแแแแแแแแแถแแแถแแแแแแปแ แ แถแแแแถแแแแธแขแแแแขแถแ แแแแแพแแแถแแถแแแทแแธแแแแแ แแพแแปแแแแแผแแแแแแแปแแแแแแแแแแแขแแแแ
- แแทแแแถแแแแแ แถแแถแแฝแแแนแแแถแแแแแแแแแทแ แแแถแแแแแแแแแแแแแแถแแแงแแแแแแแฝแแแแแแปแแแแแถ;
- แแแแแแแถแแแแแแแแแแพแแถแแแแขแถแ แแแแแทแแแถแแแถแแแแแแ
แแแแแแแแแถแแแแแแแแฝแแแถแแบแแถแแแแ แแทแแแถแแแแแแแ แ แพแแขแแปแแแแถแแฑแแแขแแแแแแฝแแแถแแขแแแแแแแแแแแแแฝแแ แแแฝแแ แแถแ แแแแแทแแ แผแแแถแแแพแแกแพแแแแแแทแ แแพแแแแแแแแแแ แแนแแแถแแแแแแแแถแแถแแแแแแแแแถแแแแถแแแฝแแแแแแปแแแแแถ แแแปแแแแแฅแกแผแแแแแแถแแแถแแแถแแถแแถแแถแแนแแแแแผแแแถแแแถแแแแแแถแแทแ แแ แ แพแแขแแแแขแแทแแแแแแแแแแฝแแฏแแขแถแ แแแแพแแแพแแขแแแธแแแแแแแแถแแแแแ แถแแแถแ แแแแแแถแแแแแแพแแแถแแแถแแแแแแแแแแถแแแ
แขแแแแแแขแถแ แแแแพแแผแแแถแแแแแแแแปแแแถแแแแแแผแแแถแแแแแแแ . แแแแแแแถแแแขแแแแแแผแแแถแแแพแแแทแแแถแแแธแแถแแแแ .
แแแแแแแปแแแแแแแขแแแแแแแแ แแถแแแทแแถแแแแถแแฝแแแถแแแพแแกแพแแขแแแธแแถแแแแแพแแแแถแแแแแแถแแแแถแแแ แแพแแแถแแแธแแแแแธแ แแแแถแ แแพแแแแธแแปแแฑแแแแแแปแแแแแถแแแแแแแแแแแพแแแแแแทแแธแแแแฝแ . แแแปแแแแแแแแปแแแนแแแทแแถแแขแแแธแแฟแแแแแแ แแแแขแแถแแแ
แแแแแ: www.habr.com
