Habrรฉ-แแ แแแแ แ แกแขแแขแแแ แฏแแแแแแกแแก แจแแกแแฎแแ, แแแแ แแ แ แแแแแแแแ แแฆแฌแแ แก แแแแแแแแแแก, แแฃ แ แแแแ แแฃแจแแแแแ แฏแแแแแแกแ แแ แแแแแ แแแแแขแแแ. แแ แแแฅแขแแแแก แจแแฅแแแแก แงแแแแ แแแแฃแแแ แฃแแ แแแกแขแ แฃแแแแขแ, แ แแแแ แแชแแ
แแฆแแก แแ แแก แแ แแแแแแแก แแแแแฌแงแแแขแ: Jenkins 2-แแแ แแฃแจแแแแ แจแแกแแแแจแแแแแ แแฃแจแแแแก
แ แแขแแ แแแแแฌแงแ แแ แแ แแแแแแแก แแแแแแ แแแ?
แ แแแแแ แแแแแแแแแจแ แแแ แ
- แกแแแฃแจแแ แแ แแแก แแแแ แ แแแแแแแแ, แ แแแแแก แแแฌแแแแแ แแแแแแแแแ แแแก แแแแฌแงแแแแแ;
- แแ แกแแแแแก แแแแคแแแฅแขแแแ แแ แแ แแ แแแแแ แแแจแแแแแก แกแฎแแแแแกแฎแแ แแแ แกแแแแก แจแแ แแก;
- แงแแแแ แแแแแแแแแ แก แกแญแแ แแแแ แแแแแแแแแขแแแแก แแแแกแฎแแแแแแฃแแ แแแแ แแแ.
แแ แแก แกแฎแแ แแ แแแแแแแแ, แแแแ แแ แแแขแงแแแ แแแแแกแแแแแก แจแแกแแฎแแ.
แฏแแแแแแกแ แแแแแ แจแ
แแแก แจแแแแแ, แ แแช Docker แแฎแแ แแแ แแแ แแ แแก แฉแแแแงแแแแแแแฃแแ แแแแแแแแ แแแแก แกแแแงแแ แแจแ, แแแแฅแแแก แงแแแแแคแ แแก แแแจแแแแ แจแแกแแซแแแแแแแ Docker-แแก แแแแแงแแแแแแ. แฉแแแ แแแแแกแแแแแ แแ แแก แฏแแแแแแกแ แแงแแแแแก แแแแแ แจแ แแ แจแแแแซแแแก แกแฎแแ แแแแแ แแก แแแแขแแแแแ แแแแก แแแจแแแแ. แแก แแแแฎแแ แฏแแ แแแแแ 2013 แฌแแแก แแแแฌแงแ แกแขแแขแแแจแ โ
แแแแแแ, แแฅแแแ แฃแแ แแแแ แฃแแแ แแแแแแกแขแแแแ แแ แแแแแ Docker แกแแแฃแจแแ แแแแขแแแแแ แจแ แแ แแแแแแกแขแแแแ แแ แคแแแแ /var/run/docker.sock
.
แแฅ แแ แแก Dockerfile-แแก แแแแแแแแ, แ แแแแแแช แแฆแแแฉแแแ แฏแแแแแแกแแกแแแแก.
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 แแแแขแแแแแ แ, แ แแแแแกแแช แจแแฃแซแแแ แจแแแกแ แฃแแแก Docker แแ แซแแแแแแแ แแแกแแแแซแแ แแแแฅแแแแแ.
แแจแแแแแแก แแแงแแแแแ
แชแแขแ แฎแแแก แฌแแ แฏแแแแแแกแก แแแแชแ แจแแกแแซแแแแแแแ แแฆแแฌแแ แ แแแแแกแ แฌแแกแแแ แแแแแงแแแแแแ
แแแจ, แแแแแ, แแแแแ แกแแชแแแจแ แฉแแแแแ แกแแแชแแแแฃแ แ Dockerfile, แ แแแแแแช แจแแแชแแแก แงแแแแ แแแแแแแแแแแก, แ แแแแแแช แแฃแชแแแแแแแแ build-แแกแแแแก. แแ แแแแ, แแแแแ แแแแแแแแแ แก แจแแฃแซแแแ แแแแแแแแแก แแแแแแแ แแแแแ แแแ แแแ แแ แแ แแแฃแฌแแแก OPS-แก แกแแฎแแแแก, แแแแแแกแขแแแแ แแก Node.JS-แแก แแแแแ แแขแฃแแ แแแ แกแแ แฐแแกแขแแ.
FROM node:12.10.0-alpine
RUN npm install yarn -g
แแก build แกแฃแ แแแ แจแแกแแคแแ แแกแแ 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/
แฉแแแ แแฆแแฌแแ แแ แแกแแแแแแแก แแแ แแแ, แแแแ แแ แ แ แแแแจแแ แ แแฅแแก แแแก แฏแแแแแแกแ? แแ แฏแแแแแแกแแก แแแแแขแแแก แจแแฃแซแแแแ แแแฃแจแแแ แแแแแ แแก แแกแแ แกแฃแ แแแแแแแ แแ แแแจแแแแ แแกแแแ แจแแแแแ.
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 แแแแขแแแแแ แแก แแแกแแจแแแแแ, แกแแแแช แฉแแแแก แจแแแแฎแแแแแจแ แแแแแแขแแแแแ แแแแแแแแ แ แแแ แแฅแขแแ แแแก, แ แแแแ แช แแแ แแฅแขแแ แแแจแ แแแแขแแแแแ แแก แจแแแแแ.
แแ แฃแแแ build-แแก แกแแคแแฎแฃแ แแแจแ แฉแแแ แแแแฃแแแแแแ, แแฃ แ แแแแแ แแ แซแแแแแแแ แฃแแแ แจแแกแ แฃแแแแก Docker build แแแแแขแแก แจแแแแแ. แแก แจแแแซแแแแ แแงแแก แแแแแกแแแแ แ, แแแแขแแ แแ แแกแแแ แแแฌแงแแ แแแแแแแชแแแก แแแแแแแแแแก ansible-แแก แแแแแงแแแแแแ.
แฅแแแแแ แแ แแแแแ แแแฉแแแแ แแแแแแ Jenkinsfile, แ แแแแแก แจแแฅแแแ แแแ แขแแแ 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