Kukho amanqaku amaninzi kuHabré malunga neJenkins, kodwa abambalwa bachaza imizekelo yendlela iJenkins kunye nee-docker agents zisebenza ngayo. Zonke izixhobo ezithandwayo zokwakha iiprojekthi ezifana
Namhlanje kukho isisombululo kwingxaki: uJenkins 2 ulungile ekusebenzeni naye
Kwakutheni ukuze ndiqalise ukuyicombulula le ngxaki?
Kuba sikwinkampani
- isixa esikhulu sexesha lokubaleka abaphuhlisi balibale ukulicoca;
- kukho ungquzulwano phakathi kweenguqulelo ezahlukeneyo zamaxesha okuqhuba afanayo;
- Wonke umphuhlisi ufuna isethi eyahlukileyo yamacandelo.
Zikhona ezinye iingxaki, kodwa mandikuxelele ngesicombululo.
Jenkins eDocker
Kuba iDocker ngoku imiselwe kakuhle kwihlabathi lophuhliso, phantse nantoni na inokuqhutywa kusetyenziswa iDocker. Isisombululo sam kukuba neJenkins eDocker kwaye nikwazi ukuqhuba ezinye izitya zeDocker. Lo mbuzo waqala ukubuzwa ngo-2013 kwinqaku elithi "
Ngamafutshane, kufuneka nje uzifakele iDocker ngokwayo kwisitya esisebenzayo kwaye unyuse ifayile /var/run/docker.sock
.
Nanku umzekelo weDockerfile owaphumela kuJenkins.
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
Ke, sinesingxobo seDocker esinokwenza imiyalelo yeDocker kumatshini wokubamba.
Yakha ukuseta
Kungekudala iJenkins ifumene ithuba lokuchaza imithetho yayo isebenzisa
Ke makhe sibeke iDockerfile ekhethekileyo kwindawo yokugcina, eya kuthi iqulathe onke amathala eencwadi ayimfuneko ekwakheni. Ngale ndlela, umphuhlisi ngokwakhe unokulungiselela indawo ephindaphindiweyo kwaye akayi kucela i-OPS ukuba ifake inguqulo ethile ye-Node.JS kwinginginya.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Lo mfanekiso wokwakha ulungele uninzi lwezicelo zeNode.JS. Kuthekani ukuba, umzekelo, ufuna umfanekiso weprojekthi ye-JVM eneskena se-Sonar esibandakanyiweyo ngaphakathi? Ukhululekile ukukhetha amacandelo owafunayo kwindibano.
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 yendibano, kodwa iJenkins inento yokwenza nayo? Kwaye ii-agent zeJenkins zinokusebenza kunye nemifanekiso ye-Docker enjalo kwaye iyakhe 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"
}
}
Umyalelo agent
isebenzisa ipropathi docker
apho unokuchaza khona:
- igama lesikhongozeli sendibano ngokwepolisi yakho yamagama;
- iingxoxo ezifunekayo ukuqhuba isikhongozeli sokwakha, apho kwimeko yethu sinyusa uvimba weefayili wangoku njengolawulo ngaphakathi kwesikhongozeli.
Kwaye sele kumanyathelo okwakha sibonisa ukuba yeyiphi imiyalelo ekufuneka yenziwe ngaphakathi kwe-arhente yokwakha ye-Docker. Oku kunokuba nantoni na, ngoko ke ndiqalise ukusasazwa kwesicelo usebenzisa i-ansible.
Ngezantsi ndifuna ukubonisa i-generic Jenkinsfile ukuba isicelo esilula seNode.JS sinokuyakha.
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()
}
}
}
Kweneke ntoni?
Ngombulelo kule ndlela, sisombulule ezi ngxaki zilandelayo:
- Ixesha lokumisela indibano yendalo esingqongileyo lincitshiswe ukuya kwi-10 - 15 imizuzu yeprojekthi nganye;
- isicelo esiphinda-phinda-phinda ngokupheleleyo imeko-bume yokwakha, kuba ungayakha ngolu hlobo kwikhompyuter yakho yobulali;
- akukho ngxaki ngeengxabano phakathi kweenguqulelo ezahlukeneyo zezixhobo zokuhlanganisa;
- isoloko iyindawo yokusebenzela ecocekileyo engavalekiyo.
Isisombululo ngokwaso silula kwaye sicacile kwaye sikuvumela ukuba ufumane izibonelelo ezithile. Ewe, umda wokungena unyuke kancinci xa kuthelekiswa nemiyalelo elula yeendibano, kodwa ngoku kukho isiqinisekiso sokuba iya kuhlala yakhiwe kwaye umphuhlisi ngokwakhe unokukhetha yonke into efunekayo kwinkqubo yakhe yokwakha.
Ungasebenzisa kwakhona umfanekiso endiwuqokelele
Ngelixa ubhala eli nqaku, kwavela ingxoxo malunga nokusebenzisa iiarhente kwiiseva ezikude ukuze ungalayishi i-master node usebenzisa iplagin.
umthombo: www.habr.com