د جینکنز په اړه د هابري په اړه ډیری مقالې شتون لري، مګر یو څو مثالونه بیانوي چې څنګه جینکنز او ډاکر اجنټ کار کوي. ټول مشهور د پروژې جوړونې وسیلې لکه
نن ورځ د ستونزې حل شتون لري: جینکنز 2 سره په کار کولو کې عالي دی
ولې ما د دې ستونزې حل پیل کړ؟
ځکه چې موږ په شرکت کې یو
- د چلولو لوی مقدار چې پراختیا کونکي یې پاکول هیر کړي؛
- د ورته وخت د مختلفو نسخو ترمنځ شخړې شتون لري؛
- هر پرمخ وړونکی د اجزاو مختلف سیټ ته اړتیا لري.
نورې ستونزې هم شته خو د حل په اړه یې درته ووایم.
جینکنز په ډاکر کې
څرنګه چې ډاکر اوس په پرمختیایي نړۍ کې ښه تاسیس شوی، نږدې هرڅه د ډاکر په کارولو سره پرمخ وړل کیدی شي. زما حل دا دی چې جینکنز په ډاکر کې ولرئ او د نورو ډاکر کانټینرونو چلولو وړ اوسئ. دا پوښتنه په 2013 کې په مقاله کې بیرته وپوښتل شوه "
په لنډه توګه ، تاسو اړتیا لرئ پخپله په کاري کانټینر کې ډاکر نصب کړئ او فایل نصب کړئ /var/run/docker.sock
.
دلته د ډاکرفیل مثال دی چې د جینکنز لپاره وګرځید.
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
پدې توګه ، موږ د ډاکر کانټینر ترلاسه کړ چې کولی شي په کوربه ماشین کې د ډاکر امرونه اجرا کړي.
تنظیمات جوړ کړئ
ډیر وخت دمخه جینکنز فرصت ترلاسه کړ چې خپل قواعد په کارولو سره تشریح کړي
نو راځئ چې پخپله ذخیره کې یو ځانګړی ډاکر فایل واچوو ، کوم چې به د جوړولو لپاره اړین ټول کتابتونونه ولري. پدې توګه ، پراختیا کونکی پخپله کولی شي د تکرار وړ چاپیریال چمتو کړي او د OPS څخه به په کوربه کې د Node.JS ځانګړي نسخه نصبولو غوښتنه ونه کړي.
FROM node:12.10.0-alpine
RUN npm install yarn -g
دا جوړ شوی انځور د ډیری Node.JS غوښتنلیکونو لپاره مناسب دی. څه که د مثال په توګه، تاسو د JVM پروژې لپاره یو عکس ته اړتیا لرئ چې د سونار سکینر دننه شامل وي؟ تاسو وړیا یاست چې هغه اجزا غوره کړئ چې تاسو د غونډې لپاره ورته اړتیا لرئ.
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/
موږ د مجلس چاپیریال تشریح کړ، مګر جینکنز د دې سره څه لري؟ او د جینکنز اجنټان کولی شي د داسې ډاکر عکسونو سره کار وکړي او په داخلي توګه یې جوړ کړي.
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"
}
}
لارښود agent
ملکیت کاروي docker
چیرته چې تاسو مشخص کولی شئ:
- ستاسو د نومولو پالیسۍ سره سم د مجلس کانټینر نوم؛
- د جوړونکي کانټینر چلولو لپاره دلیلونه اړین دي، چیرې چې زموږ په قضیه کې موږ اوسنی ډایرکټر د کانټینر دننه د لارښود په توګه نصب کوو.
او دمخه د جوړونې په مرحلو کې موږ په ګوته کوو چې کوم حکمونه د ډاکر جوړونکي اجنټ دننه اجرا کول دي. دا هرڅه کیدی شي ، نو زه د ځواب وړ په کارولو سره د غوښتنلیک پلي کول هم پیلوم.
لاندې زه غواړم یو عام جینکنز فایل وښیم چې یو ساده 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()
}
}
}
څه شوي دي؟
د دې میتود څخه مننه، موږ لاندې ستونزې حل کړې:
- د چاپیریال اسمبلۍ ترتیب وخت په هره پروژه کې 10 - 15 دقیقو ته راټیټ شوی؛
- د بشپړ تکرار وړ غوښتنلیک جوړونې چاپیریال، ځکه چې تاسو کولی شئ دا په خپل محلي کمپیوټر کې دا ډول جوړ کړئ؛
- د اسمبلۍ وسیلو مختلف نسخو ترمینځ د شخړو سره کومه ستونزه شتون نلري؛
- تل پاک کاري ځای چې بند نه وي.
حل پخپله ساده او څرګند دی او تاسو ته اجازه درکوي ځینې ګټې ترلاسه کړئ. هو ، د ننوتلو حد د مجلسونو لپاره د ساده حکمونو په پرتله یو څه لوړ شوی ، مګر اوس تضمین شتون لري چې دا به تل جوړ شي او پراختیا کونکی پخپله کولی شي هرڅه غوره کړي چې د هغه د جوړولو پروسې لپاره اړین وي.
تاسو کولی شئ هغه عکس هم وکاروئ چې ما راټول کړی
د دې مقالې لیکلو پرمهال ، په ریموټ سرورونو کې د اجنټانو کارولو په اړه بحث راپورته شو ترڅو د پلگ ان په کارولو سره ماسټر نوډ پورته نه کړي.
سرچینه: www.habr.com