Tha mòran artaigilean air Habré mu Jenkins, ach chan eil mòran a’ toirt cunntas air eisimpleirean air mar a tha Jenkins agus riochdairean docker ag obair. A h-uile inneal togail pròiseict mòr-chòrdte mar
An-diugh tha fuasgladh ann don duilgheadas: tha Jenkins 2 math air a bhith ag obair leis
Carson a thòisich mi air an duilgheadas seo fhuasgladh?
Leis gu bheil sinn ann an companaidh
- tòrr ùine ruith a dhìochuimhnich luchd-leasachaidh a ghlanadh;
- tha còmhstri eadar diofar dhreachan de na h-aon amannan ruith;
- Feumaidh gach leasaiche seata eadar-dhealaichte de phàirtean.
Tha duilgheadasan eile ann, ach leig dhomh innse dhut mun fhuasgladh.
Jenkins ann an Docker
Leis gu bheil Docker a-nis stèidhichte gu math ann an saoghal leasachaidh, faodar cha mhòr rud sam bith a ruith le bhith a’ cleachdadh Docker. Is e am fuasgladh agam Jenkins a bhith ann an Docker agus a bhith comasach air soithichean Docker eile a ruith. Thòisich a’ cheist seo air ais ann an 2013 san artaigil “
Ann an ùine ghoirid, cha leig thu leas ach Docker fhèin a chuir a-steach ann an soitheach obrach agus am faidhle a chuir suas /var/run/docker.sock
.
Seo eisimpleir Dockerfile a thionndaidh a-mach airson 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
Mar sin, fhuair sinn inneal Docker as urrainn òrdughan Docker a chuir an gnìomh air an inneal aoigheachd.
Tog suidheachadh
Chan eil o chionn fhada fhuair Jenkins an cothrom cunntas a thoirt air na riaghailtean aige a’ cleachdadh
Mar sin cuiridh sinn Dockerfile sònraichte anns an stòr fhèin, anns am bi na leabharlannan uile a tha riatanach airson an togail. San dòigh seo, faodaidh an leasaiche fhèin àrainneachd ath-aithris ullachadh agus cha bhith aige ri iarraidh air OPS dreach sònraichte de Node.JS a chuir a-steach air an òstair.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Tha an ìomhaigh togail seo freagarrach airson a’ mhòr-chuid de thagraidhean Node.JS. Dè ma tha, mar eisimpleir, gu bheil feum agad air ìomhaigh airson pròiseact JVM le sganair Sonar na bhroinn? Faodaidh tu na co-phàirtean a tha a dhìth airson co-chruinneachadh a thaghadh.
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/
Thug sinn cunntas air àrainneachd an t-seanaidh, ach dè a th’ aig Jenkins ri dhèanamh leis? Agus faodaidh riochdairean Jenkins obrachadh le ìomhaighean Docker mar sin agus an togail a-staigh.
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"
}
}
Stiùiridh agent
a’ cleachdadh seilbh docker
far an urrainn dhut a shònrachadh:
- ainm an t-soithich cruinneachaidh a rèir do phoileasaidh ainmeachaidh;
- argamaidean a dh’ fheumar gus an soitheach togail a ruith, far am bi sinn a’ cur suas an eòlaire gnàthach mar eòlaire taobh a-staigh an t-soithich.
Agus mu thràth anns na ceumannan togail tha sinn a’ nochdadh dè na h-òrdughan a bu chòir a chuir an gnìomh taobh a-staigh àidseant togail Docker. Faodaidh seo a bhith mar rud sam bith, agus mar sin bidh mi cuideachd a’ cur air bhog cleachdadh tagraidh a’ cleachdadh ansible.
Gu h-ìosal tha mi airson faidhle Jenkins coitcheann a shealltainn a dh'fhaodas tagradh Node.JS sìmplidh a thogail.
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()
}
}
}
Dè a thachair?
Taing don dòigh seo, tha sinn air na duilgheadasan a leanas fhuasgladh:
- tha ùine rèiteachaidh co-chruinneachadh àrainneachd air a lughdachadh gu 10 - 15 mionaidean gach pròiseact;
- àrainneachd togail tagraidh gu tur ath-aithris, oir faodaidh tu a thogail san dòigh seo air a’ choimpiutair ionadail agad;
- chan eil duilgheadasan ann le còmhstri eadar diofar dhreachan de dh’ innealan cruinneachaidh;
- an-còmhnaidh àite-obrach glan nach bi clogged.
Tha am fuasgladh fhèin sìmplidh agus follaiseach agus leigidh e leat cuid de bhuannachdan fhaighinn. Tha, tha an stairsneach inntrigidh air a dhol suas beagan an taca ri òrdughan sìmplidh airson co-chruinneachaidhean, ach a-nis tha gealltanas ann gum bi e an-còmhnaidh air a thogail agus faodaidh an leasaiche fhèin a h-uile dad a tha riatanach airson a phròiseas togail a thaghadh.
Faodaidh tu cuideachd an ìomhaigh a chruinnich mi a chleachdadh
Fhad ‘s a bha mi a’ sgrìobhadh an artaigil seo, dh ’èirich deasbad mu bhith a’ cleachdadh àidseantan air frithealaichean iomallach gus nach luchdaich am prìomh nód a ’cleachdadh plugan
Source: www.habr.com