Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Zuva rakanaka, Habr!

Nhasi ndinoda kugovera imwe yenzira dzekushandisa Active Sarudzo Plugin ita basa mukati Jenkins yakanyanya kubatana uye mushandisi-inoshamwaridzika.

Nhanganyaya

Chidimburidzo chakadai seDevOps hachisisiri chinhu chitsva kunharaunda yeIT. Kune vanhu vazhinji, mutsara wekuti "ita DevOps" unobatanidzwa neimwe mhando yemashiripiti bhatani, kana yadzvanywa, iyo kodhi yekunyorera inoshanduka kuita yakatumirwa uye yakaedzwa application (zvese zvakanyanyisa kuomarara, asi isu tiri kubvisa kubva kune ese maitiro).

Saka, isu takagamuchira rairo yekugadzira bhatani remashiripiti rakadaro kuitira kuti vatariri vagone kuendesa application nekudzvanya kumwe chete. Kune marudzi akasiyana-siyana ekuita basa iri: kubva pakunyora bot kune chero yevatumwa ipapo kusvika kugadzira yakaparadzana application. Zvakangodaro, zvese izvi zvine chinangwa chimwe - kuita kutanga kuvaka uye kutumira kwechishandiso kuve pachena uye kuri nyore sezvinobvira.

Muchiitiko chedu tichashandisa Jenkins.


Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Basa

Gadzira iri nyore Jenkins basa iro rinovhura kuvaka uye (kana) kutumira kweiyo yakasarudzwa microservice yeimwe vhezheni.

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Input data

Isu tine akati wandei marepositori ane kodhi kodhi yeakasiyana mamicroservices.

Kutsanangura parameters

Aya anotevera ma paramita anofanirwa kugamuchirwa sechipo kubasa redu:

  1. Iyo URL yerepository ine microservice kodhi yatinoda kuvaka uye kutumira kana tichiita basa.
  2. ID yechibatiso kubva kune iyo kuvaka kuchaitika.

AS IS

Nzira iri nyore yekuita basa iri kugadzira ma parameter maviri emhando String.

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Muchiitiko ichi, mushandisi anozofanira kupinda munzira inoenda kunzvimbo yekuchengetera uye iyo id yekuzvipira, iyo, iwe unoona, haina kunyatsoita.

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

SEZVAVE

Zvino ngatiedze imwe mhando parameters kufunga zvose zvakanakira ayo.
Ngatigadzire yekutanga paramende nerudzi rweSarudzo Parameter, yechipiri - Active Sarudzo Reactive Reference Parameter. Mune paramende ine mhando yeSarudzo, isu tichawedzera nemaoko mumunda weSarudzo mazita ezvinyorwa panochengeterwa kodhi yemicroservices yedu.

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Kana vateereri vachida chinyorwa ichi, zvino munyaya inotevera ini ndichatsanangura maitiro ekugadzirisa mabasa muJenkins, uchishandisa tsanangudzo kuburikidza nekodhi (Kugadzirisa sekodhi), i.e. isu hatizodi kuisa mazita ekuisa mazita uye kugadzira ma parameter, zvese zvichaitika otomatiki (kodhi yedu inogashira runyoro rwezvinyorwa kubva kuSCM uye kugadzira parameter ine runyorwa urwu).

Hukoshi hwechipiri paramende huchazadzwa zvine simba, zvichienderana nekukosha kwekutanga kunotora (test1 kana test2), nekuti imwe neimwe repository ine yayo rondedzero yezviitwa.

Active Sarudzo Reactive Reference Parameter ine minda inotevera yekuzadza:

  1. zita - parameter zita.
  2. chinyorwa - kodhi iyo ichaitwa pese apo kukosha kweiyo parameter kubva kune Referenced parameter munda inoshandurwa (munyaya yedu, patinosarudza pakati petest1 uye test2).
  3. tsananguro - tsananguro pfupi yeparameter.
  4. Sarudzo Type - rudzi rwechinhu chakadzoserwa nerunyoro (kwedu isu tichadzosera html kodhi).
  5. Referenced parameter - zita reparameter, kana kukosha kwayo kuchishandurwa, kodhi kubva muchikamu cheScript ichaitwa.

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Ngatienderere mberi nekuzadza iyo inonyanya kukosha munda mune ino parameter. Isu tinopihwa marudzi maviri ekushandisa kusarudza kubva: kushandisa Chinyorwa Groovy kana Scriptler Script.
Isu tinosarudza yekutanga, sezvo Scriptler ingori plugin inochengetedza zvinyorwa zvawakambonyora uye inobvumidza iwe kuzvishandisa mune mamwe mabasa pasina kukopa-kunamira zvakare.

Groovy kodhi yekutora zvese kuzvipira kubva kune yakasarudzwa repository:

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

Pasina kupinda mune zvakawanda, kodhi iyi inogamuchira zita remicroservice (MICROSERVICE_NAME) sekuisa uye inotumira chikumbiro ku Bitbucket (nzira getCommitsForMicroservice) uchishandisa API yayo, uye inowana iyo id uye kuzvipira meseji yezvese kuita kune yakapihwa microservice.
Sezvambotaurwa, iyi kodhi inofanira kudzorera html iyo icharatidzwa papeji Vaka neParameters muJenkins, saka tinoputira ese akagashira kukosha kubva kuBitbucket mune runyorwa uye towedzera ivo kuti vasarudze.

Mushure mekupedza matanho ese, tinofanira kuwana peji yakanaka kudaro Vaka neParameters.

Kana ukasarudza test1 microservice:

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Kana ukasarudza test2 microservice:

Kugadzira maparamita ane simba mubasa reJenkins, kana maitiro ekuita basa rako mushandisi-ane hushamwari

Bvumirana kuti zvichave zviri nyore kuti mushandisi adyidzane nebasa rako nenzira iyi pane kukopa url nguva dzese uye kutsvaga inodiwa id.

PS Ichi chinyorwa chinopa muenzaniso wakareruka, uyo ungasave wekushandisa muchimiro ichi, sezvo magungano aine akawanda akasiyana paramita, asi chinangwa chechinyorwa ichi chaive kuratidza kuti chishandiso chinoshanda sei, kwete kupa mhinduro inoshanda.

PSS Sezvandakanyora kare, kana chinyorwa ichi chinobatsira, ipapo chinotevera chichava pamusoro dynamic kumisikidza yeJenkins mabasa kuburikidza nekodhi.

Source: www.habr.com

Voeg