A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Latha math, Habr!

An-diugh bu mhath leam aon de na dòighean cleachdaidh a roinn Plugin Roghainnean Gnìomhach dean an obair ann Jenkins an fheadhainn as aonaichte agus as fhasa a chleachdadh.

Ro-ràdh

Chan eil an leithid de ghiorrachadh mar DevOps a-nis na rud ùr don choimhearsnachd IT. Dha mòran dhaoine, tha an abairt “do DevOps” co-cheangailte ri seòrsa de phutan draoidheachd, nuair a thèid a bhriogadh, bidh an còd tagraidh gu fèin-ghluasadach a ’tionndadh gu bhith na thagradh air a chleachdadh agus air a dhearbhadh (tha a h-uile dad nas toinnte, ach tha sinn a’ tarraing às a h-uile pròiseas).

Mar sin, fhuair sinn òrdugh a leithid de phutan draoidheil a dhèanamh gus am b’ urrainn do luchd-rianachd an aplacaid a chleachdadh le aon bhriogadh. Tha diofar sheòrsaichean de bhuileachadh air a’ ghnìomh seo: bho bhith a’ sgrìobhadh bot airson gin de na teachdairean sa bhad gu bhith a’ leasachadh tagradh air leth. Ach a dh’ aindeoin sin, tha an aon amas aig seo uile - gus tòiseachadh air togail agus cleachdadh an tagraidh a dhèanamh cho follaiseach agus cho goireasach sa ghabhas.

Anns a 'chùis againn cleachdaidh sinn Jenkins.


A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Amas

Cruthaich obair Jenkins goireasach a chuireas air bhog togail agus (no) cleachdadh na microservice taghte de dhreach sònraichte.

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Dàta inntrigidh

Tha grunn stòran againn anns a bheil còd stòr diofar mhicro-sheirbheisean.

A 'mìneachadh crìochan

Bu chòir na crìochan a leanas fhaighinn mar chur-a-steach don obair againn:

  1. URL an stòrais leis a’ chòd microservice a tha sinn airson a thogail agus a chleachdadh nuair a bhios sinn a’ ruith na h-obrach.
  2. ID a’ gheallaidh bhon tachair an togail.

MAR A THA

Is e an dòigh as fhasa air an obair seo a choileanadh dà pharamadair den t-seòrsa String a chruthachadh.

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Anns a ’chùis seo, feumaidh an neach-cleachdaidh a dhol a-steach le làimh air an t-slighe chun stòr agus an id gealltanas, nach eil, chì thu, gu tur goireasach.

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

MAR A BHITH

A-nis feuchaidh sinn ri seòrsa eile de pharamadairean gus beachdachadh air na buannachdan uile.
Cruthaichidh sinn a 'chiad paramadair leis an t-seòrsa Parameter Roghainn, an dàrna fear - Paramadair Iomraidh Ath-ghnìomhach Roghainnean Gnìomhach. Anns a ’pharamadair leis an t-seòrsa Roghainn, cuiridh sinn le làimh anns an raon Roghainnean ainmean nan stòran far a bheil còd ar microservices air a stòradh.

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Mas toil leis an luchd-èisteachd an artaigil seo, an uairsin san ath artaigil bheir mi cunntas air a’ phròiseas airson gnìomhan a rèiteachadh ann an Jenkins, a ’cleachdadh tuairisgeul tro chòd (Rèiteachadh mar chòd), i.e. cha bhith feum againn air ainmean tasgaidh a chuir a-steach le làimh agus paramadairean a chruthachadh, tachraidh a h-uile càil gu fèin-ghluasadach (gheibh ar còd liosta de stòran bho SCM agus cruthaichidh sinn paramadair leis an liosta seo).

Thèid luachan an dàrna paramadair a lìonadh gu dinamach, a rèir dè an luach a bheir a’ chiad paramadair (test1 no test2), leis gu bheil a liosta geallaidhean fhèin aig gach stòr.

Roghainnean Gnìomhach Paramadair Iomraidh Reactive tha na raointean a leanas aige ri lìonadh:

  1. Ainm - ainm paramadair.
  2. sgriobt - còd a thèid a chuir gu bàs a h-uile uair a thèid luach a’ pharamadair bhon raon paramadair ainmichte atharrachadh (anns a’ chùis againn, nuair a thaghas sinn eadar test1 agus test2).
  3. Tuairisgeul - tuairisgeul goirid air paramadair.
  4. Seòrsa Roghainn - an seòrsa rud a thill an sgriobt (anns a’ chùis againn tillidh sinn còd html).
  5. Paramadair air ainmeachadh - ainm a’ pharamadair, nuair a thèid a luach atharrachadh, thèid an còd bhon roinn Sgriobt a chuir gu bàs.

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Rachamaid air adhart gu dìreach gu bhith a 'lìonadh a-mach an raon as cudromaiche anns a' pharamadair seo. Thathas a’ tabhann dà sheòrsa buileachaidh dhuinn airson taghadh: cleachdadh Sgriob Groovy no Sgriobtur Sgriobtur.
Bidh sinn a’ taghadh a’ chiad fhear, leis nach eil ann an Scriptler ach plugan a shàbhaileas sgriobtaichean a sgrìobh thu roimhe agus a leigeas leat an cleachdadh ann an gnìomhan eile gun a bhith a’ dèanamh lethbhreac-pas a-rithist.

Còd Groovy gus a h-uile gealltanas fhaighinn bhon stòr taghte:

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

Gun a dhol a-steach gu mion-fhiosrachadh, gheibh an còd seo an t-ainm microservice (MICROSERVICE_NAME) mar chur-a-steach agus cuiridh e iarrtas gu Bitbucket (dòigh getCommitsForMicroservice) a’ cleachdadh an API aige, agus a’ faighinn an id agus an teachdaireachd gealltanas a h-uile gealltanas airson meanbh-sheirbheis sònraichte.
Mar a chaidh a ràdh na bu tràithe, bu chòir don chòd seo tilleadh html a thèid a thaisbeanadh air an duilleag Togail le Parameters ann an Jenkins, agus mar sin bidh sinn a’ pasgadh a h-uile luach a fhuaireadh bho Bitbucket ann an liosta agus gan cur ri taghadh.

Às deidh na ceumannan gu lèir a chrìochnachadh, bu chòir dhuinn duilleag cho breagha fhaighinn Togail le Parameters.

Ma thagh thu test1 microservice:

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Ma thagh thu test2 microservice:

A’ cruthachadh crìochan fiùghantach ann an obair Jenkins, no mar a nì thu do ghnìomh furasta a chleachdadh

Aontaich gum bi e tòrr nas goireasaiche don neach-cleachdaidh eadar-obrachadh leis an obair agad san dòigh seo na bhith a’ dèanamh lethbhreac den url a h-uile turas agus a’ coimhead airson an id gealltanas a tha a dhìth.

PS Tha an artaigil seo a 'toirt seachad eisimpleir gu math sìmplidh, a dh' fhaodadh nach eil e gu feum practaigeach san fhoirm seo, oir tha mòran a bharrachd de pharaimearan eadar-dhealaichte aig co-chruinneachaidhean, ach b 'e adhbhar an artaigil seo sealltainn mar a tha an inneal ag obair, gun a bhith a' toirt seachad fuasgladh obrach.

PSS Mar a sgrìobh mi na bu thràithe, ma tha an artaigil seo feumail, bidh an ath fhear mu dheidhinn rèiteachadh fiùghantach de ghnìomhan Jenkins tro chòd.

Source: www.habr.com

Cuir beachd ann