เดเตเตปเดเดฟเตปเดธเดฟเดจเต เดเตเดฑเดฟเดเตเดเต เดนเดฌเตเดฐเตเดฏเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดฒเตเดเดจเดเตเดเดณเตเดฃเตเดเต, เดเดจเตเดจเดพเตฝ เดเตเตปเดเดฟเตปเดธเตเด เดกเตเดเตเดเตผ เดเดเดจเตเดฑเตเดฎเดพเดฐเตเด เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดเตเดฐเตเดเตเดเด. เดชเตเดฒเตเดณเตเดณ เดเดฒเตเดฒเดพ เดเดจเดชเตเดฐเดฟเดฏ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดฌเดฟเตฝเดกเต เดเตเดณเตเดเดณเตเด
เดเดจเตเดจเต เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเต เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเตเดฃเตเดเต: เดเตเดเตเดเดฟเตปเดธเต 2 เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดฎเดฟเดเดเตเดเดคเดพเดฃเต
เดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเต เดเดพเตป เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟเดฏเดคเต?
เดเดเตเดเตพ เดเดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดเดฏเดคเดฟเดจเดพเตฝ
- เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเดพเตป เดฎเดฑเดเตเดเตเดจเตเดจ เดเดฐเต เดตเดฒเดฟเดฏ เดฑเตบเดเตเด;
- เดเดฐเต เดฑเตบเดเตเดฎเดฟเดจเตเดฑเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดคเดฟเดชเตเดชเตเดเตพ เดคเดฎเตเดฎเดฟเตฝ เดตเตเดฐเตเดฆเตเดงเตเดฏเดเตเดเดณเตเดฃเตเดเต;
- เดเดฐเต เดกเตเดตเดฒเดชเตเดชเตผเดเตเดเตเด เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดเดเดเดเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฃเต.
เดฎเดฑเตเดฑเต เดชเตเดฐเดถเตโเดจเดเตเดเดณเตเดฃเตเดเต, เดชเดเตเดทเต เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเดพเด.
เดกเตเดเตเดเดฑเดฟเดฒเต เดเตเดเตเดเดฟเตปเดธเต
เดกเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต เดฒเตเดเดคเตเดคเต เดกเตเดเตเดเตผ เดเดชเตเดชเตเตพ เดจเดจเตเดจเดพเดฏเดฟ เดธเตเดฅเดพเดชเดฟเดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ, เดกเตเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดเดจเตเดคเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เดกเตเดเตเดเดฑเดฟเตฝ เดเตเดเตเดเดฟเตปเดธเต เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเดเดฏเตเด เดฎเดฑเตเดฑเต เดกเตเดเตเดเตผ เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดพเดฃเต เดเดจเตเดฑเต เดชเดฐเดฟเดนเดพเดฐเด. เด เดเตเดฆเตเดฏเด 2013 เตฝ " เดเดจเตเดจ เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดตเตเดฃเตเดเตเด เดเตเดฆเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ.
เดเตเดฐเตเดเตเดเดคเตเดคเดฟเตฝ, เดจเดฟเดเตเดเตพ เดเดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเตฝ เดกเตเดเตเดเตผ เดคเดจเตเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเต เดซเดฏเตฝ เดฎเตเดฃเตเดเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต /var/run/docker.sock
.
เดเตเดเตเดเดฟเตปเดธเดฟเดจเต เดตเตเดฃเตเดเดฟ เดตเดจเตเดจ เดกเตเดเตเดเตผเดซเดฟเตฝ เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดคเดพ.
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
เด เดเตเดเดจเต, เดนเตเดธเตเดฑเตเดฑเต เดฎเตเดทเตเดจเดฟเตฝ เดกเตเดเตเดเตผ เดเดฎเดพเตปเดกเตเดเตพ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดกเตเดเตเดเตผ เดเดฃเตเดเตเดฏเตเดจเตผ เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเต.
เดธเดเตเดเตเดเดฐเดฃเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเด
เด
เดงเดฟเดเด เดคเดพเดฎเดธเดฟเดฏเดพเดคเต เดเตเดเตเดเดฟเตปเดธเต เด
เดคเดฟเดจเตเดฑเต เดจเดฟเดฏเดฎเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดตเดฟเดตเดฐเดฟเดเตเดเดพเตป เด
เดตเดธเดฐเด เดฒเดญเดฟเดเตเดเต
เด เดคเดฟเดจเดพเตฝ เดจเดฎเตเดเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดกเตเดเตเดเตผเดซเดฏเตฝ เดถเตเดเดฐเดฃเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต เดเดเดพเด, เด เดคเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดฒเตเดฌเตเดฐเดฑเดฟเดเดณเตเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเด. เดเดคเตเดตเดดเดฟ, เดกเดตเดฒเดชเตเดชเตผเดเตเดเต เดคเดจเตเดจเต เดเดตเตผเดคเตเดคเดฟเดเตเดเดพเดตเตเดจเตเดจ เด เดจเตเดคเดฐเตเดเตเดทเด เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด เดเตเดเดพเดคเต เดนเตเดธเตเดฑเตเดฑเดฟเตฝ Node.JS-เดจเตเดฑเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดชเดคเดฟเดชเตเดชเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป OPS-เดจเตเดเต เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ.
FROM node:12.10.0-alpine
RUN npm install yarn -g
เด เดฌเดฟเตฝเดกเต เดเดฎเตเดเต เดฎเดฟเดเตเด Node.JS เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเตเด เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเตเดฃเดพเตผ เดธเตเดเดพเดจเตผ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดเตเดเตเดณเตเดณ เดเดฐเต JVM เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเดฎเตเดเต เดเดตเดถเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ เดเดจเตเดคเตเดเตเดฏเตเดฏเตเด? เด เดธเดเดฌเตเดฒเดฟเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดเดเดเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดตเดพเดคเดจเตเดคเตเดฐเตเดฏเดฎเตเดฃเตเดเต.
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/
เดเดเตเดเตพ เด เดธเดเดฌเตเดฒเดฟ เด เดจเตเดคเดฐเตเดเตเดทเด เดตเดฟเดตเดฐเดฟเดเตเดเต, เดชเดเตเดทเต เดเตเดเตเดเดฟเตปเดธเต เดเดคเตเดฎเดพเดฏเดฟ เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเต? เดเตเดเตเดเดฟเตปเดธเต เดเดเดจเตเดฑเตเดฎเดพเตผเดเตเดเต เด เดคเตเดคเดฐเด เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเตพเดเตเดเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเด เด เดต เดเดจเตเดคเดฐเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด.
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
เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดฟเดเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเด:
- เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดฟเดเตฝ เดจเดฏเด เด เดจเตเดธเดฐเดฟเดเตเดเต เด เดธเดเดฌเตเดฒเดฟ เดเดฃเตเดเตเดฏเตเดจเดฑเดฟเดจเตเดฑเต เดชเตเดฐเต;
- เดฌเดฟเตฝเดกเต เดเดฃเตเดเตเดฏเตโเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ, เดจเดฎเตเดฎเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตพ เดจเดฟเดฒเดตเดฟเดฒเต เดกเดฏเดฑเดเตโเดเดฑเดฟ เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดฐเต เดกเดฏเดฑเดเตโเดเดฑเดฟเดฏเดพเดฏเดฟ เดฎเตเดฃเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดฌเดฟเตฝเดกเต เดเดเตเดเดเตเดเดณเดฟเตฝ เดกเตเดเตเดเตผ เดฌเดฟเตฝเดกเต เดเดเดจเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดเดคเตเดเตเดเต เดเดฎเดพเตปเดกเตเดเตพ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต. เดเดคเต เดเดจเตเดคเตเด เดเดเดพเด, เด เดคเดฟเดจเดพเตฝ เดเดพเตป เด เตปเดธเดฟเดฌเดฟเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดจเตเดฏเดพเดธเดตเตเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ 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