Diwrnod da, Habr!
Heddiw hoffwn rannu un o'r ffyrdd o 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.
Gorchwyl
Creu swydd Jenkins gyfleus a fydd yn lansio adeiladu a (neu) defnyddio'r microwasanaeth a ddewiswyd o fersiwn benodol.
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:
- URL yr ystorfa gyda'r cod microservice yr ydym am ei adeiladu a'i ddefnyddio wrth redeg y swydd.
- 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.
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.
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.
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:
- Enw - enw paramedr.
- 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).
- Disgrifiad - disgrifiad byr o'r paramedr.
- Math o Ddewis β y math o wrthrych a ddychwelwyd gan y sgript (yn ein hachos ni byddwn yn dychwelyd cod html).
- 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.
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:
Os gwnaethoch ddewis microwasanaeth prawf 2:
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