Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Góðan dag, Habr!

Í dag langar mig að deila einni af leiðunum til að nota Active Choices Plugin gera verkefnið í Jenkins samræmdasta og notendavænasta.

Inngangur

Slík skammstöfun eins og DevOps er ekki lengur eitthvað nýtt fyrir upplýsingatæknisamfélagið. Fyrir marga er setningin „gera DevOps“ tengd einhvers konar töfrahnappi, þegar smellt er á hann breytist forritskóðinn sjálfkrafa í uppsett og prófað forrit (allt er í raun flóknara, en við erum að draga úr öllum ferlum).

Þannig að við fengum pöntun um að búa til svona töfrahnapp þannig að stjórnendur gætu sett forritið í notkun með einum smelli. Það eru ýmsar gerðir af útfærslu á þessu verkefni: allt frá því að skrifa vélmenni fyrir einhvern skyndiboða til að þróa sérstakt forrit. Engu að síður hefur allt þetta sama markmið - að gera upphaf smíði og dreifingu forritsins eins gagnsætt og þægilegt og mögulegt er.

Í okkar tilviki munum við nota Jenkins.


Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Verkefni

Búðu til þægilegt Jenkins starf sem mun hefja byggingu og (eða) dreifingu á valinni örþjónustu ákveðinnar útgáfu.

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Inntaksgögn

Við höfum nokkrar geymslur sem innihalda frumkóða ýmissa örþjónustu.

Skilgreina færibreytur

Eftirfarandi breytur ættu að berast sem inntak í starf okkar:

  1. Vefslóð geymslunnar með örþjónustukóðanum sem við viljum byggja og dreifa þegar verkið er keyrt.
  2. Auðkenni skuldbindingarinnar sem byggingin mun eiga sér stað.

EINS OG ER

Auðveldasta leiðin til að ná þessu verkefni er að búa til tvær breytur af gerðinni String.

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Í þessu tilfelli mun notandinn þurfa að slá inn slóðina að geymslunni og commit auðkennið handvirkt, sem, þú sérð, er ekki alveg þægilegt.

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

EINS OG AÐ VERA

Nú skulum við reyna aðra tegund af breytum til að íhuga alla kosti þess.
Við skulum búa til fyrstu færibreytuna með gerðinni Choice Parameter, hina - Active Choices Reactive Reference Parameter. Í færibreytunni með tegundinni Choice, munum við handvirkt bæta við í valreitnum nöfnum geymslunnar þar sem kóðinn fyrir örþjónustuna okkar er geymdur.

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Ef áhorfendum líkar við þessa grein, þá mun ég í næstu grein lýsa ferlinu við að stilla verkefni í Jenkins, með því að nota lýsingu í gegnum kóða (Configuration as code), þ.e. við munum ekki þurfa að slá inn geymslunöfn handvirkt og búa til færibreytur, allt gerist sjálfkrafa (kóðinn okkar mun fá lista yfir geymslur frá SCM og búa til færibreytu með þessum lista).

Gildi seinni færibreytunnar verða fyllt út á kraftmikinn hátt, allt eftir því hvaða gildi fyrsta færibreytan tekur (test1 eða test2), vegna þess að hver geymsla hefur sinn eigin lista yfir skuldbindingar.

Active Choices Reactive Reference Parameter hefur eftirfarandi reiti til að fylla út:

  1. heiti – nafn færibreytu.
  2. Script – kóða sem verður keyrður í hvert skipti sem gildi færibreytunnar úr reitnum Tilvísað færibreyta er breytt (í okkar tilviki, þegar við veljum á milli test1 og test2).
  3. Lýsing – stutt lýsing á færibreytunni.
  4. Val Tegund – tegund hlutar sem handritið skilar (í okkar tilfelli munum við skila HTML kóða).
  5. Tilvísað færibreyta – heiti færibreytunnar, þegar gildi hennar er breytt verður kóðinn úr Script hlutanum keyrður.

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Við skulum halda áfram beint að því að fylla út mikilvægasta reitinn í þessari færibreytu. Okkur er boðið upp á tvenns konar útfærslu til að velja úr: að nota Groovy handrit eða Scriptler Script.
Við veljum þann fyrsta þar sem Scriptler er bara viðbót sem vistar forskriftir sem þú hefur áður skrifað og gerir þér kleift að nota þau í önnur verkefni án þess að copy-paste aftur.

Groovy kóða til að fá allar skuldbindingar frá völdu geymslunni:

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

Án þess að fara nánar út í smáatriði fær þessi kóði nafn smáþjónustunnar (MICROSERVICE_NAME) sem inntak og sendir beiðni til Bitbucket (aðferð getCommitsForMicroservice) með því að nota API þess og fær auðkenni og skuldbindingarskilaboð allra skuldbindinga fyrir tiltekna örþjónustu.
Eins og fyrr segir ætti þessi kóði að skila html sem mun birtast á síðunni Byggja með færibreytum í Jenkins, þannig að við vöfum öll móttekin gildi frá Bitbucket í lista og bætum þeim við til að velja.

Eftir að hafa lokið öllum skrefum ættum við að fá svo fallega síðu Byggja með færibreytum.

Ef þú valdir test1 örþjónustu:

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Ef þú valdir test2 örþjónustu:

Að búa til kraftmikla breytur í Jenkins starfi, eða hvernig á að gera verkefni þitt notendavænt

Sammála því að það verður mun þægilegra fyrir notandann að hafa samskipti við verkefnið þitt á þennan hátt en að afrita slóðina í hvert skipti og leita að tilskildu commit id.

PS Þessi grein gefur mjög einfaldað dæmi, sem gæti ekki verið hagnýtt í þessu formi, þar sem samsetningar hafa miklu fleiri mismunandi færibreytur, en tilgangur þessarar greinar var að sýna hvernig tólið virkar, ekki að bjóða upp á virka lausn.

PSS Eins og ég skrifaði áðan, ef þessi grein er gagnleg, þá mun næsta vera um kraftmikla stillingu Jenkins verkefna með kóða.

Heimild: www.habr.com

Bæta við athugasemd