Nui nā ʻatikala ma Habré e pili ana iā Jenkins, akā he liʻiliʻi e wehewehe i nā hiʻohiʻona o ka hana ʻana o Jenkins a me nā mea hana docker. ʻO nā mea hana hana kaulana a pau e like me
I kēia lā aia kahi hoʻonā i ka pilikia: He maikaʻi ʻo Jenkins 2 i ka hana pū me
No ke aha wau i hoʻomaka ai e hoʻoponopono i kēia pilikia?
ʻOiai mākou i ka hui
- ka nui o ka manawa holo e poina ai nā mea hoʻomohala e hoʻomaʻemaʻe;
- aia nā paio ma waena o nā mana like ʻole o nā manawa holo like;
- Pono kēlā me kēia mea hoʻomohala i nā ʻāpana like ʻole.
Aia nā pilikia ʻē aʻe, akā e haʻi wau iā ʻoe e pili ana i ka hopena.
Jenkins ma Docker
No ka mea ua hoʻokumu maikaʻi ʻia ʻo Docker i ka honua hoʻomohala, kokoke i nā mea āpau e holo me Docker. ʻO kaʻu hopena e loaʻa iā Jenkins i Docker a hiki iā ia ke holo i nā pahu Docker ʻē aʻe. Ua hoʻomaka ʻia kēia nīnau i ka makahiki 2013 ma ka ʻatikala "
I ka pōkole, pono ʻoe e hoʻokomo iā Docker iā ia iho i kahi pahu hana a kau i ka faila /var/run/docker.sock
.
Eia kahi laʻana Dockerfile i huli ʻia no 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
No laila, loaʻa iā mākou kahi pahu Docker hiki ke hoʻokō i nā kauoha Docker ma ka mīkini hoʻokipa.
Hoʻonohonoho kūkulu
ʻAʻole i liʻuliʻu i loaʻa iā Jenkins ka manawa e wehewehe i kāna mau lula e hoʻohana ana
No laila e hoʻokomo i kahi Dockerfile kūikawā i loko o ka waihona ponoʻī, kahi e loaʻa ai nā hale waihona puke āpau e pono ai no ke kūkulu ʻana. ʻO kēia ala, hiki i ka mea hoʻomohala iā ia iho ke hoʻomākaukau i kahi kaiapuni hou a ʻaʻole pono e noi iā OPS e hoʻokomo i kahi mana kikoʻī o Node.JS ma ka host.
FROM node:12.10.0-alpine
RUN npm install yarn -g
He kūpono kēia kiʻi kūkulu no ka hapa nui o nā noi Node.JS. He aha inā, no ka laʻana, pono ʻoe i kahi kiʻi no kahi papahana JVM me kahi scanner Sonar i hoʻokomo ʻia i loko? Hiki iā ʻoe ke koho i nā ʻāpana āu e pono ai no ka hui ʻana.
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/
Ua wehewehe mākou i ke kaiapuni hui, akā he aha ka pili o Jenkins me ia? A hiki i nā ʻelele Jenkins ke hana pū me ia mau kiʻi Docker a kūkulu iā lākou i loko.
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"
}
}
Kuhikuhi agent
hoohana waiwai docker
kahi e hiki ai iā ʻoe ke kuhikuhi:
- ka inoa o ka pahu hui e like me kāu kulekele inoa;
- pono nā manaʻo hoʻopaʻapaʻa e holo i ka pahu kūkulu, kahi i kā mākou hihia ke kau nei mākou i ka papa kuhikuhi o kēia manawa ma ke ʻano he papa kuhikuhi i loko o ka ipu.
A i loko o nā papa hana e hōʻike nei mākou i nā kauoha e hoʻokō ai i loko o ka mea hana hale Docker. Hiki paha kēia i kekahi mea, no laila ke hoʻomaka nei au i ka hoʻohana ʻana i ka hoʻohana ʻana i ka ansible.
Ma lalo iho makemake wau e hōʻike i kahi Jenkinsfile maʻamau i hiki i kahi noi Node.JS maʻalahi ke kūkulu.
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()
}
}
}
He aha i hana ai?
Mahalo i kēia ʻano, ua hoʻoponopono mākou i kēia mau pilikia:
- Hoʻemi ʻia ka manawa hoʻonohonoho hoʻonohonoho kaiapuni i 10 - 15 mau minuke no kēlā me kēia papahana;
- kahi kaiapuni kūkulu hou ʻia, no ka mea hiki iā ʻoe ke kūkulu i kēia ala ma kāu kamepiula kūloko;
- ʻaʻohe pilikia me nā paio ma waena o nā ʻano like ʻole o nā mea hana hui;
- mau wahi hana maʻemaʻe ʻaʻole paʻa.
ʻO ka hoʻonā pono'ī he maʻalahi a maopopo a hiki iāʻoe ke loaʻa kekahi mau mea maikaʻi. ʻAe, ua piʻi iki ka paepae komo i ka hoʻohālikelike ʻana i nā kauoha maʻalahi no nā hui, akā i kēia manawa aia kahi hōʻoia e kūkulu mau ʻia a hiki i ka mea hoʻomohala ke koho i nā mea āpau e pono ai no kāna kaʻina hana.
Hiki iā ʻoe ke hoʻohana i ke kiʻi aʻu i hōʻiliʻili ai
I ka wā e kākau ana i kēia ʻatikala, ua kū mai kahi kūkākūkā e pili ana i ka hoʻohana ʻana i nā ʻelele ma nā kikowaena mamao i ʻole e hoʻouka i ka master node me ka hoʻohana ʻana i kahi plugin.
Source: www.habr.com