Usuku oluhle, UHabr!
Namuhla ngithanda ukwabelana ngenye yezindlela zokusebenzisa
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.
Inhloso
Dala umsebenzi okahle we-Jenkins ozokwethula ukwakhiwa kanye (noma) nokuthunyelwa kwesevisi encane ekhethiwe yenguqulo ethile.
Idatha yokufaka
Sinezindawo zokugcina ezimbalwa eziqukethe ikhodi yomthombo yama-microservices ahlukahlukene.
Ichaza amapharamitha
Imingcele elandelayo kufanele yamukelwe njengokufaka emsebenzini wethu:
- I-URL yekhosombe enekhodi ye-microservice esifuna ukuyakha futhi siyiphakele lapho siqhuba umsebenzi.
- I-ID yesibopho lapho ukwakhiwa kuzovela khona.
NJENGOBA KUNJALO
Indlela elula yokufeza lo msebenzi ukudala amapharamitha amabili ohlobo lweString.
Kulokhu, umsebenzisi uzodinga ukuthi afake ngesandla indlela eya endaweni yokugcina kanye ne-id yokubophezela, oyibonayo, engalungile ngokuphelele.
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.
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:
- Igama - igama lepharamitha.
- Iskripthi - ikhodi ezokwenziwa njalo lapho inani lepharamitha elisuka ku-Referenced parameter field lishintshwa (kithi, uma sikhetha phakathi kwe-test1 ne-test2).
- Incazelo β incazelo emfushane yepharamitha.
- Uhlobo Lokukhetha - uhlobo lwento olubuyiswe iskripthi (kithi sizobuyisela ikhodi ye-html).
- Ipharamitha ekhonjiwe - igama lepharamitha, lapho inani lalo lishintshiwe, ikhodi evela esigabeni Seskripthi izokwenziwa.
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:
Uma ukhethe i-test2 microservice:
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