Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Maalin wacan, Habr!

Maanta waxaan jeclaan lahaa inaan wadaagno mid ka mid ah siyaabaha loo isticmaalo Xulashada firfircoon Plugin hawsha ku qabato Jenkins kan ugu midaysan uguna saaxiibtinimo badan.

Horudhac

Soo gaabinta noocan oo kale ah sida DevOps hadda maaha wax ku cusub bulshada IT-ga. Dad badan, weedha "do DevOps" waxay la xiriirtaa nooc ka mid ah badhanka sixirka, marka la riixo, koodhka codsigu wuxuu si toos ah u noqdaa codsi la diray oo la tijaabiyey (wax walbaa dhab ahaantii aad ayey u dhib badan yihiin, laakiin waxaan ka soo saareynaa dhammaan hababka).

Markaa, waxaanu helnay amar ah in la sameeyo badhanka sixirka si ay maamulayaashu u geeyaan codsiga hal gujis. Waxaa jira noocyo kala duwan oo hirgelinta hawshan: laga bilaabo qorista bot mid kasta oo ka mid ah farriimaha degdegga ah ilaa horumarinta codsi gooni ah. Si kastaba ha ahaatee, waxaas oo dhami waxay leeyihiin hadaf isku mid ah - in la sameeyo bilaabista dhismaha iyo geynta codsiga mid hufan oo ku habboon intii suurtagal ah.

Xaaladeena waan isticmaali doonaa Jenkins.


Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Ujeeddo

Abuur shaqo ku habboon Jenkins oo bilaabi doonta dhismaha iyo (ama) geynta adeeg-yaraha la doortay ee nooc gaar ah.

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Xog galinta

Waxaanu haynaa dhawr kayd oo ka kooban koodka isha ee adeegyo yar yar oo kala duwan.

Qeexida xuduudaha

Halbeegyada soo socda waa in la helaa si ay u geliyaan shaqadeena:

  1. URL-ka kaydka ee leh koodka adeega-yaraha ee aan rabno inaan dhisno oo aan geyno markaan shaqada wadno.
  2. Aqoonsiga ballan-qaadka kaas oo dhismuhu ka dhici doono.

SIDA UU YAHAY

Habka ugu fudud ee hawshan lagu fulin karo waa in la sameeyo laba xuduudood oo ah nooca String.

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Xaaladdan oo kale, adeegsaduhu wuxuu u baahan doonaa inuu gacanta ku galo waddada kaydka iyo aqoonsiga ballan-qaadka, taas oo, aad aragto, maaha mid ku habboon.

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

SIDA UU NOQDO

Hadda aan isku dayno nooc kale oo cabbirro ah si aan u tixgelinno dhammaan faa'iidooyinka.
Aan abuurno halbeegga koowaad oo leh nooca Xulashada Xulashada, kan labaad - Xulashada firfircoon ee tixraaca tixraaca. Halbeegga nooca doorashada, waxaanu si gacanta ah ugu dari doonaa goobta doorashada magacyada meelaha kaydka ah ee lagu kaydiyo koodhka adeegyadayada yar yar.

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Haddii dhagaystayaashu ay jecel yihiin maqaalkan, ka dibna maqaalka soo socda waxaan ku tilmaami doonaa habka habaynta hawlaha Jenkins, iyada oo la adeegsanayo sharraxaad iyada oo loo marayo koodka (Qaabka sida koodka), i.e. Uma baahnid inaan gacanta ku galno magacyo kayd ah oo aan abuurno xuduudaha, wax walba si toos ah ayey u dhici doonaan (koodkayaga ayaa ka heli doona liiska kaydinta SCM wuxuuna abuuri doonaa halbeeg liiskan leh).

Qiimaha halbeegga labaad waxaa loo buuxin doonaa si firfircoon, iyadoo ku xiran hadba qiimaha uu qaadanayo halbeegga koowaad (tijaabada 1 ama test2), sababtoo ah kayd kastaa wuxuu leeyahay liis u gaar ah.

