Mholweni emini nje, Khaya!
Namhlanje ndingathanda ukwabelana ngenye yeendlela zokusebenzisa yenza umsebenzi ngaphakathi Jenkins eyona imanyaniswe kwaye isebenziseka lula.
Intshayelelo
Isifinyezo esinjalo njenge-DevOps ayiseyonto intsha kuluntu lwe-IT. Kubantu abaninzi, ibinzana elithi "yenza i-DevOps" inxulunyaniswa nohlobo oluthile lweqhosha lomlingo, xa ucofa, ikhowudi yesicelo ijika ngokuzenzekelayo ibe sisicelo esisetyenzisiweyo nesivavanyiweyo (yonke into eneneni intsonkothe ngakumbi, kodwa siyayikhupha kuzo zonke iinkqubo).
Ke, sifumene umyalelo wokwenza iqhosha lomlingo elinjalo ukuze abalawuli basebenzise isicelo ngokucofa kube kanye. Kukho iintlobo ezahlukeneyo zokuphunyezwa kwalo msebenzi: ukusuka ekubhaleni i-bot kuyo nayiphi na izithunywa ezikhawulezayo ukuphuhlisa isicelo esahlukileyo. Nangona kunjalo, konke oku kunenjongo efanayo - ukwenza ukuqaliswa kokwakhiwa kunye nokuthunyelwa kwesicelo kube ekuhleni kwaye kulula ngokusemandleni.
Kwimeko yethu siya kusebenzisa Jenkins.

Injongo
Yenza umsebenzi ofanelekileyo weJenkins oza kuqalisa ukwakha kunye (okanye) nokusasazwa kwe-microservice ekhethiweyo yoguqulelo oluthile.

Igalelo ledatha
Sineendawo ezininzi zokugcina eziqulathe ikhowudi yemvelaphi yeemicroservices ezahlukeneyo.
Ukuchaza iiparamitha
Ezi parameters zilandelayo kufuneka zamkelwe njengegalelo kumsebenzi wethu:
- I-URL yendawo yokugcina enekhowudi ye-microservice esifuna ukuyakha kunye nokuyisebenzisa xa uqhuba umsebenzi.
- I-ID yesibophelelo apho ukwakhiwa kuya kwenzeka khona.
NJENGE
Eyona ndlela ilula yokufezekisa lo msebenzi kukudala iiparamitha ezimbini zohlobo lweString.

Kule meko, umsebenzisi uya kufuna ukungena ngendlela eya kwindawo yokugcina kunye ne-id yokuzinikela, oyibonayo, ayifanelekanga ngokupheleleyo.

NJENGOKO KUBA
Ngoku makhe sizame olunye uhlobo lweeparamitha ukuqwalasela zonke iingenelo zayo.
Masenze iparameter yokuqala ngohlobo lweParameter yokuKhetha, eyesibini - Iinketho eziSebenzayo eziReference Reference Parameter. Kwiparameter kunye nohlobo lokuKhetha, siya kongeza ngesandla kwintsimi yokuKhetha amagama eendawo zokugcina apho ikhowudi yee-microservices zethu igcinwe khona.

Ukuba abaphulaphuli bathanda eli nqaku, ngoko kwinqaku elilandelayo ndiya kuchaza inkqubo yokuqwalasela imisebenzi kwiJenkins, usebenzisa inkcazo ngekhowudi (Uqwalaselo njengekhowudi), oko kukuthi. asiyi kudinga ukuba singenise amagama ogcino ngesandla kwaye senze iiparameters, yonke into iya kwenzeka ngokuzenzekelayo (ikhowudi yethu iya kufumana uluhlu lweendawo zokugcina ukusuka kwi-SCM kwaye wenze iparameter ngolu luhlu).
Amaxabiso eparameter yesibini aya kuzaliswa ngamandla, kuxhomekeke kwiliphi ixabiso elithathwa yiparameter yokuqala (test1 okanye test2), kuba indawo yokugcina inoluhlu lwayo lokuzibophelela.
Ukhetho olusebenzayo Iparamitha yeReferensi esebenzayo inemihlaba elandelayo yokugcwalisa:
- igama – igama parameter.
- umbhalo-ngqangi - ikhowudi eya kuphunyezwa rhoqo xa ixabiso leparameter ukusuka kwi-Referenced parameter field litshintshiwe (kwimeko yethu, xa sikhetha phakathi kwe-test1 kunye ne-test2).
- inkcazelo - inkcazo emfutshane yeparamitha.
- Uhlobo lokuKhetha - uhlobo lwento ebuyiselwe ngumbhalo (kwimeko yethu siya kubuyisela ikhowudi ye-html).
- Iparamitha ekubhekiselwa kuyo - igama lepharamitha, xa ixabiso litshintshile, ikhowudi evela kwicandelo leSikripthi iya kuphunyezwa.

Masiqhubeke ngokuthe ngqo ekugcwaliseni eyona ndawo ibalulekileyo kule parameter. Sinikwa iintlobo ezimbini zokuphunyezwa ukukhetha kuzo: ukusebenzisa I-Groovy Script okanye I-Scriptler Script.
Sikhetha eyokuqala, kuba i-Scriptler iyiplagi nje egcina izikripthi ozibhalileyo ngaphambili kwaye ikuvumela ukuba uzisebenzise kweminye imisebenzi ngaphandle kokukopisha-uncamathisele kwakhona.
Ikhowudi yeGroovy ukufumana zonke izibophelelo kwindawo yokugcina ekhethiweyo:
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 kwiinkcukacha, le khowudi ifumana igama lenkonzo encinci (MICROSERVICE_NAME) njengegalelo kwaye ithumela isicelo Bitbucket (indlela getCommitsForMicroservice) isebenzisa i-API yayo, kwaye ifumana i-id kwaye ibophelele umyalezo wazo zonke izibophelelo zenkonzo encinci enikiweyo.
Njengoko bekutshiwo ngaphambili, le khowudi kufuneka ibuyisele i-html eza kuboniswa kwiphepha Yakha ngeeParameters eJenkins, ke sisonga onke amaxabiso afunyenweyo kwiBitbucket kuluhlu kwaye songeze ukuba ukhethe.
Emva kokugqiba onke amanyathelo, kufuneka sifumane iphepha elihle kangaka Yakha ngeeParameters.
Ukuba ukhethe test1 microservice:

Ukuba ukhethe test2 microservice:

Vuma ukuba kuya kuba lula ngakumbi kumsebenzisi ukusebenzisana nomsebenzi wakho ngale ndlela kunokukopa i-url ngalo lonke ixesha kwaye ujonge i-id yokuzinikela efunekayo.
PS Eli nqaku libonelela ngomzekelo olula kakhulu, onokuthi ungabi luncedo olusebenzayo kule fomu, ekubeni iindibano zineeparamitha ezininzi ezahlukeneyo, kodwa injongo yeli nqaku yayikukubonisa indlela isixhobo esisebenza ngayo, kungekhona ukubonelela ngesisombululo esisebenzayo.
PSS Njengoko ndabhala ngaphambili, ukuba eli nqaku liluncedo, ngoko okulandelayo kuya kuba malunga uqwalaselo oluguquguqukayo lwemisebenzi yeJenkins ngekhowudi.
umthombo: www.habr.com
