เจเฉเจจเจเจฟเฉฐเจธ เจฌเจพเจฐเฉ เจนเฉเจฌเจฐเฉ 'เจคเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฒเฉเจ เจนเจจ, เจชเจฐ เจเฉเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเฉ เจนเจจ เจเจฟ เจเฉเจจเจเจฟเฉฐเจธ เจ
เจคเฉ เจกเฉเจเจฐ เจเจเฉฐเจ เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจเฅค เจธเจพเจฐเฉ เจชเฉเจฐเจธเจฟเฉฑเจง เจชเฉเจฐเฉเจเฉเจเจ เจฌเจฟเจฒเจก เจเฉเจฒ เจเจฟเจตเฉเจ
เจ
เฉฑเจ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจเฉฑเจ เจนเฉฑเจฒ เจนเฉ: เจเฉเจจเจเจฟเฉฐเจธ 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