Akwai labarai da yawa akan Habré game da Jenkins, amma kaɗan sun bayyana misalan yadda Jenkins da wakilan docker ke aiki. Duk shahararrun kayan aikin gina kayan aikin kamar
A yau akwai mafita ga matsalar: Jenkins 2 yana da kyau a aiki tare
Me yasa na fara magance wannan matsalar?
Tunda muna cikin kamfani
- babban adadin lokacin gudu wanda masu haɓakawa suka manta don tsaftacewa;
- akwai rikice-rikice tsakanin nau'ikan nau'ikan nau'ikan lokaci guda;
- Kowane mai haɓakawa yana buƙatar saiti na sassa daban-daban.
Akwai sauran matsalolin, amma bari in gaya muku game da mafita.
Jenkins in Docker
Tunda Docker yanzu yana da kyau a cikin ci gaban duniya, kusan komai ana iya gudanar da shi ta amfani da Docker. Maganina shine samun Jenkins a Docker kuma in sami damar gudanar da wasu kwantena Docker. An fara yin wannan tambayar a cikin 2013 a cikin labarin "
A takaice, kawai kuna buƙatar shigar da Docker kanta a cikin kwandon aiki kuma ku hau fayil ɗin /var/run/docker.sock
.
Anan akwai misalin Dockerfile wanda ya juya ga 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
Don haka, mun sami akwati Docker wanda zai iya aiwatar da umarnin Docker akan injin mai masauki.
Gina saitin
Ba da dadewa ba Jenkins ya sami damar bayyana dokokinta ta amfani da shi
Don haka bari mu sanya Dockerfile na musamman a cikin ma'ajiyar kanta, wanda zai ƙunshi duk ɗakunan karatu da ake buƙata don ginin. Ta wannan hanyar, mai haɓakawa da kansa zai iya shirya yanayi mai maimaitawa kuma ba zai nemi OPS don shigar da takamaiman sigar Node.JS akan mai watsa shiri ba.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Wannan hoton ginin ya dace da yawancin aikace-aikacen Node.JS. Me zai faru idan, alal misali, kuna buƙatar hoto don aikin JVM tare da na'urar daukar hoto na Sonar a ciki? Kuna da 'yanci don zaɓar abubuwan da kuke buƙata don haɗuwa.
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/
Mun kwatanta yanayin taron, amma menene ya shafi Jenkins da shi? Kuma wakilan Jenkins na iya aiki tare da irin waɗannan hotunan Docker kuma su gina su a ciki.
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"
}
}
Umarni agent
yana amfani da dukiya docker
inda zaka iya sakawa:
- sunan kwandon taro bisa ga manufar sunan ku;
- muhawarar da ake buƙata don gudanar da ginin ginin, inda a cikin yanayinmu muke hawa kundin adireshi na yanzu azaman kundin adireshi a cikin akwati.
Kuma a cikin matakan ginawa mun nuna waɗanne umarni don aiwatarwa a cikin wakili na ginin Docker. Wannan na iya zama komai, don haka na ƙaddamar da tura aikace-aikacen ta amfani da mai yiwuwa.
A ƙasa ina so in nuna janar Jenkinsfile wanda aikace-aikacen Node.JS mai sauƙi zai iya ginawa.
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()
}
}
}
Me ya faru?
Godiya ga wannan hanyar, mun magance matsalolin masu zuwa:
- An rage lokacin daidaitawar mahalli zuwa 10 - 15 mintuna a kowane aikin;
- yanayin gina aikace-aikacen gaba ɗaya mai maimaitawa, tunda zaku iya gina shi ta wannan hanyar akan kwamfutar gida;
- babu matsaloli tare da rikice-rikice tsakanin nau'ikan kayan aikin taro daban-daban;
- koyaushe wurin aiki mai tsabta wanda ba ya toshewa.
Maganin kanta yana da sauƙi kuma a bayyane kuma yana ba ku damar samun wasu fa'idodi. Haka ne, ƙofar shiga ya tashi kadan idan aka kwatanta da umarni masu sauƙi don majalisai, amma yanzu akwai tabbacin cewa za a gina shi koyaushe kuma mai haɓakawa da kansa zai iya zaɓar duk abin da ya dace don tsarin gininsa.
Hakanan zaka iya amfani da hoton da na tattara
Yayin rubuta wannan labarin, tattaunawa ta taso game da yin amfani da wakilai akan sabar masu nisa don kada a ɗora kullin maigidan ta amfani da plugin.
source: www.habr.com