ஜென்கின்ஸ் பற்றி ஹப்ரேயில் பல கட்டுரைகள் உள்ளன, ஆனால் ஜென்கின்ஸ் மற்றும் டோக்கர் முகவர்கள் எவ்வாறு செயல்படுகிறார்கள் என்பதற்கான உதாரணங்களை சிலர் விவரிக்கின்றனர். போன்ற அனைத்து பிரபலமான திட்ட உருவாக்க கருவிகள்
இன்று பிரச்சனைக்கு ஒரு தீர்வு உள்ளது: Jenkins 2 உடன் வேலை செய்வதில் சிறந்தது
நான் ஏன் இந்த சிக்கலை தீர்க்க ஆரம்பித்தேன்?
நாங்கள் நிறுவனத்தில் இருப்பதால்
- டெவலப்பர்கள் சுத்தம் செய்ய மறந்துவிடும் அதிக அளவு இயக்க நேரம்;
- ஒரே இயக்க நேரங்களின் வெவ்வேறு பதிப்புகளுக்கு இடையே முரண்பாடுகள் உள்ளன;
- ஒவ்வொரு டெவலப்பருக்கும் வெவ்வேறு கூறுகள் தேவை.
மற்ற பிரச்சனைகள் உள்ளன, ஆனால் தீர்வு பற்றி நான் உங்களுக்கு சொல்கிறேன்.
டோக்கரில் ஜென்கின்ஸ்
டோக்கர் இப்போது வளர்ச்சி உலகில் நன்கு நிறுவப்பட்டிருப்பதால், டோக்கரைப் பயன்படுத்தி கிட்டத்தட்ட எதையும் இயக்க முடியும். டோக்கரில் ஜென்கின்ஸ் இருப்பதும் மற்ற டோக்கர் கொள்கலன்களை இயக்குவதும் எனது தீர்வு. இந்த கேள்வி 2013 இல் "" என்ற கட்டுரையில் மீண்டும் கேட்கத் தொடங்கியது.
சுருக்கமாக, நீங்கள் வேலை செய்யும் கொள்கலனில் டோக்கரை நிறுவி கோப்பை ஏற்ற வேண்டும் /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
எனவே, ஹோஸ்ட் கணினியில் டோக்கர் கட்டளைகளை இயக்கக்கூடிய டோக்கர் கொள்கலன் கிடைத்தது.
அமைப்பை உருவாக்கவும்
நீண்ட காலத்திற்கு முன்பு ஜென்கின்ஸ் அதன் விதிகளைப் பயன்படுத்தி விவரிக்கும் வாய்ப்பைப் பெற்றார்
எனவே, ஒரு சிறப்பு டாக்கர்ஃபைலை களஞ்சியத்திலேயே வைப்போம், அதில் உருவாக்கத் தேவையான அனைத்து நூலகங்களும் இருக்கும். இந்த வழியில், டெவெலப்பரே மீண்டும் மீண்டும் செய்யக்கூடிய சூழலைத் தயாரிக்கலாம் மற்றும் ஹோஸ்டில் Node.JS இன் குறிப்பிட்ட பதிப்பை நிறுவ OPS ஐக் கேட்க வேண்டியதில்லை.
FROM node:12.10.0-alpine
RUN npm install yarn -g
இந்த உருவாக்கப் படம் பெரும்பாலான Node.JS பயன்பாடுகளுக்கு ஏற்றது. எடுத்துக்காட்டாக, சோனார் ஸ்கேனருடன் JVM திட்டத்திற்கான படம் உங்களுக்குத் தேவைப்பட்டால் என்ன செய்வது? நீங்கள் சட்டசபைக்குத் தேவையான கூறுகளைத் தேர்ந்தெடுக்கலாம்.
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
நீங்கள் எங்கே குறிப்பிடலாம்:
- உங்கள் பெயரிடும் கொள்கையின்படி சட்டசபை கொள்கலனின் பெயர்;
- பில்ட் கன்டெய்னரை இயக்குவதற்கு வாதங்கள் தேவை, நம் விஷயத்தில் தற்போதைய கோப்பகத்தை கொள்கலனுக்குள் ஒரு கோப்பகமாக ஏற்றுவோம்.
டோக்கர் பில்ட் ஏஜெண்டிற்குள் எந்த கட்டளைகளை இயக்க வேண்டும் என்பதை ஏற்கனவே உருவாக்க படிகளில் குறிப்பிடுகிறோம். இது எதுவாகவும் இருக்கலாம், எனவே நான் அன்சிபிளைப் பயன்படுத்தி பயன்பாட்டு வரிசைப்படுத்தலையும் தொடங்குகிறேன்.
ஒரு எளிய Node.JS பயன்பாடு உருவாக்கக்கூடிய பொதுவான Jenkinsfile ஐ கீழே காட்ட விரும்புகிறேன்.
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 நிமிடங்களாக குறைக்கப்படுகிறது;
- உங்கள் உள்ளூர் கணினியில் இதை நீங்கள் உருவாக்க முடியும் என்பதால், முற்றிலும் மீண்டும் மீண்டும் செய்யக்கூடிய பயன்பாட்டு உருவாக்க சூழல்;
- அசெம்பிளி கருவிகளின் வெவ்வேறு பதிப்புகளுக்கு இடையில் மோதல்களில் எந்த பிரச்சனையும் இல்லை;
- எப்போதும் ஒரு சுத்தமான பணியிடம் அடைக்கப்படாது.
தீர்வு எளிமையானது மற்றும் வெளிப்படையானது மற்றும் சில நன்மைகளைப் பெற உங்களை அனுமதிக்கிறது. ஆம், அசெம்பிளிகளுக்கான எளிய கட்டளைகளுடன் ஒப்பிடும்போது நுழைவு வாசல் சற்று உயர்ந்துள்ளது, ஆனால் இப்போது அது எப்போதும் கட்டமைக்கப்படும் என்பதற்கு உத்தரவாதம் உள்ளது மற்றும் டெவலப்பர் தனது உருவாக்க செயல்முறைக்கு தேவையான அனைத்தையும் தேர்வு செய்யலாம்.
நான் சேகரித்த படத்தையும் நீங்கள் பயன்படுத்தலாம்
இந்த கட்டுரையை எழுதும் போது, ஒரு செருகுநிரலைப் பயன்படுத்தி முதன்மை முனையை ஏற்றாமல் இருக்க தொலை சேவையகங்களில் முகவர்களைப் பயன்படுத்துவது பற்றி ஒரு விவாதம் எழுந்தது.
ஆதாரம்: www.habr.com