Betsaka ny lahatsoratra momba an'i HabrΓ© momba an'i Jenkins, saingy vitsy no mamaritra ohatra momba ny fomba fiasan'i Jenkins sy ny mpiasan'ny docker. Ny fitaovana fananganana tetikasa malaza rehetra toy ny
Ankehitriny dia misy vahaolana amin'ny olana: Jenkins 2 dia tsara amin'ny fiaraha-miasa
Nahoana aho no nanomboka namaha ity olana ity?
Satria ao anatin'ny orinasa izahay
- fotoana be dia be izay hadinon'ny mpamorona ny fanadiovana;
- misy fifandirana eo amin'ny dikan-teny samy hafa amin'ny fotoana iray ihany;
- Ny mpamorona tsirairay dia mila andiana singa samihafa.
Misy olana hafa, fa avelao aho hilaza aminao ny vahaolana.
Jenkins ao amin'ny Docker
Satria efa miorina tsara amin'ny tontolon'ny fampandrosoana izao i Docker, saika ny zavatra rehetra dia azo ampiasaina amin'ny fampiasana Docker. Ny vahaolana azoko dia ny fananana Jenkins ao amin'ny Docker ary afaka mitantana container Docker hafa. Ity fanontaniana ity dia nanomboka napetraka tamin'ny 2013 tao amin'ny lahatsoratra "
Raha fintinina dia mila mametraka an'i Docker ao anaty fitoeran-jiro miasa ianao ary mametraka ilay rakitra /var/run/docker.sock
.
Ity misy ohatra Dockerfile izay niseho ho an'i 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
Noho izany dia nahazo container Docker izahay izay afaka manatanteraka baiko Docker amin'ny milina mpampiantrano.
Manangana setup
Vao tsy ela akory izay no nahazoan'i Jenkins fahafahana mamaritra ny fitsipiny amin'ny fampiasana
Koa andao hametraka Dockerfile manokana ao amin'ny tahiry, izay ahitana ny tranomboky rehetra ilaina amin'ny fananganana. Amin'izany fomba izany, ny mpandrindra ny tenany dia afaka manomana tontolo azo averina ary tsy mila mangataka amin'ny OPS hametraka dikan-teny manokana an'ny Node.JS amin'ny mpampiantrano.
FROM node:12.10.0-alpine
RUN npm install yarn -g
Ity sary fananganana ity dia mety amin'ny ankamaroan'ny fampiharana Node.JS. Ahoana raha ohatra ka mila sary ho an'ny tetikasa JVM misy scanner Sonar ao anatiny ianao? Afaka misafidy ireo singa ilainao amin'ny fivoriambe ianao.
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/
Nofaritanay ny tontolon'ny fivoriambe, fa inona no idiran'i Jenkins amin'izany? Ary ny mpiasan'ny Jenkins dia afaka miasa amin'ny sary Docker toy izany ary manangana azy ireo ao anatiny.
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"
}
}
toromarika agent
mampiasa fananana docker
izay ahafahanao mamaritra:
- ny anaran'ny fitoeran'ny fivoriambe araka ny politikan'ny anaranao;
- Ny arguments dia ilaina amin'ny fampandehanana ny container build, izay amin'ny tranga misy antsika dia mametraka ny lahatahiry ankehitriny ho lahatahiry ao anaty container.
Ary efa eo amin'ny dingana fananganana dia manondro izay baiko hotanterahina ao anatin'ny Docker build agent. Mety ho na inona na inona izany, noho izany dia manomboka ny fametrahana fampiharana mampiasa ansible koa aho.
Eto ambany aho dia te-hampiseho Jenkinsfile jeneraly izay azon'ny fampiharana Node.JS aorina.
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()
}
}
}
Inona no nitranga?
Noho ity fomba ity dia namaha ireto olana manaraka ireto izahay:
- Ahena ho 10 - 15 minitra isaky ny tetikasa ny fotoam-pivoriana fivoriambe;
- tontolo iainana fanamboarana fampiharana azo averina tanteraka, satria azonao atao izany amin'ny solosainao eo an-toerana;
- tsy misy olana amin'ny fifandirana eo amin'ny dikan-teny samihafa amin'ny fitaovana fivoriambe;
- toeram-piasana madio foana tsy ho tsentsina.
Ny vahaolana mihitsy dia tsotra sy mazava ary mamela anao hahazo tombony. Eny, niakatra kely ny tokonam-pidirana raha ampitahaina amin'ny baiko tsotra ho an'ny fivoriambe, fa izao dia misy antoka fa haorina foana izy io ary ny mpamorona mihitsy no afaka misafidy izay rehetra ilaina amin'ny fizotrany fananganana.
Azonao atao koa ny mampiasa ny sary nangoniko
Teo am-panoratana ity lahatsoratra ity dia nisy adihevitra nipoitra momba ny fampiasana mpiasa amin'ny mpizara lavitra mba tsy hampidirana ny node master amin'ny fampiasana plugin.
Source: www.habr.com