Ziningi izindatshana ezimayelana no-Habré mayelana no-Jenkins, kodwa zimbalwa ezichaza izibonelo zendlela uJenkins nama-ejenti wedokodo asebenza ngayo. Wonke amathuluzi okwakha amaphrojekthi adumile afana
Namuhla kunesixazululo senkinga: Jenkins 2 muhle ekusebenzeni naye
Kungani ngiqale ukuxazulula le nkinga?
Njengoba sihlangene
- inani elikhulu lesikhathi sokusebenza abathuthukisi abakhohlwa ukulihlanza;
- kukhona ukungqubuzana phakathi kwezinguqulo ezahlukene zezikhathi zokusebenza ezifanayo;
- Wonke umthuthukisi udinga isethi ehlukile yezingxenye.
Zikhona ezinye izinkinga, kodwa ake ngikutshele ngesixazululo.
UJenkins e-Docker
Njengoba i-Docker isisungulwe kahle emhlabeni wokuthuthuka, cishe noma yini ingaqhutshwa kusetshenziswa i-Docker. Isixazululo sami ukuthi ngibe noJenkins ku-Docker futhi ngikwazi ukusebenzisa ezinye iziqukathi ze-Docker. Lo mbuzo waqala ukubuzwa emuva ngo-2013 esihlokweni esithi “
Ngamafuphi, udinga nje ukufaka i-Docker ngokwayo esitsheni esisebenzayo bese ufaka ifayela /var/run/docker.sock
.
Nasi isibonelo i-Dockerfile eyaphumela ku-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
Ngakho-ke, sithole isitsha se-Docker esingakhipha imiyalo ye-Docker emshinini wokusingathwa.
Yakha isethaphu
Kungekudala iJenkins ithole ithuba lokuchaza imithetho yayo isebenzisa
Ngakho-ke ake sibeke i-Dockerfile ekhethekile endaweni yokugcina, ezoqukatha yonke imitapo yolwazi edingekayo ekwakheni. Ngale ndlela, unjiniyela ngokwakhe angakwazi ukulungiselela indawo ephindaphindwayo futhi ngeke kudingeke ukuthi acele i-OPS ukuthi ifake inguqulo ethile ye-Node.JS kumsingathi.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Lesi sithombe sokwakha sifanelekele izinhlelo zokusebenza eziningi ze-Node.JS. Kuthiwani uma, ngokwesibonelo, udinga isithombe sephrojekthi ye-JVM eneskena se-Sonar esifakwe ngaphakathi? Ukhululekile ukukhetha izingxenye ozidingayo ukuze uhlanganise.
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/
Sichaze indawo yomhlangano, kodwa uJenkins uhlangene ngani nayo? Futhi ama-agent we-Jenkins angasebenza ngezithombe ezinjalo ze-Docker futhi azakhe ngaphakathi.
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"
}
}
Isiqondisi agent
isebenzisa impahla docker
lapho ungacacisa khona:
- igama lesiqukathi somhlangano ngokwenqubomgomo yakho yokuqamba amagama;
- izimpikiswano ezidingekayo ukuze kuqhutshwe isitsha sokwakha, lapho kithi sikhweza uhla lwemibhalo lwamanje njengohla lwemibhalo ngaphakathi kwesiqukathi.
Futhi vele ezinyathelweni zokwakha sibonisa ukuthi yimiphi imiyalo okufanele yenziwe ngaphakathi kwe-ejenti yokwakha ye-Docker. Lokhu kungaba noma yini, ngakho-ke futhi ngethula ukuthunyelwa kohlelo lokusebenza ngisebenzisa i-ansible.
Ngezansi ngifuna ukukhombisa i-Jenkinsfile ejwayelekile engakhiwa uhlelo olulula lwe-Node.JS.
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()
}
}
}
Kwenzenjani?
Ngenxa yale ndlela, sixazulule izinkinga ezilandelayo:
- isikhathi sokumisa umhlangano wemvelo sincishisiwe sibe yimizuzu eyi-10 - 15 iphrojekthi ngayinye;
- indawo yokwakha yohlelo lokusebenza ephindaphindeka ngokuphelele, njengoba ungayakha ngale ndlela kukhompyutha yakho yangakini;
- azikho izinkinga ngokungqubuzana phakathi kwezinguqulo ezahlukene zamathuluzi omhlangano;
- njalo indawo yokusebenza ehlanzekile engavaleki.
Isixazululo ngokwaso silula futhi sisobala futhi sikuvumela ukuthi uthole izinzuzo ezithile. Yebo, umkhawulo wokungena ukhuphuke kancane uma kuqhathaniswa nemiyalo elula yemihlangano, kodwa manje kunesiqinisekiso sokuthi izokwakhiwa njalo futhi umthuthukisi ngokwakhe angakhetha konke okudingekayo kwinqubo yakhe yokwakha.
Ungasebenzisa futhi isithombe engisiqoqile
Ngenkathi kubhalwa lesi sihloko, kwaphakama ingxoxo mayelana nokusebenzisa ama-ejenti kumaseva akude ukuze angalayishi i-master node usebenzisa i-plugin.
Source: www.habr.com