
Tha mòran artaigilean ann air Habr mu Jenkins, ach chan eil mòran aâ toirt cunntas air eisimpleir de mar a bhios riochdairean Jenkins agus Docker ag obair. Tha a h-uile inneal togail phròiseactan mòr-chòrdte mar⌠, , , agus faodaidh feadhainn eile a h-uile cĂ il a thogail ann an soithichean. Ach dè mu dheidhinn Jenkins?
An-diugh tha fuasgladh ann airson na trioblaid: tha Jenkins 2 math air obrachadh le San artaigil seo, tha mi airson mo eòlas a cho-roinn agus sealltainn dhut mar as urrainn dhut seo a dhèanamh leat fhèin.
Carson a thòisich mi air fuasgladh fhaighinn air an duilgheadas seo?
Leis gu bheil sinn anns aâ chompanaidh Leis gu bheil sinn aâ cleachdadh measgachadh de theicneòlasan, feumaidh sinn diofar dhreachan de Node.JS, Gradle, Ruby, JDK, agus feadhainn eile a chumail air an inneal togail. Ach gu tric chan eil còmhstri dreachan ri sheachnadh. Ged a dhâ fhaodadh tu a bhith ceart a rĂ dh gu bheil diofar mhanaidsearan dreachan ann leithid nvm agus rvm, chan eil iad an-còmhnaidh furasta, agus tha na duilgheadasan aca fhèin aig na fuasglaidhean seo:
- meud mòr de ruith-Úine a dhÏochuimhnicheas luchd-leasachaidh a ghlanadh;
- tha còmhstri ann eadar diofar dhreachan den aon ruith-Úine;
- 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 stèidhichte gu math a-nis ann an saoghal an leasachaidh, faodar cha mhòr a h-uile cĂ il a ruith le Docker. Is e am fuasgladh agam Jenkins a bhith agam ann an Docker agus a bhith comasach air soithichean Docker eile a ruith. Chaidh dèiligeadh ris aâ cheist seo an toiseach ann an 2013 san artaigil "".
Ann an Ăšine ghoirid, chan fheum thu ach Docker fhèin a stĂ ladh anns aâ chiste-obrach agus am faidhle a chuir suas. /var/run/docker.sock.
Seo eisimpleir den Dockerfile a thà inig às dèidh sin 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 jenkinsMar sin, fhuair sinn soitheach Docker as urrainn òrdughan Docker a chuir an gnÏomh air an inneal aoigheachd.
Suidheachadh togail
Chan eil fada bho chionn fhada, fhuair Jenkins comas air na riaghailtean aige a mhĂŹneachadh le bhith aâ cleachdadh co-chĂ radh, a tha ga dhèanamh furasta an sgriobt togail atharrachadh agus a stòradh san stòr-dĂ ta.
Mar sin, cuiridh sinn Dockerfile sònraichte anns an stòras-dĂ ta fhèin, anns a bheil na leabharlannan uile a dhâ fheumar airson togail. San dòigh seo, faodaidh an leasaiche Ă rainneachd ath-aithris ullachadh gun a bhith ag iarraidh air OPS dreach sònraichte de Node.JS a stĂ ladh air an aoigh.
FROM node:12.10.0-alpine
RUN npm install yarn -gTha an ĂŹomhaigh togail seo freagarrach airson aâ mhòr-chuid de thagraidhean Node.JS. Ach dè ma tha, mar eisimpleir, feum agad air ĂŹomhaigh JVM airson pròiseact le sganair Sonar togte a-steach? Tha saorsa agad na pĂ irtean a dhâ fheumas tu airson an togail 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/
Tha sinn air an Ă rainneachd togail a mhĂŹneachadh, ach dè tha Jenkins aâ ciallachadh leis? Faodaidh riochdairean Jenkins obrachadh leis na h-ĂŹomhaighean Docker seo agus togail annta.
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Ăšireadh agent aâ cleachdadh na seilbhe docker, far am faod thu sònrachadh:
- ainm aâ chiste-chruinneachaidh a rèir do phoileasaidh ainmeachaidh;
- argamaidean a tha a dhĂŹth gus an soitheach togail a ruith, far a bheil sinn nar cĂšis-ne aâ cur suas an eòlaire lĂ ithreach mar eòlaire taobh a-staigh an t-soithich.
Agus anns na ceumannan togail, bidh sinn aâ sònrachadh dè na h-òrdughan a ruitheas sinn taobh a-staigh Ă idseant togail Docker. Faodaidh seo a bhith na rud sam bith, agus mar sin bidh mi cuideachd aâ ruith cleachdaidhean aplacaidean le Ansible.
Gu h-ĂŹosal tha mi airson faidhle Jenkins coitcheann a shealltainn as urrainn 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()
}
}
}Agus dè thachair?
Aâ cleachdadh an dòigh seo, fhuair sinn fuasgladh air na duilgheadasan a leanas:
- tha an Ăšine a bheir e airson an Ă rainneachd togail a rèiteachadh air a lĂšghdachadh gu 10â15 mionaidean gach pròiseact;
- Ă rainneachd togail aplacaidean a ghabhas ath-aithris gu tur, oir faodar a thogail air coimpiutair ionadail cuideachd;
- chan eil duilgheadasan ann le còmhstri eadar diofar dhreachan de innealan togail;
- à ite-obrach glan an-còmhnaidh nach fàs ro thrang.
Tha am fuasgladh fhèin sĂŹmplidh agus follaiseach, agus chan eil ann ach buannachdan. Tha, tha an cnap-starra inntrigidh beagan nas Ă irde na le òrdughan togail sĂŹmplidh, ach a-nis tha gealladh ann gun obraich an togail an-còmhnaidh, agus faodaidh an leasaiche a h-uile dad a dhâ fheumas iad airson aâ phròiseas togail aca a thaghadh.
Faodaidh tu an dealbh a chuir mi ri chèile a chleachdadh cuideachd. Tha na stòran uile fosgailte agus suidhichte air .
Fhad âs a bha an artaigil seo ga sgrĂŹobhadh, bha deasbad ann mu bhith aâ cleachdadh riochdairean air frithealaichean iomallach gus nach biodh am prĂŹomh nĂłd air a luchdachadh le plugan. Ach innsidh mi dhut mu dheidhinn seo san Ă m ri teachd.
Source: www.habr.com
