په جینکنز کې د پروژو راټولولو څرنګوالی که تاسو ډیری مختلف چاپیریال ته اړتیا لرئ

په جینکنز کې د پروژو راټولولو څرنګوالی که تاسو ډیری مختلف چاپیریال ته اړتیا لرئ

د جینکنز په اړه د هابري په اړه ډیری مقالې شتون لري، مګر یو څو مثالونه بیانوي چې څنګه جینکنز او ډاکر اجنټ کار کوي. ټول مشهور د پروژې جوړونې وسیلې لکه drone.io, د بټبکټ پایپ لاین, ګیتاباب, د GitHub کړنې او نور، کولی شي هرڅه په کانتینرونو کې راټول کړي. مګر د جینکنز په اړه څه؟

نن ورځ د ستونزې حل شتون لري: جینکنز 2 سره په کار کولو کې عالي دی د ډاکر اجنټان. پدې مقاله کې زه غواړم خپله تجربه شریک کړم او وښیم چې تاسو څنګه کولی شئ دا پخپله ترسره کړئ.

ولې ما د دې ستونزې حل پیل کړ؟

ځکه چې موږ په شرکت کې یو سیترونیم ځکه چې موږ ډیری مختلف ټیکنالوژي کاروو، موږ باید د اسمبلۍ ماشین کې د Node.JS، Gradle، Ruby، JDK او نورو مختلف نسخې وساتو. مګر ډیری وختونه د نسخې شخړې مخنیوی نشي کیدی. هو، تاسو به سم وي که تاسو ووایاست چې د مختلفو نسخو مدیران شتون لري لکه nvm، rvm، مګر هرڅه د دوی سره سم ندي او دا حلونه ستونزې لري:

  • د چلولو لوی مقدار چې پراختیا کونکي یې پاکول هیر کړي؛
  • د ورته وخت د مختلفو نسخو ترمنځ شخړې شتون لري؛
  • هر پرمخ وړونکی د اجزاو مختلف سیټ ته اړتیا لري.

نورې ستونزې هم شته خو د حل په اړه یې درته ووایم.

جینکنز په ډاکر کې

څرنګه چې ډاکر اوس په پرمختیایي نړۍ کې ښه تاسیس شوی، نږدې هرڅه د ډاکر په کارولو سره پرمخ وړل کیدی شي. زما حل دا دی چې جینکنز په ډاکر کې ولرئ او د نورو ډاکر کانټینرونو چلولو وړ اوسئ. دا پوښتنه په 2013 کې په مقاله کې بیرته وپوښتل شوه "ډاکر اوس کولی شي په ډاکر کې وګرځي".

په لنډه توګه ، تاسو اړتیا لرئ پخپله په کاري کانټینر کې ډاکر نصب کړئ او فایل نصب کړئ /var/run/docker.sock.

دلته د ډاکرفیل مثال دی چې د جینکنز لپاره وګرځید.

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

پدې توګه ، موږ د ډاکر کانټینر ترلاسه کړ چې کولی شي په کوربه ماشین کې د ډاکر امرونه اجرا کړي.

تنظیمات جوړ کړئ

ډیر وخت دمخه جینکنز فرصت ترلاسه کړ چې خپل قواعد په کارولو سره تشریح کړي پایپ لاین نحو، کوم چې د جوړونې سکریپټ بدلول او په ذخیره کې ذخیره کول خورا اسانه کوي.

نو راځئ چې پخپله ذخیره کې یو ځانګړی ډاکر فایل واچوو ، کوم چې به د جوړولو لپاره اړین ټول کتابتونونه ولري. پدې توګه ، پراختیا کونکی پخپله کولی شي د تکرار وړ چاپیریال چمتو کړي او د OPS څخه به په کوربه کې د Node.JS ځانګړي نسخه نصبولو غوښتنه ونه کړي.

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 غوښتنلیک رامینځته کولی شي.

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 دقیقو ته راټیټ شوی؛
  • د بشپړ تکرار وړ غوښتنلیک جوړونې چاپیریال، ځکه چې تاسو کولی شئ دا په خپل محلي کمپیوټر کې دا ډول جوړ کړئ؛
  • د اسمبلۍ وسیلو مختلف نسخو ترمینځ د شخړو سره کومه ستونزه شتون نلري؛
  • تل پاک کاري ځای چې بند نه وي.

حل پخپله ساده او څرګند دی او تاسو ته اجازه درکوي ځینې ګټې ترلاسه کړئ. هو ، د ننوتلو حد د مجلسونو لپاره د ساده حکمونو په پرتله یو څه لوړ شوی ، مګر اوس تضمین شتون لري چې دا به تل جوړ شي او پراختیا کونکی پخپله کولی شي هرڅه غوره کړي چې د هغه د جوړولو پروسې لپاره اړین وي.

تاسو کولی شئ هغه عکس هم وکاروئ چې ما راټول کړی جینکنز + ډاکر. ټولې سرچینې خلاصې او موقعیت لري rmuhamedgaliev/jenkins_docker.

د دې مقالې لیکلو پرمهال ، په ریموټ سرورونو کې د اجنټانو کارولو په اړه بحث راپورته شو ترڅو د پلگ ان په کارولو سره ماسټر نوډ پورته نه کړي. docker-plugin. مګر زه به په راتلونکي کې پدې اړه خبرې وکړم.

سرچینه: www.habr.com

Add a comment