He lā maikaʻi, Habr!
I kēia lā makemake wau e kaʻana like i kekahi o nā ala e hoʻohana ai
Hōʻike
ʻO ia ka pōkole e like me DevOps ʻaʻole ia he mea hou no ke kaiāulu IT. No nā poʻe he nui, pili ka huaʻōlelo "do DevOps" i kekahi ʻano o ka pihi magic, ke kaomi ʻia, huli koke ke code noi i kahi noi i hoʻonohonoho ʻia a hoʻāʻo ʻia (ʻoi aku ka paʻakikī o nā mea a pau, akā ke hele nei mākou mai nā kaʻina hana a pau).
No laila, ua loaʻa iā mākou kahi kauoha e hana i kahi pihi kilokilo i hiki i nā luna hoʻokele ke kau i ka noi me hoʻokahi kaomi. Aia nā ʻano like ʻole o ka hoʻokō ʻana i kēia hana: mai ke kākau ʻana i ka bot no kekahi o nā ʻelele koke i ka hoʻomohala ʻana i kahi noi ʻokoʻa. Eia nō naʻe, he pahuhopu like kēia a pau - e hoʻomaka i ke kūkulu ʻana a me ka hoʻolaha ʻana o ka noi e like me ka maopopo a me ka maʻalahi.
I kā mākou hihia e hoʻohana mākou ʻO Jenkins.
Nń Pahuhopu
E hana i kahi hana Jenkins maʻalahi e hoʻomaka i ke kūkulu ʻana a (a i ʻole) hoʻonohonoho ʻia o ka microservice i koho ʻia o kekahi mana.
ʻikepili hoʻokomo
Loaʻa iā mākou kekahi mau waihona i loaʻa ka code kumu o nā microservices like ʻole.
Ka wehewehe ʻana i nā ʻāpana
Pono e loaʻa nā ʻāpana aʻe i mea hoʻokomo i kā mākou hana:
- ʻO ka URL o ka waihona me ka microservice code a mākou e makemake ai e kūkulu a kau i ka wā e holo ai ka hana.
- ID o ka commit mai kahi e kūkulu ʻia ai.
E like me ka mea
ʻO ke ala maʻalahi e hoʻokō ai i kēia hana, ʻo ia ka hana ʻana i ʻelua mau ʻāpana o ke ʻano String.
I kēia hihia, pono ka mea hoʻohana e hoʻokomo lima i ke ala i ka waihona a me ka commit id, kahi āu e ʻike ai, ʻaʻole kūpono loa.
EIA
I kēia manawa, e hoʻāʻo kākou i kekahi ʻano ʻāpana e noʻonoʻo i kona mau pono āpau.
E hana kākou i ka palena mua me ke ʻano koho koho, ka lua - Active Choices Reactive Reference Parameter. Ma ka palena me ke ʻano koho, e hoʻohui lima mākou i ka papa koho i nā inoa o nā repositories kahi i mālama ʻia ai ke code o kā mākou microservices.
Inā makemake ka poʻe i kēia ʻatikala, a laila ma ka ʻatikala aʻe e wehewehe wau i ke kaʻina hana o ka hoʻonohonoho ʻana i nā hana ma Jenkins, me ka hoʻohana ʻana i kahi wehewehe ma o ke code (Configuration as code), i.e. ʻAʻole pono mākou e hoʻokomo lima i nā inoa waihona a hana i nā ʻāpana, e hana aunoa nā mea āpau (e loaʻa i kā mākou code kahi papa inoa o nā repositories mai SCM a hana i kahi ʻāpana me kēia papa inoa).
E hoʻopiha piha ʻia nā koina o ka ʻāpana lua, e pili ana i ka waiwai o ka mea mua (test1 a i ʻole test2), no ka mea, aia kēlā me kēia waihona i kāna papa inoa ponoʻī.
Nā Koho Kūlohelohe Reactive Reference Parameter Loaʻa iā ia nā kahua e hoʻopiha ai:
- inoa - inoa ʻāpana.
- kōmi'ōkuhi - code e hoʻokō ʻia i kēlā me kēia manawa ke hoʻololi ʻia ke kumukūʻai o ka pākuʻi mai ke kahua ʻo Referenced parameter (i kā mākou hihia, ke koho mākou ma waena o ka test1 a me ka test2).
- Description - wehewehe pōkole o ka ʻāpana.
- ʻAno koho - ke ʻano o ka mea i hoʻihoʻi ʻia e ka palapala (i kā mākou hihia e hoʻihoʻi mākou i ka code html).
- Hoʻohālikelike ʻia - ka inoa o ka palena, ke hoʻololi ʻia ka waiwai, e hoʻokō ʻia ke code mai ka ʻāpana Script.
E hoʻomau pololei kākou i ka hoʻopiha ʻana i ke kahua koʻikoʻi ma kēia ʻāpana. Hāʻawi ʻia mākou i ʻelua ʻano hoʻokō e koho ai: hoʻohana Palapala Groovy ai ole ia, Scriptler Script.
Koho mākou i ka mea mua, no ka mea, he plugin wale nō ʻo Scriptler e mālama ai i nā palapala āu i kākau mua ai a hiki iā ʻoe ke hoʻohana iā lākou i nā hana ʻē aʻe me ka ʻole o ka kope kope ʻana.
Groovy code e kiʻi i nā hana āpau mai ka waihona i koho ʻia:
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()
Me ka hele ʻole ʻana i nā kikoʻī, loaʻa kēia code i ka inoa microservice (MICROSERVICE_NAME) i mea hoʻokomo a hoʻouna i kahi noi i Bitbucket (ʻano getCommitsForMicroservice) me ka hoʻohana ʻana i kāna API, a loaʻa i ka id a me ka hoʻokō memo o nā hana āpau no kahi microservice i hāʻawi ʻia.
E like me ka mea i ʻōlelo mua ʻia, pono e hoʻihoʻi kēia code i ka html e hōʻike ʻia ma ka ʻaoʻao Kūkulu me nā ʻāpana ma Jenkins, no laila mākou e hoʻopili i nā waiwai i loaʻa mai Bitbucket i kahi papa inoa a hoʻohui iā lākou e koho.
Ma hope o ka pau ʻana o nā ʻanuʻu a pau, pono mākou e loaʻa i kahi ʻaoʻao nani Kūkulu me nā ʻāpana.
Inā ʻoe i koho i ka lawelawe microservice test1:
Inā ʻoe i koho i ka lawelawe microservice test2:
E ʻae ʻoi aku ka maʻalahi o ka mea hoʻohana e launa pū me kāu hana ma kēia ʻano ma mua o ke kope ʻana i ka url i kēlā me kēia manawa a ʻimi i ka id commit pono.
PS Hāʻawi kēia ʻatikala i kahi hiʻohiʻona maʻalahi loa, ʻaʻole hiki ke hoʻohana pono i kēia ʻano, no ka mea he nui nā ʻāpana like ʻole o nā hui, akā ʻo ke kumu o kēia ʻatikala e hōʻike i ke ʻano o ka hana ʻana o ka hāmeʻa, ʻaʻole e hāʻawi i kahi hopena hana.
PSS E like me kaʻu i kākau mua ai, inā pono kēia ʻatikala, a laila e pili ana ka mea aʻe hoʻonohonoho ikaika o nā hana Jenkins ma o ke code.
Source: www.habr.com