Enwere ọtụtụ akụkọ na Habré gbasara Jenkins, mana ole na ole na-akọwa ihe atụ nke otu Jenkins na ndị ọrụ docker si arụ ọrụ. Ngwa arụ ọrụ arụrụ arụ niile ama ama dịka
Taa enwere ngwọta maka nsogbu ahụ: Jenkins 2 dị mma na-arụ ọrụ
Gịnị kpatara m ji malite idozi nsogbu a?
Ebe ọ bụ na anyị nọ na ụlọ ọrụ
- nnukwu ego nke oge ịgba ọsọ nke ndị mmepe na-echefu ihicha;
- enwere esemokwu n'etiti ụdị dị iche iche nke otu oge ịgba ọsọ;
- Onye nrụpụta ọ bụla chọrọ akụrụngwa dị iche iche.
Enwere nsogbu ndị ọzọ, mana ka m kọọrọ gị ihe ngwọta ya.
Jenkins nọ na Docker
Ebe Docker guzobeziri nke ọma na ụwa mmepe, ihe fọrọ nke nta ka ọ bụrụ ihe ọ bụla nwere ike iji Docker mee ihe. Ngwọta m bụ inwe Jenkins na Docker ma nwee ike ijikwa akpa Docker ndị ọzọ. A malitere ịjụ ajụjụ a n'afọ 2013 n'isiokwu ahụ "
Na nkenke, naanị ịkwesịrị ịwụnye Docker n'onwe ya n'ime akpa na-arụ ọrụ wee bulie faịlụ ahụ /var/run/docker.sock
.
Nke a bụ ọmụmaatụ Dockerfile tụgharịrị maka 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
Yabụ, anyị nwetara akpa Docker nke nwere ike mebe iwu Docker na igwe nnabata.
Mee ntọala
N'oge na-adịbeghị anya Jenkins nwetara ohere iji kọwaa iwu ya
Yabụ ka anyị tinye Dockerfile pụrụ iche na ebe nchekwa n'onwe ya, nke ga-enwe ọba akwụkwọ niile dị mkpa maka ịrụ ya. N'ụzọ dị otú a, onye mmepụta n'onwe ya nwere ike ịkwadebe gburugburu ebe a na-emegharị ugboro ugboro na ọ gaghị arịọ OPS ka ọ wụnye otu ụdị Node.JS na onye ọbịa.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Onyonyo nrụpụta a dabara adaba maka ọtụtụ ngwa Node.JS. Kedu ihe ma ọ bụrụ, dịka ọmụmaatụ, ịchọrọ onyonyo maka ọrụ JVM nwere nyocha Sonar gụnyere n'ime? Ị nweere onwe gị ịhọrọ ihe ndị ị chọrọ maka mgbakọ.
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/
Anyị kọwara ebe mgbakọ ahụ, ma gịnị jikọrọ Jenkins na ya? Ndị ọrụ Jenkins nwere ike iji ihe onyonyo Docker rụọ ọrụ ma wuo ha n'ime.
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"
}
}
Ntụziaka agent
na-eji ihe onwunwe docker
ebe ị nwere ike ịkọwa:
- aha akpa mgbakọ dị ka iwu aha gị si dị;
- arụmụka mkpa na-agba ọsọ na-ewu akpa, ebe anyị ikpe na-ebugo ugbu a ndekọ dị ka ndekọ n'ime akpa.
Ma ugbua n'ime usoro iwulite anyị na-egosi iwu ndị a ga-eme n'ime onye nrụpụta Docker. Nke a nwere ike ịbụ ihe ọ bụla, yabụ m na-amalite ntinye ngwa ngwa site na iji ike.
N'okpuru ebe a, achọrọ m igosi Jenkinsfile ọnyà nke ngwa Node.JS dị mfe nwere ike wuo.
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()
}
}
}
Kedu ihe mere?
N'ihi usoro a, anyị doziri nsogbu ndị a:
- A na-ebelata oge nhazi oge mgbakọ gburugburu na 10 - 15 nkeji kwa ọrụ;
- a kpamkpam repeatable ngwa ewu gburugburu ebe obibi, ebe ị nwere ike iwu ya otú a na mpaghara gị na kọmputa;
- enweghi nsogbu na esemokwu n'etiti nsụgharị dị iche iche nke ngwaọrụ mgbakọ;
- mgbe niile na-arụ ọrụ dị ọcha nke na-adịghị egbochi.
Ihe ngwọta n'onwe ya dị mfe ma doo anya ma na-enye gị ohere ịnweta ụfọdụ uru. Ee, ọnụ ụzọ ntinye ebiliwo ntakịrị ma e jiri ya tụnyere iwu dị mfe maka mgbakọ, ma ugbu a enwere nkwa na a ga-ewu ya mgbe niile na onye mmepụta n'onwe ya nwere ike ịhọrọ ihe niile dị mkpa maka usoro iwu ya.
I nwekwara ike iji onyonyo m chịkọtara
Mgbe ị na-ede akụkọ a, mkparịta ụka bilitere banyere iji ndị ọrụ na sava dịpụrụ adịpụ ka ọ ghara ibunye ọnụ ọnụ nna ukwu site na iji ngwa mgbakwunye.
isi: www.habr.com