Pali zolemba zambiri za HabrΓ© za Jenkins, koma ochepa amafotokoza zitsanzo za momwe Jenkins ndi othandizira ma docker amagwirira ntchito. Onse otchuka ntchito kumanga zida ngati
Masiku ano pali njira yothetsera vutoli: Jenkins 2 ndi wabwino kugwira nawo ntchito
Nβchifukwa chiyani ndinayamba kuthetsa vutoli?
Popeza tili pakampani
- nthawi yambiri yothamanga yomwe opanga amaiwala kuyeretsa;
- pali mikangano pakati pa mitundu yosiyanasiyana ya nthawi yothamanga;
- Wopanga aliyense amafunikira magawo osiyanasiyana.
Palinso mavuto ena, koma ndikuuzeni za yankho lake.
Jenkins ku Docker
Popeza Docker tsopano yakhazikitsidwa bwino mdziko lachitukuko, pafupifupi chilichonse chitha kuyendetsedwa ndi Docker. Yankho langa ndikukhala ndi Jenkins ku Docker ndikutha kuyendetsa zotengera zina za Docker. Funsoli lidayamba kufunsidwa mu 2013 m'nkhani yakuti "
Mwachidule, muyenera kungoyika Docker yokha mu chidebe chogwirira ntchito ndikuyika fayilo /var/run/docker.sock
.
Nachi chitsanzo cha Dockerfile chomwe chidapezeka kwa 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
Chifukwa chake, tili ndi chidebe cha Docker chomwe chimatha kutsata malamulo a Docker pamakina olandila.
Kupanga kupanga
Osati kale kwambiri Jenkins adapeza mwayi wofotokozera malamulo ake pogwiritsa ntchito
Chifukwa chake tiyeni tiyike Dockerfile yapadera munkhokwe yokha, yomwe ikhala ndi malaibulale onse ofunikira pakumanga. Mwanjira iyi, woyambitsa yekha akhoza kukonzekera malo obwerezabwereza ndipo sadzafunsa OPS kuti ayike mtundu wina wa Node.JS pa wolandirayo.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Chithunzi chomangirirachi ndi choyenera pamapulogalamu ambiri a Node.JS. Bwanji ngati, mwachitsanzo, mukufuna chithunzi cha polojekiti ya JVM yokhala ndi scanner ya Sonar yophatikizidwa mkati? Muli ndi ufulu wosankha zigawo zomwe mukufuna kuti musonkhane.
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/
Tidafotokozera malo amsonkhano, koma a Jenkins akuyenera kuchita chiyani? Ndipo othandizira a Jenkins amatha kugwira ntchito ndi zithunzi za Docker zotere ndikuzimanga mkati.
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"
}
}
Directive agent
amagwiritsa ntchito katundu docker
kumene mungathe kufotokoza:
- dzina la chidebe cha msonkhano malinga ndi ndondomeko yanu ya mayina;
- mikangano yofunika kuyendetsa chidebe chomangira, pomwe ife timayika chikwatu chomwe chilipo ngati chikwatu mkati mwa chidebe.
Ndipo kale pamasitepe omanga tikuwonetsa malamulo oti achite mkati mwa Docker build agent. Izi zitha kukhala chilichonse, chifukwa chake ndikuyambitsanso kutumiza ntchito pogwiritsa ntchito ansible.
Pansipa ndikufuna kuwonetsa Jenkinsfile wamba yomwe pulogalamu yosavuta ya Node.JS imatha kupanga.
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()
}
}
}
Chinachitika ndi chiyani?
Chifukwa cha njirayi, tinathetsa mavuto otsatirawa:
- nthawi yokonzekera msonkhano wa chilengedwe imachepetsedwa kukhala mphindi 10 - 15 pa polojekiti iliyonse;
- malo omangika obwerezabwereza kwathunthu, popeza mutha kumanga motere pakompyuta yanu;
- palibe mavuto ndi mikangano pakati pa mitundu yosiyanasiyana ya zida zosonkhana;
- nthawi zonse malo ogwirira ntchito oyera omwe samatsekeka.
Yankho lokha ndilosavuta komanso lodziwikiratu ndipo limakupatsani mwayi wopeza zabwino. Inde, malo olowera adakwera pang'ono poyerekeza ndi malamulo ophweka a misonkhano, koma tsopano pali chitsimikizo chakuti chidzamangidwa nthawi zonse ndipo wopanga yekha akhoza kusankha zonse zomwe zili zofunika pa ntchito yake yomanga.
Mukhozanso kugwiritsa ntchito chithunzi chomwe ndasonkhanitsa
Polemba nkhaniyi, kukambirana kudabuka pakugwiritsa ntchito othandizira pa maseva akutali kuti asakweze mfundo zazikulu pogwiritsa ntchito pulogalamu yowonjezera.
Source: www.habr.com