Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Diwrnod da, Habr!

Heddiw hoffwn rannu un o'r ffyrdd o ddefnyddio Ategyn Dewisiadau Gweithredol gwneud y dasg yn Jenkins y mwyaf unedig a hawdd ei ddefnyddio.

Cyflwyniad

Nid yw talfyriad o'r fath Γ’ DevOps bellach yn rhywbeth newydd i'r gymuned TG. I lawer o bobl, mae'r ymadrodd β€œdo DevOps” yn gysylltiedig Γ’ rhyw fath o fotwm hud, pan gaiff ei glicio, mae cod y cais yn troi'n gymhwysiad wedi'i ddefnyddio a'i brofi yn awtomatig (mae popeth mewn gwirionedd yn fwy cymhleth, ond rydym yn tynnu o bob proses).

Felly, cawsom orchymyn i wneud botwm hud o'r fath fel y gallai gweinyddwyr ddefnyddio'r cais gydag un clic. Mae yna wahanol fathau o weithredu'r dasg hon: o ysgrifennu bot ar gyfer unrhyw un o'r negeswyr sydyn i ddatblygu cymhwysiad ar wahΓ’n. Serch hynny, mae gan hyn i gyd yr un nod - gwneud dechrau adeiladu a defnyddio'r cais mor dryloyw a chyfleus Γ’ phosibl.

Yn ein hachos ni byddwn yn defnyddio Jenkins.


Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Gorchwyl

Creu swydd Jenkins gyfleus a fydd yn lansio adeiladu a (neu) defnyddio'r microwasanaeth a ddewiswyd o fersiwn benodol.

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Data mewnbwn

Mae gennym sawl ystorfa sy'n cynnwys cod ffynhonnell amrywiol ficrowasanaethau.

Diffinio paramedrau

Dylid derbyn y paramedrau canlynol fel mewnbwn i'n swydd:

  1. URL yr ystorfa gyda'r cod microservice yr ydym am ei adeiladu a'i ddefnyddio wrth redeg y swydd.
  2. ID yr ymrwymiad y bydd yr adeiladu yn digwydd ohono.

FEL YW

Y ffordd hawsaf o gyflawni'r dasg hon yw creu dau baramedr o'r math Llinyn.

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Yn yr achos hwn, bydd angen i'r defnyddiwr fynd i mewn i'r llwybr i'r ystorfa a'r id ymrwymo Γ’ llaw, nad yw, yn eich barn chi, yn gwbl gyfleus.

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

FEL FOD

Nawr, gadewch i ni roi cynnig ar fath arall o baramedrau i ystyried ei holl fanteision.
Gadewch i ni greu'r paramedr cyntaf gyda'r math Paramedr Dewis, yr ail - Paramedr Cyfeirnod Adweithiol Dewisiadau Gweithredol. Yn y paramedr gyda'r math Dewis, byddwn yn ychwanegu Γ’ llaw yn y maes Dewisiadau enwau'r ystorfeydd lle mae cod ein microwasanaethau yn cael ei storio.

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Os yw'r gynulleidfa'n hoffi'r erthygl hon, yna yn yr erthygl nesaf byddaf yn disgrifio'r broses o ffurfweddu tasgau yn Jenkins, gan ddefnyddio disgrifiad trwy god (Ffurfweddiad fel cod), h.y. ni fydd angen i ni nodi enwau cadwrfeydd Γ’ llaw a chreu paramedrau, bydd popeth yn digwydd yn awtomatig (bydd ein cod yn derbyn rhestr o ystorfeydd gan SCM ac yn creu paramedr gyda'r rhestr hon).

Bydd gwerthoedd yr ail baramedr yn cael eu llenwi'n ddeinamig, yn dibynnu ar ba werth y mae'r paramedr cyntaf yn ei gymryd (test1 neu test2), oherwydd mae gan bob ystorfa ei rhestr ymrwymiadau ei hun.

Paramedr Cyfeirnod Adweithiol Dewisiadau Gweithredol mae ganddo'r meysydd canlynol i'w llenwi:

  1. Enw - enw paramedr.
  2. Sgript - cod a fydd yn cael ei weithredu bob tro y bydd gwerth y paramedr o'r maes Paramedr Cyfeirnod yn cael ei newid (yn ein hachos ni, pan fyddwn yn dewis rhwng prawf1 a phrawf2).
  3. Disgrifiad - disgrifiad byr o'r paramedr.
  4. Math o Ddewis – y math o wrthrych a ddychwelwyd gan y sgript (yn ein hachos ni byddwn yn dychwelyd cod html).
  5. Paramedr y cyfeiriwyd ato - enw'r paramedr, pan fydd ei werth yn cael ei newid, bydd y cod o'r adran Sgript yn cael ei weithredu.

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Gadewch i ni symud ymlaen yn uniongyrchol i lenwi'r maes pwysicaf yn y paramedr hwn. Cynigir dau fath o weithrediad i ni ddewis ohonynt: defnyddio Sgript Groovy neu Sgript Ysgrythur.
Rydyn ni'n dewis y cyntaf, gan mai dim ond ategyn yw Scriptler sy'n arbed sgriptiau rydych chi wedi'u hysgrifennu o'r blaen ac sy'n caniatΓ‘u ichi eu defnyddio mewn tasgau eraill heb gopΓ―o-gludo eto.

Cod groovy i gael pob ymrwymiad o'r gadwrfa a ddewiswyd:

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

Heb fynd i fanylion, mae'r cod hwn yn derbyn yr enw microservice (MICROSERVICE_NAME) fel mewnbwn ac yn anfon cais i Bitbucket (dull getCommitsForMicroservice) gan ddefnyddio ei API, ac yn cael y neges adnabod ac ymrwymo pawb sy'n ymrwymo ar gyfer microwasanaeth penodol.
Fel y soniwyd yn gynharach, dylai'r cod hwn ddychwelyd html a fydd yn cael ei arddangos ar y dudalen Adeiladu gyda Pharamedrau yn Jenkins, felly rydym yn lapio'r holl werthoedd a dderbyniwyd gan Bitbucket mewn rhestr a'u hychwanegu i'w dewis.

Ar Γ΄l cwblhau'r holl gamau, dylem gael tudalen mor hardd Adeiladu gyda Pharamedrau.

Os gwnaethoch ddewis microwasanaeth prawf 1:

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Os gwnaethoch ddewis microwasanaeth prawf 2:

Creu paramedrau deinamig mewn swydd Jenkins, neu sut i wneud eich tasg yn hawdd ei defnyddio

Cytuno y bydd yn llawer mwy cyfleus i'r defnyddiwr ryngweithio Γ’'ch tasg yn y modd hwn na chopΓ―o'r url bob tro a chwilio am yr id ymrwymo gofynnol.

PS Mae'r erthygl hon yn darparu enghraifft symlach iawn, nad yw efallai o ddefnydd ymarferol yn y ffurflen hon, gan fod gan gynulliadau lawer mwy o baramedrau gwahanol, ond pwrpas yr erthygl hon oedd dangos sut mae'r offeryn yn gweithio, nid darparu datrysiad gweithio.

PSS Fel yr ysgrifennais yn gynharach, os yw'r erthygl hon yn ddefnyddiol, yna bydd yr un nesaf yn ymwneud Γ’ hi cyfluniad deinamig o dasgau Jenkins trwy god.

Ffynhonnell: hab.com

Ychwanegu sylw