E faʻafefea ona aoina galuega i Jenkins pe a manaʻomia ni siosiomaga eseese se tele

E faʻafefea ona aoina galuega i Jenkins pe a manaʻomia ni siosiomaga eseese se tele

E tele tala i Habré e uiga ia Jenkins, ae toaitiiti e faʻamatalaina faʻataʻitaʻiga o le auala e galue ai Jenkins ma sui o loʻo galue. O galuega ta'uta'ua uma e fausia meafaigaluega pei Drone.io, Bitbucket Pipeline, GitLab, GitHub gaioiga ma isi, e mafai ona aoina mea uma i totonu o koneteina. Ae faapefea Jenkins?

O aso nei o loʻo i ai se fofo i le faʻafitauli: Jenkins 2 e lelei tele i le galulue faatasi Sui o Docker. I lenei tusiga ou te fia faʻasoa atu loʻu poto masani ma faʻaalia pe faʻapefea ona e faia oe lava ia.

Aisea na amata ai ona ou foia lenei faafitauli?

Talu ai o loo tatou i ai i le kamupani Citronium Talu ai matou te faʻaaogaina le tele o tekinolosi eseese, e tatau ona matou tausia faʻasologa eseese o Node.JS, Gradle, Ruby, JDK ma isi i luga o le masini faʻapotopotoga. Ae o le tele o taimi e le mafai ona aloese mai feteenaiga version. Ioe, o le ae saʻo pe afai e te fai mai o loʻo i ai ni faʻatonuga eseese e pei o le nvm, rvm, ae le o mea uma e sologa lelei ma i latou ma o nei fofo e iai faʻafitauli:

  • se aofaiga tele o taimi taʻavale e galo ai le au atinaʻe e faʻamama;
  • o loʻo iai feteʻenaʻiga i le va o lomiga eseese o taimi tutusa;
  • E manaʻomia e soʻo se atinaʻe se seti eseese o vaega.

E i ai isi faʻafitauli, ae seʻi ou taʻu atu ia te oe le fofo.

Jenkins i Docker

Talu ai o Docker ua faʻamautuina nei i le atinaʻeina o le lalolagi, toetoe lava o mea uma e mafai ona faʻaogaina e faʻaaoga ai Docker. O laʻu fofo o le i ai o Jenkins i Docker ma mafai ona taʻavale isi pusa Docker. O lenei fesili na amata toe fesiligia i le 2013 i le tusiga "Ua mafai nei ona tamoe Docker i totonu o Docker".

I se faapuupuuga, e tatau ona e faʻapipiʻi Docker lava ia i totonu o se koneteina galue ma faʻapipiʻi le faila /var/run/docker.sock.

O se faʻataʻitaʻiga Dockerfile na faʻaalia 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

O le mea lea, matou te maua se pusa Docker e mafai ona faʻatinoina tulafono a Docker i luga o le masini talimalo.

Fausia le seti

E leʻi leva talu ai na maua ai e Jenkins le avanoa e faʻamatala ai ana tulafono faʻaaoga Pipili syntax, lea e faigofie ai ona sui le faʻailoga fau ma teu i totonu o le fale teu oloa.

Sei o tatou tuʻuina se Dockerfile faapitoa i totonu o le fale teu oloa, lea o le a aofia ai faletusi uma e manaʻomia mo le fausiaina. I lenei auala, e mafai e le tagata atiaeina lava ia ona saunia se siosiomaga toe faʻaaogaina ma o le a le tatau ona fai atu ia OPS e faʻapipiʻi se faʻamatalaga patino o Node.JS i luga o le talimalo.

FROM node:12.10.0-alpine

RUN npm install yarn -g

O lenei ata fausia e talafeagai mo le tele o talosaga Node.JS. Ae faʻapefea pe afai, mo se faʻataʻitaʻiga, e te manaʻomia se ata mo se poloketi JVM ma se Sonar scanner e aofia ai i totonu? E te saoloto e filifili vaega e te manaʻomia mo le faʻapotopotoga.

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/

Na matou faʻamatalaina le siosiomaga faʻapotopotoga, ae o le a le mea e fai e Jenkins? Ma e mafai e sui Jenkins ona galulue faʻatasi ma ia ata Docker ma fausia i totonu.

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"
    }
}

Faatonuga agent faaaoga meatotino dockermea e mafai ona e faʻamaonia:

  • le igoa o le pusa faʻapotopotoga e tusa ai ma lau tulafono faʻaigoaina;
  • finauga e manaʻomia e faʻatautaia ai le atigipusa faufale, lea i la matou tulaga matou te faʻapipiʻi ai le lisi o loʻo i ai nei o se tusi i totonu o le koneteina.

Ma ua i ai i le fausiaina o laasaga matou te faʻaalia po o fea poloaiga e faʻatino i totonu o le Docker build agent. E mafai ona avea lenei mea ma soʻo se mea, o lea ou te faʻalauiloaina ai foʻi le faʻaogaina o talosaga e faʻaaoga ai le ansible.

Lalo ou te manaʻo e faʻaalia se Jenkinsfile lautele e mafai e se Node.JS faigofie ona fausia.

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()
        }
    }

}

O le a le mea ua tupu?

Faafetai i lenei metotia, na matou foia ai faafitauli nei:

  • fa'aitiitiga taimi fa'aopoopo fa'atasiga si'osi'omaga i le 10 - 15 minute i le poloketi;
  • se siosiomaga fausia atoatoa talosaga toe faia, talu ai e mafai ona e fausia i lenei auala i luga o lau komepiuta i le lotoifale;
  • e leai ni faʻafitauli i feeseeseaiga i le va o ituaiga eseese o meafaigaluega faʻapotopotoga;
  • i taimi uma se potu faigaluega mama e le faʻafefe.

O le fofo lava ia e faigofie ma manino ma faʻatagaina oe e maua ni faʻamanuiaga. Ioe, o le faitotoa ulufale ua siitia laʻititi pe a faʻatusatusa i tulafono faigofie mo faʻapotopotoga, ae o lea ua i ai se faʻamautinoaga o le a fausia pea ma e mafai e le tagata faʻapitoa ona filifili mea uma e manaʻomia mo lona fausiaina.

E mafai foi ona e faʻaogaina le ata na ou aoina Jenkins + Docker. O puna'oa uma o lo'o tatala ma maua ile rmuhamedgaliev/jenkins_docker.

Aʻo tusia lenei tusiga, na tulaʻi mai se talanoaga e uiga i le faʻaaogaina o sui i luga o sapalai mamao ina ia aua neʻi utaina le master node e faʻaaoga ai se plugin. docker-plugin. Ae o le a ou talanoa e uiga i lenei mea i le lumanaʻi.

puna: www.habr.com

Faaopoopo i ai se faamatalaga