Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Usuku oluhle, UHabr!

Namuhla ngithanda ukwabelana ngenye yezindlela zokusebenzisa I-Active Choices Plugin yenza umsebenzi ku Jenkins ebumbene kakhulu futhi esebenziseka kalula.

Isingeniso

Isifinyezo esifana ne-DevOps akuseyona into entsha emphakathini we-IT. Kubantu abaningi, inkulumo ethi β€œyenza i-DevOps” ihlotshaniswa nohlobo oluthile lwenkinobho yomlingo, lapho uchofozwa, ikhodi yohlelo lokusebenza iphenduka ngokuzenzakalelayo ibe uhlelo lokusebenza olusetshenzisiwe noluhloliwe (yonke into empeleni iyinkimbinkimbi kakhulu, kodwa sikhipha kuzo zonke izinqubo).

Ngakho-ke, sithole umyalo wokwenza inkinobho yomlingo enjalo ukuze abalawuli bakwazi ukusebenzisa uhlelo lokusebenza ngokuchofoza okukodwa. Kunezinhlobo ezahlukene zokusetshenziswa kwalo msebenzi: kusukela ekubhaleni i-bot yanoma yisiphi izithunywa ezisheshayo kuya ekuthuthukiseni uhlelo lokusebenza oluhlukile. Noma kunjalo, konke lokhu kunomgomo ofanayo - ukwenza ukuqala ukwakha nokuthunyelwa kwesicelo kube obala futhi kube lula ngangokunokwenzeka.

Esimweni sethu sizosebenzisa Jenkins.


Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Inhloso

Dala umsebenzi okahle we-Jenkins ozokwethula ukwakhiwa kanye (noma) nokuthunyelwa kwesevisi encane ekhethiwe yenguqulo ethile.

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Idatha yokufaka

Sinezindawo zokugcina ezimbalwa eziqukethe ikhodi yomthombo yama-microservices ahlukahlukene.

Ichaza amapharamitha

Imingcele elandelayo kufanele yamukelwe njengokufaka emsebenzini wethu:

  1. I-URL yekhosombe enekhodi ye-microservice esifuna ukuyakha futhi siyiphakele lapho siqhuba umsebenzi.
  2. I-ID yesibopho lapho ukwakhiwa kuzovela khona.

NJENGOBA KUNJALO

Indlela elula yokufeza lo msebenzi ukudala amapharamitha amabili ohlobo lweString.

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Kulokhu, umsebenzisi uzodinga ukuthi afake ngesandla indlela eya endaweni yokugcina kanye ne-id yokubophezela, oyibonayo, engalungile ngokuphelele.

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

NJENGOBA KUZOBA

Manje ake sizame olunye uhlobo lwamapharamitha ukuze sicabangele zonke izinzuzo zalo.
Masidale ipharamitha yokuqala ngohlobo lwepharamitha yokukhetha, eyesibili - Ipharamitha Yereferensi Yezinqumo Ezisebenzayo. Kupharamitha enohlobo lwe-Choice, sizofaka mathupha emkhakheni Wokukhetha amagama ezindawo zokugcina lapho kugcinwa khona ikhodi yama-microservices ethu.

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Uma izethameli zithanda lesi sihloko, khona-ke esihlokweni esilandelayo ngizochaza inqubo yokumisa imisebenzi ku-Jenkins, ngisebenzisa incazelo ngekhodi (Ukucushwa njengekhodi), i.e. ngeke kudingeke ukuthi sifake amagama enqolobane ngokwenza imingcele, konke kuzokwenzeka ngokuzenzakalelayo (ikhodi yethu izothola uhlu lwamakhosombe kusuka ku-SCM futhi idale ipharamitha ngalolu hlu).

Amanani epharamitha yesibili azogcwaliswa ngokushintshashintshayo, kuye ngokuthi ipharamitha yokuqala ithatha liphi inani (test1 noma test2), ngoba inqolobane ngayinye inohlu lwayo lwemisebenzi.

Ipharamitha yereferensi yezinketho ezisebenzayo inezinkambu ezilandelayo okufanele zigcwaliswe:

  1. Igama - igama lepharamitha.
  2. Iskripthi - ikhodi ezokwenziwa njalo lapho inani lepharamitha elisuka ku-Referenced parameter field lishintshwa (kithi, uma sikhetha phakathi kwe-test1 ne-test2).
  3. Incazelo – incazelo emfushane yepharamitha.
  4. Uhlobo Lokukhetha - uhlobo lwento olubuyiswe iskripthi (kithi sizobuyisela ikhodi ye-html).
  5. Ipharamitha ekhonjiwe - igama lepharamitha, lapho inani lalo lishintshiwe, ikhodi evela esigabeni Seskripthi izokwenziwa.

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Masiqhubeke ngqo ekugcwaliseni inkambu ebaluleke kakhulu kule pharamitha. Sinikezwa izinhlobo ezimbili zokuqaliswa ongakhetha kuzo: ukusebenzisa I-Groovy Script noma I-Scriptler Script.
Sikhetha eyokuqala, njengoba i-Scriptler iyi-plugin nje egcina imibhalo oyibhalile ngaphambilini futhi ikuvumela ukuthi uyisebenzise kweminye imisebenzi ngaphandle kokukopisha-ukunamathisela futhi.

Ikhodi ye-Groovy yokuthola zonke izibophezelo kusuka endaweni ekhethiwe:

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

Ngaphandle kokungena emininingwaneni, le khodi ithola igama le-microservice (MICROSERVICE_NAME) njengokufakwayo bese ithumela isicelo ku- bitbucket (indlela getCommitsForMicroservice) isebenzisa i-API yayo, futhi ithola i-id futhi izinikele umlayezo wakho konke ukuzibophezela kwe-microservice enikeziwe.
Njengoba kushiwo ngaphambili, le khodi kufanele ibuyisele i-html ezoboniswa ekhasini Yakha ngamapharamitha ku-Jenkins, ngakho-ke sigoqa wonke amanani atholiwe kusuka ku-Bitbucket ohlwini bese siyawengeza ukuze ukhethe.

Ngemva kokuqeda zonke izinyathelo, kufanele sithole ikhasi elihle kangaka Yakha ngamapharamitha.

Uma ukhethe i-test1 microservice:

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Uma ukhethe i-test2 microservice:

Ukudala amapharamitha ashukumisayo emsebenzini we-Jenkins, noma indlela yokwenza umsebenzi wakho ube nobungane

Vuma ukuthi kuzoba lula kakhulu ukuthi umsebenzisi asebenzisane nomsebenzi wakho ngale ndlela kunokukopisha i-url ngaso sonke isikhathi futhi abheke i-id yokuzibophezela edingekayo.

PS Lesi sihloko sinikeza isibonelo esenziwe lula kakhulu, esingase singasebenzi ngendlela engokoqobo kuleli fomu, njengoba imihlangano inemingcele eminingi ehlukene, kodwa inhloso yalesi sihloko kwakuwukukhombisa ukuthi ithuluzi lisebenza kanjani, hhayi ukunikeza isisombululo esisebenzayo.

I-PSS Njengoba ngike ngabhala ngaphambili, uma lesi sihloko siwusizo, okulandelayo kuzoba mayelana ukucushwa okuguquguqukayo kwemisebenzi ye-Jenkins ngekhodi.

Source: www.habr.com

Engeza amazwana