ስለ ጄንኪንስ በሀብሬ ላይ ብዙ መጣጥፎች አሉ፣ ግን ጥቂቶች የጄንኪንስ እና ዶከር ወኪሎች እንዴት እንደሚሠሩ ምሳሌዎችን ይገልጻሉ። ሁሉም ታዋቂ የፕሮጀክት ግንባታ መሳሪያዎች እንደ
ዛሬ ለችግሩ መፍትሄ አለ: ጄንኪንስ 2 አብሮ በመሥራት ጥሩ ነው
ይህንን ችግር ለምን መፍታት ጀመርኩ?
ኩባንያ ውስጥ ስለሆንን
- ገንቢዎች ለማጽዳት የሚረሱት ትልቅ የሩጫ ጊዜ;
- በተለያዩ ተመሳሳይ የሩጫ ጊዜ ስሪቶች መካከል ግጭቶች አሉ;
- እያንዳንዱ ገንቢ የተለያዩ ክፍሎች ስብስብ ያስፈልገዋል።
ሌሎች ችግሮች አሉ, ግን ስለ መፍትሄው ልንገራችሁ.
ጄንኪንስ በዶከር
ዶከር አሁን በዕድገት ዓለም ውስጥ በሚገባ የተቋቋመ በመሆኑ፣ ማንኛውም ነገር ማለት ይቻላል ዶከርን በመጠቀም ሊሠራ ይችላል። የእኔ መፍትሄ ጄንኪንስ በዶከር ውስጥ እንዲኖር እና ሌሎች የዶከር ኮንቴይነሮችን ማስኬድ መቻል ነው። ይህ ጥያቄ በ 2013 በአንቀጹ ውስጥ መመለስ ጀመረ ።
በአጭሩ Docker እራሱን በሚሰራ መያዣ ውስጥ መጫን እና ፋይሉን መጫን ብቻ ያስፈልግዎታል /var/run/docker.sock
.
ለጄንኪንስ የወጣው Dockerfile ምሳሌ ይኸውና።
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
ስለዚህ, በአስተናጋጅ ማሽን ላይ የዶከር ትዕዛዞችን ሊፈጽም የሚችል Docker መያዣ አግኝተናል.
ማዋቀርን ይገንቡ
ከጥቂት ጊዜ በፊት ጄንኪንስ ደንቦቹን በመጠቀም ደንቦቹን ለመግለጽ እድሉን አግኝቷል
ስለዚህ ለግንባታው አስፈላጊ የሆኑትን ሁሉንም ቤተ-መጻሕፍት የያዘ ልዩ Dockerfile በራሱ ማከማቻ ውስጥ እናስቀምጠው። በዚህ መንገድ ገንቢው ራሱ ሊደገም የሚችል አካባቢ ማዘጋጀት ይችላል እና OPS በአስተናጋጁ ላይ የተወሰነ የ Node.JS ስሪት እንዲጭን መጠየቅ አይኖርበትም።
FROM node:12.10.0-alpine
RUN npm install yarn -g
ይህ የግንባታ ምስል ለአብዛኛዎቹ Node.JS መተግበሪያዎች ተስማሚ ነው። ለምሳሌ ለጄቪኤም ፕሮጀክት ከሶናር ስካነር ጋር በውስጡ የተካተተ ምስል ቢያስፈልግስ? ለመገጣጠም የሚያስፈልጉዎትን ክፍሎች ለመምረጥ ነፃ ነዎት.
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
የት መግለጽ ይችላሉ:
- በስም ፖሊሲዎ መሰረት የስብሰባ መያዣ ስም;
- የግንባታውን ኮንቴይነር ለማስኬድ የሚያስፈልጉ ክርክሮች, በእኛ ሁኔታ አሁን ያለውን ማውጫ እንደ መያዣው ውስጥ እንደ ማውጫ እንጭናለን.
እና ቀድሞውኑ በግንባታ ደረጃዎች ውስጥ በ 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 ደቂቃዎች ይቀንሳል;
- በአካባቢያዊ ኮምፒተርዎ ላይ በዚህ መንገድ መገንባት ስለሚችሉ ሙሉ በሙሉ ሊደገም የሚችል የመተግበሪያ ግንባታ አካባቢ;
- በተለያዩ የመሰብሰቢያ መሳሪያዎች ስሪቶች መካከል ግጭቶች ውስጥ ምንም ችግሮች የሉም ።
- ሁልጊዜ ንጹህ የስራ ቦታ የማይዘጋ.
መፍትሄው ራሱ ቀላል እና ግልጽ እና አንዳንድ ጥቅሞችን እንድታገኝ ይፈቅድልሃል. አዎን, የመግቢያው ገደብ ለስብሰባዎች ቀላል ትዕዛዞች ጋር ሲነፃፀር ትንሽ ከፍ ብሏል, አሁን ግን ሁልጊዜ እንደሚገነባ ዋስትና አለ እና ገንቢው እራሱ ለግንባታው ሂደት አስፈላጊ የሆኑትን ሁሉ መምረጥ ይችላል.
የሰበሰብኩትን ምስል መጠቀምም ትችላለህ
ይህንን ጽሑፍ በሚጽፉበት ጊዜ ፕለጊን ተጠቅመው ዋናውን መስቀለኛ መንገድ ላለመጫን በሩቅ አገልጋዮች ላይ ወኪሎችን ስለመጠቀም ውይይት ተነሳ.
ምንጭ: hab.com