Xulashada Firfircoon ee cabbirka tixraaca falcelinta wuxuu leeyahay meelaha soo socda si loo buuxiyo:

  1. magaca – magaca halbeegga.
  2. script - code kaas oo la fulin doono mar kasta oo qiimaha halbeegga ka soo jeeda goobta cabbirka tixraaca la beddelo (xaaladkeenna, marka aan kala dooranno test1 iyo test2).
  3. Description - sharaxaad kooban oo ku saabsan halbeegga.
  4. Nooca Doorashada - nooca shayga lagu soo celiyay qoraalka (xaaladkeena waxaan soo celin doonaa html code).
  5. Halbeegga la tixraacay - Magaca halbeegga, marka qiimaha la beddelo, koodhka qaybta qoraalka ayaa la fulin doonaa.

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Aynu si toos ah ugu socono buuxinta goobta ugu muhiimsan ee cabbirkan. Waxa naloo soo bandhigay laba nooc oo fulin ah oo aan ka dooran karno: isticmaalka Qoraalka Groovy ama Qoraalka Scriptler.
Waxaan dooranaa kan ugu horreeya, maadaama Scriptler uu yahay kaliya plugin kaydiya qoraallada aad hore u qortay oo kuu oggolaanaya inaad u isticmaasho hawlo kale adigoon nuqul-ku dhejin markale.

Koodhka Groovy si aad u hesho dhammaan ballanqaadyada kaydka la doortay:

AUTH = "Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Base64"                           
GIT_URL = "url до вашСй SCM (https://bitbucket.org/)"                       
PROJECT_NAME = "имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠΉ области, Π³Π΄Π΅ находятся Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ"

def htmlBuild() {
    html = """
            <html>
            <head>
            <meta charset="windows-1251">
            <style type="text/css">
            div.grayTable {
            text-align: left;
            border-collapse: collapse;
            }
            .divTable.grayTable .divTableCell, .divTable.grayTable .divTableHead {
            padding: 0px 3px;
            }
            .divTable.grayTable .divTableBody .divTableCell {
            font-size: 13px;
            }
            </style>
            </head>
            <body>
        """

    def commitOptions = ""
    getCommitsForMicroservice(MICROSERVICE_NAME).each {
        commitOptions += "<option style='font-style: italic' value='COMMIT=${it.getKey()}'>${it}</option>"
    }
    html += """<p style="display: inline-block;">
        <select id="commit_id" size="1" name="value">
            ${commitOptions}
        </select></p></div>"""

    html += """
            </div>
            </div>
            </div>
            </body>
            </html>
         """
    return html
}

def getCommitsForMicroservice(microserviceRepo) {
    def commits = [:]
    def endpoint = GIT_URL + "/rest/api/1.0/projects/${PROJECT_NAME}/repos/${microserviceRepo}/commits"
    def conn = new URL(endpoint).openConnection()
    conn.setRequestProperty("Authorization", "Basic ${AUTH}")
    def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
    response.values.each {
        commits.put(it.displayId, it.message)
    }
    return commits
}

return htmlBuild()

Adigoon tafaasiil ka bixin, summadani waxay helaysaa magaca microservice (MICROSERVICE_NAME) gelinta ahaan oo u soo diraya codsi Bitbucket (habka HelCommitsForMicroservice) iyadoo la isticmaalayo API-keeda, oo uu helo id oo uu galo fariinta dhammaan ballanqaadyada adeeg-yaraha la siiyay.
Sidii hore loo sheegay, koodkan waa inuu soo celiyaa html kaas oo lagu soo bandhigi doono bogga Ku dhis Parameters gudaha Jenkins, markaa waxaan ku duubnaa dhammaan qiimayaasha laga helay Bitbucket liiska oo ku dar si aan u xusho.

Ka dib markii la dhamaystiro dhammaan tallaabooyinka, waa in aan helnaa bogga quruxda badan Ku dhis Parameters.

Haddii aad dooratay test1 microservice:

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Haddii aad dooratay test2 microservice:

Abuuritaanka cabirro firfircoon shaqada Jenkins, ama sida loo sameeyo hawshaada mid saaxiibtinimo leh

Ogow in ay aad ugu fududaan doonto isticmaaluhu in uu ula falgalo hawshaada habkan halkii aad nuqul ka samayn lahayd url wakhti kasta oo aad raadinayso aqoonsiga ballan-qaadka ee loo baahan yahay.

PS Maqaalkani waxa uu bixiyaa tusaale aad u fudud, kaas oo laga yaabo in aan loo isticmaalin wax ku ool ah foomkan, maadaama shirarka ay leeyihiin meelo badan oo badan oo kala duwan, laakiin ujeedada maqaalkani waxay ahayd in la muujiyo sida qalabku u shaqeeyo, ma aha in la bixiyo xal shaqo.

PSS Sidii aan hore u qoray, haddii maqaalkani faa'iido leeyahay, markaa kan xiga ayaa ku saabsan qaabeynta firfircoon ee hawlaha Jenkins via code.

Source: www.habr.com

Add a comment