සුබ දවසක්, හබ්ර්!
අද මම භාවිතා කිරීමට එක් ක්රමයක් බෙදා ගැනීමට කැමතියි
හැඳින්වීම
DevOps වැනි කෙටි යෙදුමක් තොරතුරු තාක්ෂණ ප්රජාවට තවදුරටත් අලුත් දෙයක් නොවේ. බොහෝ පුද්ගලයින් සඳහා, “DevOps” යන වාක්ය ඛණ්ඩය යම් ආකාරයක මැජික් බොත්තමක් සමඟ සම්බන්ධ වේ, ක්ලික් කළ විට, යෙදුම් කේතය ස්වයංක්රීයව යොදවා පරීක්ෂා කරන ලද යෙදුමක් බවට පත්වේ (සියල්ල ඇත්ත වශයෙන්ම වඩාත් සංකීර්ණ ය, නමුත් අපි සියලු ක්රියාවලීන්ගෙන් වියුක්තව සිටිමු).
එබැවින්, පරිපාලකයින්ට එක් ක්ලික් කිරීමකින් යෙදුම යෙදවිය හැකි වන පරිදි එවැනි මැජික් බොත්තමක් සෑදීමට අපට නියෝගයක් ලැබුණි. මෙම කාර්යය ක්රියාත්මක කිරීමේ විවිධ වර්ග තිබේ: ඕනෑම ක්ෂණික පණිවිඩකරුවෙකු සඳහා බොට් ලිවීමේ සිට වෙනම යෙදුමක් සංවර්ධනය කිරීම දක්වා. එසේ වුවද, මේ සියල්ලටම එකම ඉලක්කයක් ඇත - යෙදුම ගොඩනැගීම සහ යෙදවීම ආරම්භ කිරීම හැකි තරම් විනිවිද පෙනෙන සහ පහසු කිරීම.
අපගේ නඩුවේදී අපි භාවිතා කරන්නෙමු ජෙන්කින්ස්.
අරමුණු
නිශ්චිත අනුවාදයක තෝරාගත් ක්ෂුද්ර සේවාව ගොඩනැගීම සහ (හෝ) යෙදවීම දියත් කරන පහසු ජෙන්කින්ස් රැකියාවක් සාදන්න.
දත්ත ඇතුලත් කරන්න
විවිධ ක්ෂුද්ර සේවා වල මූල කේතය අඩංගු ගබඩා කිහිපයක් අප සතුව ඇත.
පරාමිතීන් නිර්වචනය කිරීම
පහත පරාමිතීන් අපගේ කාර්යයට ආදානය ලෙස ලැබිය යුතුය:
- කාර්යය ක්රියාත්මක කිරීමේදී අපට ගොඩනැගීමට සහ යෙදවීමට අවශ්ය ක්ෂුද්ර සේවා කේතය සහිත ගබඩාවේ URL.
- ගොඩනැගීම සිදුවන කැපවීමේ හැඳුනුම්පත.
ලෙස
මෙම කාර්යය ඉටු කිරීමට ඇති පහසුම ක්රමය වන්නේ String වර්ගයේ පරාමිති දෙකක් නිර්මාණය කිරීමයි.
මෙම අවස්ථාවෙහිදී, පරිශීලකයාට ගබඩාවට සහ කැපවීමේ හැඳුනුම්පතට යන මාර්ගය අතින් ඇතුල් කිරීමට අවශ්ය වනු ඇත, එය සම්පූර්ණයෙන්ම පහසු නොවන බව ඔබට පෙනේ.
විය යුතු පරිදි
දැන් අපි එහි සියලු වාසි සලකා බැලීමට වෙනත් ආකාරයේ පරාමිතීන් උත්සාහ කරමු.
තේරීම් පරාමිතිය වර්ගය සමඟ පළමු පරාමිතිය නිර්මාණය කරමු, දෙවන - ක්රියාකාරී තේරීම් ප්රතික්රියාශීලී විමර්ශන පරාමිතිය. තේරීම් වර්ගය සහිත පරාමිතිය තුළ, අපි අපගේ ක්ෂුද්ර සේවාවල කේතය ගබඩා කර ඇති ගබඩාවල නම් තේරීම් ක්ෂේත්රයට අතින් එකතු කරන්නෙමු.
ප්රේක්ෂකයින් මෙම ලිපියට කැමති නම්, ඊළඟ ලිපියෙන් මම කේත හරහා විස්තරයක් භාවිතා කරමින් ජෙන්කින්ස් හි කාර්යයන් වින්යාස කිරීමේ ක්රියාවලිය විස්තර කරමි (කේතය ලෙස වින්යාස කිරීම), i.e. අපට අතින් නිධි නාම ඇතුළත් කිරීමට සහ පරාමිති සෑදීමට අවශ්ය නොවනු ඇත, සියල්ල ස්වයංක්රීයව සිදුවනු ඇත (අපගේ කේතය SCM වෙතින් ගබඩා ලැයිස්තුවක් ලබා ගන්නා අතර මෙම ලැයිස්තුව සමඟ පරාමිතියක් සාදනු ඇත).
පළමු පරාමිතිය ගන්නා අගය (test1 හෝ test2) මත පදනම්ව, දෙවන පරාමිතියෙහි අගයන් ගතිකව පුරවනු ඇත, මන්ද සෑම ගබඩාවකටම තමන්ගේම කැපවීම් ලැයිස්තුවක් ඇත.
Active Choices Reactive Reference Parameter පිරවීමට පහත ක්ෂේත්ර ඇත:
- නම - පරාමිති නම.
- තිර රචනය - යොමු කරන ලද පරාමිති ක්ෂේත්රයෙන් පරාමිතියේ අගය වෙනස් කරන සෑම අවස්ථාවකම ක්රියාත්මක වන කේතය (අපගේ නඩුවේදී, අපි test1 සහ test2 අතර තෝරා ගන්නා විට).
- විස්තර - පරාමිතිය පිළිබඳ කෙටි විස්තරයක්.
- තේරීමේ වර්ගය - ස්ක්රිප්ට් මඟින් ආපසු ලබා දෙන වස්තුවේ වර්ගය (අපගේ නඩුවේදී අපි html කේතය ආපසු ලබා දෙන්නෙමු).
- යොමු පරාමිතිය - පරාමිතියේ නම, එහි අගය වෙනස් කළ විට, ස්ක්රිප්ට් කොටසේ කේතය ක්රියාත්මක වේ.
මෙම පරාමිතියෙහි වඩාත්ම වැදගත් ක්ෂේත්රය පිරවීමට අපි කෙලින්ම ඉදිරියට යමු. අපට තෝරා ගැනීමට ක්රියාත්මක කිරීමේ වර්ග දෙකක් පිරිනමනු ලැබේ: භාවිතා කිරීම ග්රෝවි ස්ක්රිප්ට් හෝ 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) ආදානය ලෙස ලබාගෙන ඉල්ලීමක් යවයි බිට්බකට් (ක්රමය ලබාගන්න CommitsForMicroservice) එහි API භාවිතා කර, ලබා දී ඇති ක්ෂුද්ර සේවාවක් සඳහා වන සියලුම කැපවීම්වල id සහ කැපවීමේ පණිවිඩය ලබා ගනී.
කලින් සඳහන් කළ පරිදි, මෙම කේතය පිටුවේ දර්ශනය වන html ආපසු ලබා දිය යුතුය පරාමිතීන් සමඟ ගොඩනඟන්න ජෙන්කින්ස් හි, එබැවින් අපි Bitbucket වෙතින් ලැබුණු සියලුම අගයන් ලැයිස්තුවක ඔතා ඒවා තේරීමට එකතු කරමු.
සියලුම පියවර සම්පූර්ණ කිරීමෙන් පසු, එවැනි අලංකාර පිටුවක් අප ලබා ගත යුතුය පරාමිතීන් සමඟ ගොඩනඟන්න.
ඔබ test1 microservice තෝරා ගත්තේ නම්:
ඔබ test2 microservice තෝරා ගත්තේ නම්:
සෑම විටම url පිටපත් කර අවශ්ය කැපවීමේ හැඳුනුම්පත සෙවීමට වඩා පරිශීලකයාට මේ ආකාරයෙන් ඔබේ කාර්යය සමඟ අන්තර් ක්රියා කිරීම වඩාත් පහසු වනු ඇති බවට එකඟ වන්න.
ප්රාදේශීය සභා මෙම ලිපිය ඉතා සරල කළ උදාහරණයක් සපයයි, එකලස් කිරීම් වලට තවත් විවිධ පරාමිතීන් ඇති බැවින් මෙම පෝරමයේ ප්රායෝගික භාවිතයක් නොවිය හැකිය, නමුත් මෙම ලිපියේ අරමුණ වූයේ මෙවලම ක්රියා කරන ආකාරය පෙන්වීම මිස ක්රියාකාරී විසඳුමක් සැපයීම නොවේ.
පීඑස් මා කලින් ලියා ඇති පරිදි, මෙම ලිපිය ප්රයෝජනවත් නම්, ඊළඟ ලිපිය ගැන වනු ඇත කේතය හරහා ජෙන්කින්ස් කාර්යයන් ගතික වින්යාසය.
මූලාශ්රය: www.habr.com