He maha nga tuhinga mo Habré mo Jenkins, engari he iti noa nga korero mo te mahi a Jenkins me nga kaimahi docker. Katoa nga taputapu hanga kaupapa rongonui penei
I tenei ra he otinga mo te raru: He pai a Jenkins 2 ki te mahi tahi
He aha ahau i timata ai ki te whakaoti i tenei raru?
I te mea kei roto tatou i te kamupene
- te nui o te wa mahi ka wareware nga kaihanga ki te horoi;
- he taupatupatu kei waenganui i nga momo putanga rereke o nga wa whakahaere kotahi;
- Ko ia kaiwhakawhanake he huinga rereke rereke.
He raruraru ano, engari me korero atu ahau ki a koe mo te otinga.
Jenkins i Docker
I te mea kua tino tau a Docker ki te ao whanaketanga, tata katoa ka taea te whakahaere ma te whakamahi i a Docker. Ko taku otinga ko te whai Jenkins ki Docker ka taea e koe te whakahaere i etahi atu ipu Docker. I timata tenei patai i te tau 2013 i roto i te tuhinga "
Hei poto, me whakauru noa koe i a Docker ki roto i te ipu mahi ka whakairihia te konae /var/run/docker.sock
.
Anei tetahi tauira Dockerfile i puta mo 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
Na, ka whiwhi matou i tetahi ipu Docker ka taea te whakahaere i nga whakahau a Docker i runga i te miihini manaaki.
Hanga tatūnga
No mua tata nei ka whai waahi a Jenkins ki te whakaahua i ana ture ma te whakamahi
Na me whakatakoto he Dockerfile motuhake ki roto i te putunga, kei roto nga whare pukapuka katoa e tika ana mo te hanga. Ma tenei ara, ka taea e te kaiwhakawhanake ake te whakarite i tetahi taiao tukurua me te kore e tono ki a OPS kia whakauruhia he putanga motuhake o Node.JS ki runga i te kaihautu.
FROM node:12.10.0-alpine
RUN npm install yarn -g
He pai tenei ahua hanga mo te nuinga o nga tono Node.JS. He aha mehemea, hei tauira, ka hiahia koe ki tetahi ahua mo te kaupapa JVM me te matawai Sonar kei roto? Ka waatea koe ki te whiriwhiri i nga waahanga e hiahiatia ana mo te huihuinga.
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/
I whakaahuahia e matou te taiao huihuinga, engari he aha te mahi a Jenkins? A ka taea e nga kaihoko a Jenkins te mahi me enei whakaahua Docker me te hanga i roto.
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"
}
}
Tohutohu agent
whakamahi rawa docker
ka taea e koe te tohu:
- te ingoa o te ipu huihuinga kia rite ki to kaupapa here whakaingoa;
- nga tautohenga e hiahiatia ana hei whakahaere i te ipu hanga, kei roto i a maatau ka whakairihia te raarangi o naianei hei raarangi i roto i te ipu.
Na kei roto i nga waahanga hanga ka tohuhia e maatau nga whakahau hei whakahaere i roto i te kaihoko hanga Docker. Ka taea e tenei tetahi mea, na reira ka whakarewahia ano e ahau te tuku tono ma te whakamahi ansible.
Kei raro e hiahia ana ahau ki te whakaatu i tetahi Jenkinsfile ka taea e tetahi tono Node.JS ngawari te hanga.
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()
}
}
}
He aha te mea i tupu?
Na tenei tikanga, i whakatauhia e matou nga raru e whai ake nei:
- ka whakaitihia te wa whirihoranga huihuinga taiao ki te 10 - 15 meneti mo ia kaupapa;
- he taiao hanga tono tino whakahoki, na te mea ka taea e koe te hanga penei i runga i to rorohiko rohe;
- karekau he raruraru me nga taupatupatu i waenga i nga momo momo taputapu o te huihuinga;
- i nga wa katoa he mokowāmahi ma e kore e kaokao.
Ko te otinga ake he maamaa, he maamaa hoki ka taea e koe te whiwhi i etahi painga. Ae, kua piki ake te paepae urunga ki te whakataurite ki nga whakahau ngawari mo nga huihuinga, engari inaianei he taurangi ka hangaia i nga wa katoa ka taea e te kaiwhakawhanake te whiriwhiri i nga mea katoa e tika ana mo tana mahi hanga.
Ka taea hoki e koe te whakamahi i te ahua i kohia e ahau
I a koe e tuhi ana i tenei tuhinga, i ara ake he korerorero mo te whakamahi i nga kaihoko ki runga i nga kaitoro mamao kia kore ai e utaina te node matua ma te whakamahi i te monomai.
Source: will.com