Waxaa jira maqaallo badan oo ku saabsan HabrΓ© oo ku saabsan Jenkins, laakiin in yar ayaa sharraxa tusaalooyinka sida Jenkins iyo wakiillada docker ay u shaqeeyaan. Dhammaan qalabka dhismaha mashruuca caanka ah sida
Maanta waxaa jira xal dhibaatada: Jenkins 2 waa ku fiican yahay la shaqeynta
Maxaan u bilaabay xallinta dhibaatadan?
Maadaama aanu nahay shirkad
- qadar badan oo runtime ah oo horumariyayaashu iloobaan inay nadiifiyaan;
- waxaa jira khilaafyo u dhexeeya noocyada kala duwan ee isla runtimes;
- Horumariye kastaa wuxuu u baahan yahay qaybo kala duwan.
Dhibaatooyin kale ayaa jira, laakiin aan kuu sheego xalka.
Jenkins oo ku taal Docker
Maaddaama Docker uu hadda si wanaagsan uga dhex jiro adduunka horumarka, ku dhawaad ββwax kasta ayaa lagu socodsiin karaa iyadoo la adeegsanayo Docker. Xalkaygu waa in aan Jenkins ku haysto Docker oo aan awoodo in aan socodsiiyo weelasha kale ee Docker. Su'aashan waxay bilaabatay in dib loo weydiiyo 2013 maqaalka "
Marka la soo koobo, waxaad u baahan tahay oo kaliya inaad ku rakibto Docker lafteeda weelka shaqada oo aad ku dhejiso faylka /var/run/docker.sock
.
Waa kan tusaale Dockerfile oo u soo baxay 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
Markaa, waxaan helnay weel Docker ah oo fulin kara amarada Docker mashiinka martida loo yahay.
Dhis habaynta
Muddo aan fogayn ka hor Jenkins waxay heshay fursad ay ku qeexdo xeerarkeeda iyadoo la isticmaalayo
Markaa aan dhigno Dockerfile gaar ah kaydka laftiisa, kaas oo ka koobnaan doona dhammaan maktabadaha lagama maarmaanka u ah dhismaha. Sidan, horumariyaha laftiisa ayaa diyaarin kara jawi lagu celin karo mana u baahan doono inuu waydiisto OPS inay ku rakibto nooc gaar ah oo Node.JS ah martida loo yahay.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Sawirka dhismuhu wuxuu ku habboon yahay badi codsiyada Node.JS. Maxaa dhacaya haddii, tusaale ahaan, aad u baahan tahay sawir mashruuca JVM oo leh iskaanka Sonar oo gudaha lagu soo daray? Xor ayaad u tahay inaad doorato qaybaha aad uga baahan tahay isu imaatinka.
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/
Waxaan ku qeexnay jawiga golaha, laakiin maxay Jenkins ka leedahay? Wakiilada Jenkins waxay la shaqeyn karaan sawirada Docker oo kale oo ay ku dhisi karaan gudaha.
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"
}
}
Dardaaran agent
waxay isticmaashaa hanti docker
meesha aad ku qeexi karto:
- magaca weelka shirka sida waafaqsan siyaasaddaada magac;
- doodaha loo baahan yahay si loo socodsiiyo weelka la dhisayo, halkaas oo xaaladdeenna aan ku dhejino tusaha hadda jira sida hagaha gudaha weelka.
Haddana talaabooyinka dhisitaanka waxaan ku tusinaynaa amarrada lagu fulinayo gudaha wakiilka dhismaha Docker. Tani waxay noqon kartaa wax kasta, sidaas darteed waxaan sidoo kale bilaabay geynta arjiga aniga oo isticmaalaya wax macquul ah.
Hoos waxaan rabaa in aan tuso Jenkinsfile guud in codsiga Node.JS uu dhisi karo.
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()
}
}
}
Maxaa dhacay?
Thanks to habkan, waxaan xallinay dhibaatooyinka soo socda:
- Waqtiga qaabeynta isku dhafka deegaanka waxaa lagu dhimay 10 - 15 daqiiqo mashruuc kasta;
- jawi dhismo codsi ah oo gebi ahaanba lagu celin karo, maadaama aad sidan ugu dhisi karto kombayutarka deegaankaaga;
- ma jiraan wax dhibaato ah oo ku saabsan isku dhacyada u dhexeeya noocyada kala duwan ee qalabka isu-ururinta;
- had iyo jeer goob shaqo oo nadiif ah oo aan xidhnayn.
Xalka laftiisa waa mid fudud oo muuqda wuxuuna kuu ogolaanayaa inaad hesho faa'iidooyin. Haa, heerka gelitaanka ayaa kor u kacay wax yar marka la barbardhigo amarrada fudud ee shirarka, laakiin hadda waxaa jira dammaanad ah in mar walba la dhisi doono iyo horumariyaha laftiisa ayaa dooran kara wax kasta oo lagama maarmaan u ah habka dhismihiisa.
Waxa kale oo aad isticmaali kartaa sawirka aan ururiyay
Intii aan maqaalkan qorayay, dood ayaa ka dhalatay adeegsiga wakiilada ee server-yada fog-fog si aan loo shubin noodhka sayidkiisa iyadoo la adeegsanayo plugin
Source: www.habr.com