Pane zvakawanda zvinyorwa paHabrΓ© nezveJenkins, asi vashoma vanotsanangura mienzaniso yemashandiro anoita Jenkins uye madocker agents. Yese yakakurumbira mapurojekiti ekuvaka maturusi senge
Nhasi kune mhinduro kune dambudziko: Jenkins 2 yakanaka pakushanda nayo
Nei ndakatanga kugadzirisa dambudziko iri?
Sezvo tiri pamwe chete
- yakawanda yenguva yekumhanya iyo vanogadzira vanokanganwa kuchenesa;
- pane kukakavara pakati peshanduro dzakasiyana dzenguva dzakafanana dzekumhanya;
- Wese mugadziri anoda seti yakasiyana yezvikamu.
Pane mamwe matambudziko, asi regai ndikuudzei nezvemhinduro.
Jenkins muDocker
Sezvo Docker ikozvino yakanyatso kusimbiswa munyika yekusimudzira, chero chinhu chinogona kumhanyisa uchishandisa Docker. Mhinduro yangu ndeye kuva naJenkins muDocker uye kukwanisa kumhanya mamwe maDocker midziyo. Mubvunzo uyu wakatanga kubvunzwa kumashure muna 2013 muchinyorwa chino "
Muchidimbu, iwe unongoda kuisa Docker pachayo mumudziyo unoshanda uye woisa iyo faira /var/run/docker.sock
.
Heino muenzaniso Dockerfile wakazoitira 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
Nekudaro, isu tine Docker mudziyo unogona kuita Docker mirairo pamushini wekutambira.
Gadzira setup
Pasina nguva refu Jenkins akawana mukana wekutsanangura mitemo yayo achishandisa
Saka ngatiise yakakosha Dockerfile mune repository pachayo, iyo ichange iine ese maraibhurari anodiwa pakuvaka. Nenzira iyi, mugadziri wacho pachake anogona kugadzirira nharaunda inodzokororwa uye haafanire kubvunza OPS kuti iise yakasarudzika vhezheni yeNode.JS pane iyo host.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Uyu mufananidzo wekuvaka wakakodzera kune akawanda Node.JS application. Ko kana, semuenzaniso, iwe uchida mufananidzo weJVM purojekiti ine Sonar scanner inosanganisirwa mukati? Iwe wakasununguka kusarudza zvikamu zvaunoda pagungano.
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/
Isu takatsanangura nharaunda yegungano, asi Jenkins ane chekuita nazvo? Uye Jenkins vamiririri vanogona kushanda neakadaro Docker mifananidzo uye kuvavaka mukati.
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"
}
}
Directive agent
inoshandisa pfuma docker
kwaunogona kutsanangura:
- zita remudziyo wegungano zvinoenderana negwaro rako rezita;
- nharo dzinodiwa kumhanyisa mudziyo wekuvaka, uko kwatiri isu tinoisa dhairekitori razvino sedhairekitori mukati memudziyo.
Uye nechekare mumatanho ekuvaka isu tinoratidza kuti ndeipi mirairo yekuita mukati meDocker kuvaka mumiriri. Izvi zvinogona kuve chero chinhu, saka ini zvakare ndinotangisa application deployment ndichishandisa zvinonzwisisika.
Pazasi ini ndinoda kuratidza generic Jenkinsfile iyo yakapusa Node.JS application inogona kuvaka.
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()
}
}
}
Chii chaitika?
Nekuda kwenzira iyi, takagadzirisa matambudziko anotevera:
- nharaunda musangano kumisikidza nguva yakaderedzwa kusvika 10 - 15 maminitsi papurojekiti;
- inodzokororwa zvachose application kuvaka nharaunda, sezvo uchigona kuivaka nenzira iyi pakombuta yako yemuno;
- hapana matambudziko nekukakavadzana pakati peshanduro dzakasiyana dzematurusi egungano;
- nguva dzose nzvimbo yekushanda yakachena iyo isingavharirwi.
Mhinduro yacho pachayo iri nyore uye yakajeka uye inokubvumira kuti uwane mamwe mabhenefiti. Hongu, chikumbaridzo chekupinda chakasimuka zvishoma kana zvichienzaniswa nemirairo iri nyore yemagungano, asi ikozvino pane chivimbiso chokuti ichagara ichivakwa uye mugadziri pachake anogona kusarudza zvose zvinodiwa pakuvaka kwake.
Iwe unogona zvakare kushandisa mufananidzo wandakaunganidza
Ndichiri kunyora chinyorwa ichi, nhaurirano yakamuka pamusoro pekushandisa vamiririri pamaseva ari kure kuti asatakure master node uchishandisa plugin.
Source: www.habr.com