Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Siku njema, Habr!

Leo ningependa kushiriki moja ya njia za kutumia Programu-jalizi ya Chaguo Zinazotumika fanya kazi ndani Jenkins iliyounganishwa zaidi na ya kirafiki.

Utangulizi

Kifupisho kama vile DevOps si kitu kipya tena kwa jumuiya ya TEHAMA. Kwa watu wengi, maneno "fanya DevOps" yanahusishwa na aina fulani ya kifungo cha uchawi, inapobofya, msimbo wa maombi hugeuka kiotomatiki kuwa programu iliyotumiwa na iliyojaribiwa (kila kitu kwa kweli ni ngumu zaidi, lakini tunaondoa michakato yote).

Kwa hivyo, tulipokea agizo la kutengeneza kitufe cha uchawi kama hicho ili wasimamizi waweze kupeleka programu kwa mbofyo mmoja. Kuna aina tofauti za utekelezaji wa kazi hii: kutoka kwa kuandika bot kwa mjumbe yeyote wa papo hapo hadi kuunda programu tofauti. Walakini, hii yote ina lengo sawa - kufanya kuanza kwa ujenzi na upelekaji wa programu iwe wazi na rahisi iwezekanavyo.

Kwa upande wetu tutatumia Jenkins.


Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Kazi

Unda kazi rahisi ya Jenkins ambayo itazindua ujenzi na (au) uwekaji wa huduma ndogo iliyochaguliwa ya toleo fulani.

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Data ya kuingiza

Tuna hazina kadhaa zilizo na msimbo wa chanzo wa huduma ndogo ndogo.

Kufafanua vigezo

Vigezo vifuatavyo vinapaswa kupokelewa kama pembejeo kwa kazi yetu:

  1. URL ya hazina iliyo na msimbo wa huduma ndogo ambayo tunataka kuunda na kupeleka tunapoendesha kazi.
  2. Kitambulisho cha ahadi ambayo ujenzi utatokea.

AS IS

Njia rahisi zaidi ya kukamilisha kazi hii ni kuunda vigezo viwili vya aina ya String.

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Katika kesi hii, mtumiaji atahitaji kuingiza kwa mikono njia ya hazina na kitambulisho cha ahadi, ambacho, unaona, sio rahisi kabisa.

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

ILI KUWA

Sasa hebu jaribu aina nyingine ya vigezo ili kuzingatia faida zake zote.
Wacha tuunda parameta ya kwanza na aina ya Parameta ya Chaguo, ya pili - Parameta ya Marejeleo ya Active Chaguzi. Katika parameta iliyo na aina ya Chaguo, tutaongeza kwa mikono kwenye uwanja wa Chaguo majina ya hazina ambapo nambari ya huduma zetu ndogo huhifadhiwa.

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Ikiwa watazamaji wanapenda makala hii, basi katika makala inayofuata nitaelezea mchakato wa kusanidi kazi katika Jenkins, kwa kutumia maelezo kwa njia ya kanuni (Configuration as code), i.e. hatutahitaji kuingiza majina ya kumbukumbu na kuunda vigezo, kila kitu kitatokea moja kwa moja (msimbo wetu utapokea orodha ya hazina kutoka SCM na kuunda parameter na orodha hii).

Maadili ya parameta ya pili yatajazwa kwa nguvu, kulingana na thamani gani paramu ya kwanza inachukua (test1 au test2), kwa sababu kila hazina ina orodha yake ya ahadi.

Chaguo Amilifu Kigezo cha Marejeleo tendaji ina nyuga zifuatazo za kujaza:

  1. jina - jina la parameta.
  2. Script - msimbo ambao utatekelezwa kila wakati thamani ya parameta kutoka kwa sehemu ya kigezo Iliyorejelewa inabadilishwa (kwa upande wetu, tunapochagua kati ya test1 na test2).
  3. Maelezo - maelezo mafupi ya parameter.
  4. Aina ya Chaguo - aina ya kitu kilichorejeshwa na hati (kwa upande wetu tutarudisha msimbo wa html).
  5. Kigezo kilichorejelewa - jina la parameta, wakati thamani yake inabadilishwa, msimbo kutoka kwa sehemu ya Hati itatekelezwa.

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Wacha tuendelee moja kwa moja kujaza uwanja muhimu zaidi katika paramu hii. Tunapewa aina mbili za utekelezaji wa kuchagua: kutumia Hati ya Groovy au Hati ya Hati.
Tunachagua ya kwanza, kwa kuwa Scriptler ni programu-jalizi ambayo huhifadhi hati ulizoandika hapo awali na kukuruhusu kuzitumia katika kazi zingine bila kunakili-kubandika tena.

Nambari ya Groovy kupata ahadi zote kutoka kwa hazina iliyochaguliwa:

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

Bila kuingia katika maelezo, msimbo huu hupokea jina la huduma ndogo (MICROSERVICE_NAME) kama ingizo na kutuma ombi kwa Bitbucket (njia getCommitsForMicroservice) kwa kutumia API yake, na hupata kitambulisho na kutoa ujumbe wa ahadi zote kwa huduma ndogo ndogo.
Kama ilivyotajwa hapo awali, nambari hii inapaswa kurudisha html ambayo itaonyeshwa kwenye ukurasa Jenga na Vigezo katika Jenkins, kwa hivyo tunafunga maadili yote yaliyopokelewa kutoka kwa Bitbucket kwenye orodha na kuziongeza ili kuchagua.

Baada ya kukamilisha hatua zote, tunapaswa kupata ukurasa mzuri kama huo Jenga na Vigezo.

Ikiwa ulichagua huduma ndogo ya test1:

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Ikiwa ulichagua huduma ndogo ya test2:

Kuunda vigezo vinavyobadilika katika kazi ya Jenkins, au jinsi ya kufanya kazi yako iwe rahisi kwa mtumiaji

Kubali kwamba itakuwa rahisi zaidi kwa mtumiaji kuingiliana na kazi yako kwa njia hii kuliko kunakili url kila wakati na kutafuta kitambulisho cha ahadi kinachohitajika.

PS Makala hii inatoa mfano rahisi sana, ambao hauwezi kuwa na matumizi ya vitendo katika fomu hii, kwa kuwa makusanyiko yana vigezo vingi zaidi, lakini madhumuni ya makala hii ilikuwa kuonyesha jinsi chombo kinavyofanya kazi, si kutoa suluhisho la kufanya kazi.

PSS Kama nilivyoandika hapo awali, ikiwa nakala hii ni muhimu, basi inayofuata itakuwa juu usanidi unaobadilika wa kazi za Jenkins kupitia msimbo.

Chanzo: mapenzi.com

Kuongeza maoni