Zuva rakanaka, Habr!
Nhasi ndinoda kugovera imwe yenzira dzekushandisa
Nhanganyaya
Chidimburidzo chakadai seDevOps hachisisiri chinhu chitsva kunharaunda yeIT. Kune vanhu vazhinji, mutsara wekuti "ita DevOps" unobatanidzwa neimwe mhando yemashiripiti bhatani, kana yadzvanywa, iyo kodhi yekunyorera inoshanduka kuita yakatumirwa uye yakaedzwa application (zvese zvakanyanyisa kuomarara, asi isu tiri kubvisa kubva kune ese maitiro).
Saka, isu takagamuchira rairo yekugadzira bhatani remashiripiti rakadaro kuitira kuti vatariri vagone kuendesa application nekudzvanya kumwe chete. Kune marudzi akasiyana-siyana ekuita basa iri: kubva pakunyora bot kune chero yevatumwa ipapo kusvika kugadzira yakaparadzana application. Zvakangodaro, zvese izvi zvine chinangwa chimwe - kuita kutanga kuvaka uye kutumira kwechishandiso kuve pachena uye kuri nyore sezvinobvira.
Muchiitiko chedu tichashandisa Jenkins.
Basa
Gadzira iri nyore Jenkins basa iro rinovhura kuvaka uye (kana) kutumira kweiyo yakasarudzwa microservice yeimwe vhezheni.
Input data
Isu tine akati wandei marepositori ane kodhi kodhi yeakasiyana mamicroservices.
Kutsanangura parameters
Aya anotevera ma paramita anofanirwa kugamuchirwa sechipo kubasa redu:
- Iyo URL yerepository ine microservice kodhi yatinoda kuvaka uye kutumira kana tichiita basa.
- ID yechibatiso kubva kune iyo kuvaka kuchaitika.
AS IS
Nzira iri nyore yekuita basa iri kugadzira ma parameter maviri emhando String.
Muchiitiko ichi, mushandisi anozofanira kupinda munzira inoenda kunzvimbo yekuchengetera uye iyo id yekuzvipira, iyo, iwe unoona, haina kunyatsoita.
SEZVAVE
Zvino ngatiedze imwe mhando parameters kufunga zvose zvakanakira ayo.
Ngatigadzire yekutanga paramende nerudzi rweSarudzo Parameter, yechipiri - Active Sarudzo Reactive Reference Parameter. Mune paramende ine mhando yeSarudzo, isu tichawedzera nemaoko mumunda weSarudzo mazita ezvinyorwa panochengeterwa kodhi yemicroservices yedu.
Kana vateereri vachida chinyorwa ichi, zvino munyaya inotevera ini ndichatsanangura maitiro ekugadzirisa mabasa muJenkins, uchishandisa tsanangudzo kuburikidza nekodhi (Kugadzirisa sekodhi), i.e. isu hatizodi kuisa mazita ekuisa mazita uye kugadzira ma parameter, zvese zvichaitika otomatiki (kodhi yedu inogashira runyoro rwezvinyorwa kubva kuSCM uye kugadzira parameter ine runyorwa urwu).
Hukoshi hwechipiri paramende huchazadzwa zvine simba, zvichienderana nekukosha kwekutanga kunotora (test1 kana test2), nekuti imwe neimwe repository ine yayo rondedzero yezviitwa.
Active Sarudzo Reactive Reference Parameter ine minda inotevera yekuzadza:
- zita - parameter zita.
- chinyorwa - kodhi iyo ichaitwa pese apo kukosha kweiyo parameter kubva kune Referenced parameter munda inoshandurwa (munyaya yedu, patinosarudza pakati petest1 uye test2).
- tsananguro - tsananguro pfupi yeparameter.
- Sarudzo Type - rudzi rwechinhu chakadzoserwa nerunyoro (kwedu isu tichadzosera html kodhi).
- Referenced parameter - zita reparameter, kana kukosha kwayo kuchishandurwa, kodhi kubva muchikamu cheScript ichaitwa.
Ngatienderere mberi nekuzadza iyo inonyanya kukosha munda mune ino parameter. Isu tinopihwa marudzi maviri ekushandisa kusarudza kubva: kushandisa Chinyorwa Groovy kana Scriptler Script.
Isu tinosarudza yekutanga, sezvo Scriptler ingori plugin inochengetedza zvinyorwa zvawakambonyora uye inobvumidza iwe kuzvishandisa mune mamwe mabasa pasina kukopa-kunamira zvakare.
Groovy kodhi yekutora zvese kuzvipira kubva kune yakasarudzwa repository:
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()
Pasina kupinda mune zvakawanda, kodhi iyi inogamuchira zita remicroservice (MICROSERVICE_NAME) sekuisa uye inotumira chikumbiro ku Bitbucket (nzira getCommitsForMicroservice) uchishandisa API yayo, uye inowana iyo id uye kuzvipira meseji yezvese kuita kune yakapihwa microservice.
Sezvambotaurwa, iyi kodhi inofanira kudzorera html iyo icharatidzwa papeji Vaka neParameters muJenkins, saka tinoputira ese akagashira kukosha kubva kuBitbucket mune runyorwa uye towedzera ivo kuti vasarudze.
Mushure mekupedza matanho ese, tinofanira kuwana peji yakanaka kudaro Vaka neParameters.
Kana ukasarudza test1 microservice:
Kana ukasarudza test2 microservice:
Bvumirana kuti zvichave zviri nyore kuti mushandisi adyidzane nebasa rako nenzira iyi pane kukopa url nguva dzese uye kutsvaga inodiwa id.
PS Ichi chinyorwa chinopa muenzaniso wakareruka, uyo ungasave wekushandisa muchimiro ichi, sezvo magungano aine akawanda akasiyana paramita, asi chinangwa chechinyorwa ichi chaive kuratidza kuti chishandiso chinoshanda sei, kwete kupa mhinduro inoshanda.
PSS Sezvandakanyora kare, kana chinyorwa ichi chinobatsira, ipapo chinotevera chichava pamusoro dynamic kumisikidza yeJenkins mabasa kuburikidza nekodhi.
Source: www.habr.com