แฒแแ แแ แแฆแ, แฐแแแ !
แแฆแแก แแแแแ แแแแแแแแ แแ แแแแแงแแแแแแก แแ แ-แแ แแ แแแ
แจแแกแแแแแ
แแกแแแ แแแ แแแแแขแฃแ แ, แ แแแแ แแชแแ DevOps, แแฆแแ แแ แแก แแฎแแแ IT แกแแแแแแแแแแแกแแแแก. แแแแ แแกแแแแก แคแ แแแ โdo DevOpsโ แแกแแชแแ แแแแ แ แแแแ แกแแฎแแก แฏแแแแกแแฃแ แฆแแแแแแแ, แแแฌแแแแฃแแแแแกแแก แแแแแแแชแแแก แแแแ แแแขแแแแขแฃแ แแ แแแแแแฅแชแแแ แแแแแแแแแฃแ แแ แจแแแแฌแแแแฃแ แแแแแแแชแแแ (แคแแฅแขแแแ แแแแ แงแแแแแคแแ แ แฃแคแ แ แ แแฃแแแ, แแแแ แแ แฉแแแ แแแกแขแ แแฅแชแแแก แแแแแแแแ แงแแแแ แแ แแชแแกแแกแแแ).
แแกแ แ แแ, แฉแแแ แแแแแฆแแ แแ แซแแแแแ, แแแแแแแแแแแแแ แแกแแแ แฏแแแแกแแฃแ แ แฆแแแแแ, แ แแแ แแแแแแแกแขแ แแขแแ แแแแ แแแแแแแแกแแ แแแแแแแชแแ แแ แแ แแแฌแแแแฃแแแแแ. แแ แแแแชแแแแก แแแแฎแแ แชแแแแแแแก แกแฎแแแแแกแฎแแ แกแแฎแแแแ แแ แกแแแแแก: แ แแแแแแแ แแงแแกแแแ แ แแแกแแแฏแแ แแกแแแแก แแแขแแก แแแฌแแ แแแแ แชแแแแ แแแแแแแชแแแก แจแแแฃแจแแแแแแแแ. แแแฃแฎแแแแแแ แแแแกแ, แแ แงแแแแแคแแ แก แแ แแ แแ แแแแแ แแแแแแ แแฅแแก - แแแแแแแชแแแก แจแแฅแแแแกแ แแ แแแแแ แแแแก แแแฌแงแแแ แ แแช แจแแแซแแแแ แแแแญแแแ แแแแ แแ แแแกแแฎแแ แฎแแแแแ แแงแแก.
แฉแแแแก แจแแแแฎแแแแแจแ แแแแแแแงแแแแแ Jenkins.
แแแแแแแแ
แจแแฅแแแแแ แแแกแแฎแแ แฎแแแแแ แฏแแแแแแกแแก แกแแแฃแจแแ, แ แแแแแแช แแแแฌแงแแแก แแแ แแแแฃแแ แแแ แกแแแก แจแแ แฉแแฃแแ แแแแ แแกแแ แแแกแแก แแจแแแแแแก แแ (แแ) แแแแแ แแแแก.
แฒจแแกแแงแแแแ แแแแแชแแแแแ
แฉแแแ แแแแฅแแก แ แแแแแแแแ แกแแชแแแ, แ แแแแแแช แจแแแชแแแก แกแฎแแแแแกแฎแแ แแแแ แแกแแ แแแกแแก แกแแฌแงแแก แแแแก.
แแแ แแแแขแ แแแแก แแแแกแแแฆแแ แ
แจแแแแแแ แแแ แแแแขแ แแแ แฃแแแ แแแแแฆแแ, แ แแแแ แช แจแแงแแแแ แฉแแแแก แกแแแฃแจแแแจแ:
- แกแแชแแแแก URL แแแแ แแกแแ แแแกแแก แแแแแ, แ แแแแแแช แแแแแแ แแแแจแแแแ แแ แแแแแแ แชแแแแ แกแแแฃแจแแแก แจแแกแ แฃแแแแแกแแก.
- แกแแแแแแกแแแก ID, แกแแแแแแแช แแแฎแแแแ แแจแแแแแ.
แแกแ
แแ แแแแชแแแแก แจแแกแ แฃแแแแแก แฃแแแ แขแแแแกแ แแแแ String แขแแแแก แแ แ แแแ แแแแขแ แแก แจแแฅแแแ.
แแ แจแแแแฎแแแแแจแ, แแแแฎแแแ แแแแแก แแแฃแฌแแแก แฎแแแแ แจแแแงแแแแแก แกแแชแแแแก แแแ แแ commit id, แ แแช, แ แแแแ แช แฎแแแแแ, แแแแแ แแแกแแฎแแ แฎแแแแแ แแ แแ แแก.
แ แแแแ แช แฃแแแ แแงแแก
แแฎแแ แแแแแ แแชแแแแ แกแฎแแ แขแแแแก แแแ แแแแขแ แแแ, แ แแแ แแแแแแฎแแแแ แแแกแ แงแแแแ แฃแแแ แแขแแกแแแ.
แจแแแฅแแแแ แแแ แแแแ แแแ แแแแขแ แ แขแแแแก Choice Parameter, แแแแ แ - Active Choices Reactive Reference Parameter. แแ แฉแแแแแแก แขแแแแก แแแ แแแแขแ แจแ, แฉแแแ แฎแแแแ แแแแแแแขแแแ แแ แฉแแแแแแก แแแแจแ แแ แกแแชแแแแแแก แกแแฎแแแแแก, แกแแแแช แแแแฎแแแ แฉแแแแ แแแแ แแกแแ แแแกแแแแก แแแแ.
แแฃ แแฃแแแขแแ แแแก แแแแฌแแแแแ แแก แกแขแแขแแ, แจแแแแแ แกแขแแขแแแจแ แแ แแฆแแฌแแ แฏแแแแแแกแจแ แแแแชแแแแแแก แแแแคแแแฃแ แแชแแแก แแ แแชแแกแก, แแฆแฌแแ แแก แแแแแงแแแแแแ แแแแแก แกแแจแฃแแแแแแ (Configuration as code), แ.แ. แฉแแแ แแ แแแแแญแแ แแแแ แกแแชแแแแก แกแแฎแแแแแแก แฎแแแแ แจแแงแแแแ แแ แแแ แแแแขแ แแแแก แจแแฅแแแ, แงแแแแแคแแ แ แแแขแแแแขแฃแ แแ แแแฎแแแแ (แฉแแแแ แแแแ แแแแฆแแแก แกแแชแแแแแแก แฉแแแแแแแแแแก SCM-แแแ แแ แจแแฅแแแแก แแแ แแแแขแ แก แแ แกแแแ).
แแแแ แ แแแ แแแแขแ แแก แแแแจแแแแแแแแแ แจแแแแกแแแ แแแแแแแฃแ แแ, แแแแกแแ แแแฎแแแแแ, แแฃ แ แ แแแแจแแแแแแแแก แแฆแแแก แแแ แแแแ แแแ แแแแขแ แ (test1 แแ test2), แ แแแแแ แแแแแแฃแ แกแแชแแแก แแฅแแก แแแแแแแฃแแแแแแแก แกแแแฃแแแ แ แกแแ.
Active Choices แ แแแฅแขแแฃแแ แแแแแแแแแก แแแ แแแแขแ แ แแฅแแก แจแแแแแแ แแแแแแ แจแแกแแแกแแแแ:
- แกแแฎแแแ - แแแ แแแแขแ แแก แกแแฎแแแ.
- Script โ แแแแ, แ แแแแแแช แจแแกแ แฃแแแแแ แงแแแแ แฏแแ แแ, แ แแแแกแแช แจแแแชแแแแแ แแแ แแแแขแ แแก แแแแจแแแแแแแ Referenced แแแ แแแแขแ แแก แแแแแแแ (แฉแแแแก แจแแแแฎแแแแแจแ, แ แแชแ แแแ แฉแแแ test1-แกแ แแ test2-แก แจแแ แแก).
- แแฆแฌแแ แ - แแแ แแแแขแ แแก แแแแแ แแฆแฌแแ แ.
- แแ แฉแแแแแแก แขแแแ โ แกแแ แแแขแแก แแแแ แแแแ แฃแแแแฃแแ แแแแแฅแขแแก แขแแแ (แฉแแแแก แจแแแแฎแแแแแจแ แแแแแแ แฃแแแแ html แแแแก).
- แแแแแแแแฃแแ แแแ แแแแขแ แ โ แแแ แแแแขแ แแก แแแกแแฎแแแแแ, แ แแแแแก แแแแจแแแแแแแแช แจแแแชแแแแแ, แจแแกแ แฃแแแแแ แแแแ Script แแแแงแแคแแแแแแแแ.
แแแแแ แแแ แแแแแ แแแแแแ แซแแแแ แแ แแแ แแแแขแ แแก แงแแแแแแ แแแแจแแแแแแแแแ แแแแแก แจแแแกแแแ. แฉแแแ แแแแแแแแแแแ แแ แ แกแแฎแแก แแแแแแแแแขแแชแแแก แแกแแ แฉแแแแ: แแแแแงแแแแแ แแ แแแแก แกแแ แแแขแ แแ Scriptler Script.
แฉแแแ แแแ แฉแแแ แแแ แแแแก, แ แแแแแ Scriptler แแ แแก แแฎแแแแ แแแแแแแขแ, แ แแแแแแช แแแแฎแแแก แแฅแแแ แแแแ แแแ แ แแแฌแแ แแ แกแแ แแแขแแแก แแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแงแแแแ แแกแแแ แกแฎแแ แแแแชแแแแแจแ แฎแแแแฎแแ แแแแแ แแแแก แฉแแกแแแก แแแ แแจแ.
Groovy แแแแ แแ แฉแแฃแแ แกแแชแแแแแแ แงแแแแ แแแแแแแฃแแแแแก แแแกแแฆแแแแ:
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()
แแแขแแแแแจแ แฉแแกแแแแก แแแ แแจแ, แแก แแแแ แแฆแแแก แแแแ แแกแแ แแแกแแก แกแแฎแแแก (MICROSERVICE_NAME) แจแแงแแแแแก แกแแฎแแ แแ แแแแแแแแก แแแแฎแแแแแก แแแแฃแแแขแ (แแแแแแ getCommitsForMicroservice) แแงแแแแแก แแแแแก API-แก แแ แแฆแแแก แงแแแแ แแแแแแแฃแแแแแก id แแ commit แจแแขแงแแแแแแแแก แแแชแแแฃแแ แแแแ แแกแแ แแแกแแกแแแแก.
แ แแแแ แช แฃแแแ แแฆแแแแจแแแ, แแ แแแแแ แฃแแแ แแแแแ แฃแแแก html, แ แแแแแแช แแแแแฉแแแแแ แแแแ แแแ แแจแแแแแ แแแ แแแแขแ แแแแ Jenkins-แจแ, แแแแขแแ Bitbucket-แแแ แแแฆแแแฃแ แงแแแแ แแแแจแแแแแแแแก แแแฎแแแแ แกแแแจแ แแ แแแแแขแแแ แแแ แแกแแ แฉแแแแ.
แงแแแแ แแแแแฏแแก แแแกแ แฃแแแแแก แจแแแแแ แฃแแแ แแแแแฆแแ แแกแแแ แแแแแแ แแแแ แแ แแจแแแแแ แแแ แแแแขแ แแแแ.
แแฃ แแฅแแแ แแแ แฉแแแ test1 แแแแ แแกแแ แแแกแ:
แแฃ แแฅแแแ แแแ แฉแแแ test2 แแแแ แแกแแ แแแกแ:
แแแแแแแแฎแแแแแ, แ แแ แแแแฎแแแ แแแแแกแแแแก แแแแ แแ แฃแคแ แ แแแกแแฎแแ แฎแแแแแ แแฅแแแแ แแฅแแแแก แแแแชแแแแกแแแ แแ แแแแ แแแขแแ แแฅแชแแ, แแแแ แ url-แแก แงแแแแ แฏแแ แแ แแแแแ แแแ แแ แกแแญแแ แ commit id-แแก แซแแแแ.
PS แแก แกแขแแขแแ แแแแแแแแแ แซแแแแแ แแแแแ แขแแแแแฃแ แแแแแแแแก, แ แแแแแแช แจแแแซแแแแ แแ แแงแแก แแ แแฅแขแแแฃแแ แแแแแงแแแแแ แแ แคแแ แแแ, แ แแแแแ แแกแแแแแแแแก แแฅแแ แแ แแแแแ แแแแกแฎแแแแแแฃแแ แแแ แแแแขแ แ, แแแแ แแ แแ แกแขแแขแแแก แแแแแแ แแงแ แแแแก แฉแแแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แแแกแขแ แฃแแแแขแ แแ แแ แ แกแแแฃแจแแ แแแแแฌแงแแแขแแก แแแฌแแแแแ.
PSS แ แแแแ แช แแแ แ แแแแฌแแ แ, แแฃ แแก แกแขแแขแแ แกแแกแแ แแแแแแ, แแแจแแ แจแแแแแแ แแฅแแแแ แฏแแแแแแกแแก แแแแชแแแแแแก แแแแแแแฃแ แ แแแแคแแแฃแ แแชแแ แแแแแก แกแแจแฃแแแแแแ.
แฌแงแแ แ: www.habr.com