Ho na le lingoliloeng tse ngata ka Habré mabapi le Jenkins, empa ke tse fokolang tse hlalosang mehlala ea kamoo Jenkins le baemeli ba li-docker ba sebetsang kateng. Lisebelisoa tsohle tse tsebahalang tsa ho aha merero joalo ka
Kajeno ho na le tharollo ea bothata: Jenkins 2 o sebetsa hantle le eena
Ke hobane'ng ha ke ile ka qala ho rarolla bothata boo?
Kaha re kopane
- palo e kholo ea nako ea ho sebetsa eo bahlahisi ba lebalang ho e hloekisa;
- ho na le likhohlano lipakeng tsa mefuta e fapaneng ea nako ea ho matha e tšoanang;
- Moetsi e mong le e mong o hloka sete e fapaneng ea likarolo.
Ho na le mathata a mang, empa e re ke u bolelle ka tharollo.
Jenkins sebakeng sa Docker
Kaha Docker e se e thehiloe hantle lefats'eng la nts'etsopele, hoo e ka bang eng kapa eng e ka tsamaisoang ho sebelisoa Docker. Tharollo ea ka ke ho ba le Jenkins ho Docker le ho khona ho tsamaisa lijana tse ling tsa Docker. Potso ena e qalile ho botsoa morao ka 2013 sehloohong se reng "
Ka bokhutšoanyane, o hloka feela ho kenya Docker ka boeona ka sejaneng se sebetsang ebe o kenya faele /var/run/docker.sock
.
Mona ke mohlala oa Dockerfile o ileng oa fetohela 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
Kahoo, re na le setshelo sa Docker se ka phethisang litaelo tsa Docker mochining oa moamoheli.
Haha setup
Hase khale Jenkins o ile a fumana monyetla oa ho hlalosa melao ea eona a sebelisa
Kahoo a re ke re behe Dockerfile e khethehileng sebakeng sa polokelo ka boeona, e tla ba le lilaebrari tsohle tse hlokahalang bakeng sa moaho. Ka tsela ena, moqapi ka boeena a ka lokisetsa tikoloho e ka phetoang 'me a ke ke a tlameha ho kopa OPS ho kenya mofuta o itseng oa Node.JS ho moamoheli.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Setšoantšo sena sa moaho se loketse lits'ebetso tse ngata tsa Node.JS. Ho thoe'ng haeba, ka mohlala, u hloka setšoantšo bakeng sa morero oa JVM o nang le scanner ea Sonar e kenyelletsoeng ka hare? U lokolohile ho khetha likarolo tseo u li hlokang bakeng sa kopano.
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/
Re hlalositse tikoloho ea kopano, empa Jenkins o amana joang le eona? 'Me baemeli ba Jenkins ba ka sebetsa le litšoantšo tse joalo tsa Docker' me ba li hahe ka hare.
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"
}
}
Tataiso agent
e sebedisang thepa docker
moo o ka hlalosang:
- lebitso la setshelo sa kopano ho latela leano la hau la mabitso;
- likhang tse hlokahalang ho tsamaisa setshelo sa kaho, moo molemong oa rona re behang bukana ea hajoale e le bukana ka har'a sets'oants'o.
'Me e se e ntse e le mehatong ea ho aha re bonts'a hore na ke litaelo life tse lokelang ho etsoa ka har'a moemeli oa mohaho oa Docker. Sena e ka ba eng kapa eng, ka hona ke boetse ke qala ts'ebeliso ea ts'ebeliso ke sebelisa ansible.
Ka tlase ke batla ho bonts'a Jenkinsfile ea generic eo kopo e bonolo ea Node.JS e ka e hahang.
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()
}
}
}
Ho etsahetse eng?
Ka lebaka la mokhoa ona, re rarolotse mathata a latelang:
- Nako ea tlhophiso ea kopano ea tikoloho e fokotsehile ho metsotso e 10 - 15 morero ka mong;
- tikoloho ea kaho e ka phetoang ka ho felletseng, kaha u ka e haha ka tsela ena komporong ea hau ea lehae;
- ha ho na mathata a likhohlano lipakeng tsa mefuta e fapaneng ea lisebelisoa tsa kopano;
- kamehla sebaka se hloekileng sa ho sebetsa se sa koaleheng.
Tharollo ka boeona e bonolo ebile e hlakile ebile e u lumella ho fumana melemo e meng. E, monyako oa ho kena o phahame hanyenyane ha o bapisoa le litaelo tse bonolo bakeng sa likopano, empa hona joale ho na le tiiso ea hore e tla lula e hahiloe 'me moqapi ka boeena a ka khetha ntho e' ngoe le e 'ngoe e hlokahalang bakeng sa mokhoa oa hae oa ho haha.
U ka boela ua sebelisa setšoantšo seo ke se bokeletseng
Ha re ntse re ngola sengoloa sena, ho ile ha hlaha puisano ka ho sebelisa baemeli ho li-server tse hole e le hore ba se ke ba kenya node e kholo ka ho sebelisa plugin.
Source: www.habr.com