Multi articuli in HabrΓ© de Jenkins sunt, sed pauca exempla describunt quomodo Jenkins et grex agentia operantur. Omnes populares project instrumenta aedificant sicut
Hodie solutio problematis: Jenkins 2 magnus est qui laborat cum
Cur incipiam solvendo hanc quaestionem?
Cum in comitatu sumus
- magnum pondus runtime quod tincidunt oblivisci munda;
- certamina uaria eorumdem runtimerum sunt;
- Quisque varius posuere elit eget elementum.
Alia sunt problemata, sed dicam tibi solutionem.
Jenkins in Docker
Cum Docker in mundo evolutionis nunc bene stabilitur, fere nihil potest uti Docker currere. Solutio mea est Jenkins in Docker habere et alias continentia Docker currere posse. Haec quaestio in anno 2013 interrogari coepit in articulo "
In summa, debes ipsum Docker installare in vase laborante et tabellam conscendere /var/run/docker.sock
.
Exemplum hic Dockerfile Jenkins evenit.
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
Ita vas Docker cepimus qui mandata Docker in machina exercitus exsequi potest.
Γdificate setup
Non ita pridem Jenkins facultatem obtinuit ut eius praecepta utendi describeret
Praecipuum igitur Dockerfile in ipso repositorio ponamus, quod omnes bibliothecas ad aedificandum necessarias continebit. Hoc modo ipse elit ambitum iterabilem parare potest nec petere OPS ut certam versionem Node.JS in exercitu instituat.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Haec imago fabricandi apta applicationibus plurimis Node.JS. Quid si, exempli gratia, opus est imaginem pro JVM proiecto cum scannario Sonario intus incluso? Vos liberum est eligere partes quae ad ecclesiam necessaria sunt.
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/
ambitum conventus descripsimus, sed quid Jenkins ad rem pertinet? Et Jenkins procuratores talibus Docker imaginibus operari possunt et eas interius construere.
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
utitur res docker
ubi specificare potes:
- nomen conventus continens consilium tuum secundum nomen tuum;
- argumenta ad currendum vas aedificandum, ubi in nostro casu directorium hodiernam sicut directorium intra continens conscendimus.
Et iam in gradibus aedificiorum designamus quae mandata exequi Docker intus agente aedificant. Hoc aliquid esse potest, ut ego etiam applicationem instruere instruere utendo ansible.
Infra ostendere volo Jenkinsfile genus simplex Node.JS applicationem aedificare potest.
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()
}
}
}
Quid accidit?
Per hanc methodum sequentia problemata solvimus;
- ambitus conventus configurationis tempus minuitur ad 10 - 15 minuta per project;
- applicatio omnino iterabilis ambitum construendum, cum eam viam in computatro locali tuo aedificare possis;
- nullae difficultates exstant cum pugnis inter instrumenta conventus varias versiones;
- semper in opere mundissimo quod non plusculum habet.
Ipsa solutio simplex et aperta est, ac permittit ut aliqua commoda possideas. Ita, limen introitus orta est parum comparata simplicibus mandatis pro conventibus, nunc cautum est ut semper aedificatur et ipse elaborata omnia eligere potest quae ad eius processum aedificandum necessaria sunt.
Etiam imagine quam collegi
Dum hunc articulum scribens, disceptatio de procuratoribus remotis servientibus utens orta est ut nodi dominum non onerent plugin utendo
Source: www.habr.com