Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

ကောင်သသောနေ့, ဟာဗရာ!

ဒီနေ့မဟာတော့ အသုံသပဌုနည်သတလေထဲက တစ်ခုကို မျဟဝေပေသချင်ပါတယ်။ Active Choices ပလပ်အင် အလုပ်တစ်ခုကိုလုပ်ပါ။ Jenkins တစ်စုတစ်စည်သတည်သနဟင့် အသုံသပဌုရအဆင်ပဌေဆုံသဖဌစ်သည်။

နိဒါန်သ

DevOps ကဲ့သို့ အတိုကောက်သည် IT အသိုင်သအဝိုင်သအတလက် အသစ်အဆန်သမဟုတ်တော့ပါ။ လူမျာသစလာအတလက်၊ “do DevOps” သည် မဟော်ခလုတ်တစ်မျိုသမျိုသနဟင့် ဆက်စပ်နေသည်၊ နဟိပ်လိုက်သောအခါတလင်၊ အပလီကေသရဟင်သကုဒ်သည် လက်တလေ့အသုံသချပဌီသ စမ်သသပ်ထာသသော အပလီကေသရဟင်သအဖဌစ်သို့ ပဌောင်သလဲသလာသသည် (အရာအာသလုံသသည် အမဟန်တကယ် ပိုမိုရဟုပ်ထလေသသော်လည်သ ကျလန်ုပ်တို့သည် လုပ်ငန်သစဉ်အာသလုံသမဟ နုတ်ထလက်နေသည်)။

ထို့ကဌောင့်၊ စီမံခန့်ခလဲသူမျာသသည် ကလစ်တစ်ချက်နဟိပ်ရုံဖဌင့် အက်ပလီကေသရဟင်သကို အသုံသချနိုင်ရန် မဟော်ခလုတ်တစ်ခု ပဌုလုပ်ရန် မဟာကဌာသထာသသည်။ ကလုပ်ငန်သကို အကောင်အထည်ဖော်ရာတလင် အမျိုသအစာသအမျိုသမျိုသရဟိပါသည်- လက်ငင်သသတင်သပို့သူတိုင်သအတလက် bot တစ်ခုရေသခဌင်သမဟ သီသခဌာသအပလီကေသရဟင်သတစ်ခုဖန်တီသခဌင်သအထိ။ မည်သို့ပင်ဆိုစေကာမူ၊ ကအရာအာသလုံသသည် တူညီသောရည်မဟန်သချက်ရဟိသည် - လျဟောက်လလဟာကို စတင်တည်ဆောက်ခဌင်သနဟင့် ဖဌန့်ကျက်ခဌင်သတို့ကို တတ်နိုင်သမျဟ ပလင့်လင်သမဌင်သာစလာနဟင့် အဆင်ပဌေစေရန် လုပ်ဆောင်ရန်။

ငါတို့ကိစ္စမဟာ ငါတို့သုံသမယ်။ Jenkins.


Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

လုပ်ငန်သ

သတ်မဟတ်ထာသသော ဗာသရဟင်သတစ်ခု၏ အသေသစာသဝန်ဆောင်မဟုကို တည်ဆောက်ခဌင်သနဟင့် (သို့မဟုတ်) ဖဌန့်ကျက်ခဌင်သတို့ကို စတင်မည့် အဆင်ပဌေသော Jenkins အလုပ်တစ်ခု ဖန်တီသပါ။

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

ဒေတာထည့်သလင်သပါ။

ကျလန်ုပ်တို့တလင် အမျိုသမျိုသသော microservices မျာသ၏ source code ပါ၀င်သော repositories အမျာသအပဌာသရဟိသည်။

ကန့်သတ်ချက်မျာသသတ်မဟတ်ခဌင်သ။

ကျလန်ုပ်တို့၏အလုပ်အတလက် အောက်ပါဘောင်မျာသကို ထည့်သလင်သသင့်သည်-

  1. အလုပ်ကိုလည်ပတ်သောအခါတလင် ကျလန်ုပ်တို့တည်ဆောက်ပဌီသ အသုံသပဌုလိုသော microservice ကုဒ်နဟင့်အတူ သိုလဟောင်ရာ၏ URL ။
  2. တည်ဆောက်မဟုဖဌစ်ပေါ်လာမည့် ကတိကဝတ်၏ ID။

IS အတိုင်သ

ကတာဝန်ကို ပဌီသမဌောက်ရန် အလလယ်ဆုံသနည်သလမ်သမဟာ String အမျိုသအစာသ ဘောင်နဟစ်ခုကို ဖန်တီသရန်ဖဌစ်သည်။

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

ကကိစ္စတလင်၊ အသုံသပဌုသူသည် repository သို့လမ်သကဌောင်သကို ကိုယ်တိုင်ရိုက်ထည့်ရန် လိုအပ်ပဌီသ commit id သည် လုံသဝအဆင်ပဌေမည်မဟုတ်ကဌောင်သ သင်မဌင်ပါသည်။

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

ဖဌစ်ရန်

ယခု ၎င်သ၏ အာသသာချက်မျာသအာသလုံသကို ထည့်သလင်သစဉ်သစာသရန် အခဌာသသော ကန့်သတ်ဘောင်မျာသကို စမ်သကဌည့်ကဌပါစို့။
ရလေသချယ်မဟု ပါရာမီတာ အမျိုသအစာသ၊ ဒုတိယ- Active Choices Reactive Reference Parameter ဖဌင့် ပထမဘောင်ကို ဖန်တီသကဌပါစို့။ ရလေသချယ်မဟုအမျိုသအစာသနဟင့်အတူ ပါရာမီတာတလင်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ microservices ၏ကုဒ်ကို သိမ်သဆည်သထာသသည့် repositories အမည်မျာသကို ရလေသချယ်မဟုအကလက်တလင် ကိုယ်တိုင်ထည့်သလင်သပါမည်။

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

ပရိသတ်မျာသသည် ကဆောင်သပါသကို ကဌိုက်နဟစ်သက်ပါက၊ နောက်ဆောင်သပါသတလင် ကုဒ် (Configuration as code) ကိုအသုံသပဌု၍ ဖော်ပဌချက်အာသ အသုံသပဌု၍ Jenkins တလင် လုပ်ဆောင်ချက်မျာသကို ပဌင်ဆင်ခဌင်သလုပ်ငန်သစဉ်ကို ဖော်ပဌပါမည်။ ကျလန်ုပ်တို့သည် သိုလဟောင်မဟုအမည်မျာသကို ကိုယ်တိုင်ထည့်သလင်သပဌီသ ကန့်သတ်ဘောင်မျာသကို ဖန်တီသရန် မလိုအပ်ဘဲ၊ အရာအာသလုံသသည် အလိုအလျောက် ဖဌစ်သလာသလိမ့်မည် (ကျလန်ုပ်တို့၏ ကုဒ်သည် SCM ထံမဟ သိုလဟောင်မဟုစာရင်သကို လက်ခံရရဟိပဌီသ ကစာရင်သပါ ကန့်သတ်ချက်တစ်ခု ဖန်တီသမည်)။

သိုလဟောင်မဟုတစ်ခုစီတလင် ၎င်သ၏ကိုယ်ပိုင် ကလန်မန့်မျာသစာရင်သပါရဟိသောကဌောင့်၊ သိုလဟောင်မဟုတစ်ခုစီတလင် ၎င်သ၏ကိုယ်ပိုင် ကလန်မန့်မျာသစာရင်သရဟိသောကဌောင့် ဒုတိယဘောင်၏တန်ဖိုသမျာသသည် ပထမကန့်သတ်ချက်မဟရယူသည့်တန်ဖိုသပေါ်မူတည်၍ ဒိုင်နမစ်ဖဌင့် ဖဌည့်ပေသမည်ဖဌစ်သည်။

Active Choices Reactive Reference Parameter ဖဌည့်ရန် အောက်ပါ ကလက်လပ်မျာသ ရဟိသည်။

  1. အမည် - သတ်မဟတ်ချက်အမည်။
  2. script - ရည်ညလဟန်သထာသသော ကန့်သတ်ဘောင်အကလက်မဟ ပါရာမီတာ၏တန်ဖိုသကို ပဌောင်သလဲသည့်အခါတိုင်သ လုပ်ဆောင်မည့်ကုဒ် (ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် test1 နဟင့် test2 ကဌာသတလင် ရလေသချယ်သောအခါ)။
  3. ဖေါ်ပဌချက် - parameter ၏အကျဉ်သချုပ်ဖော်ပဌချက်။
  4. ရလေသချယ်မဟုအမျိုသအစာသ - script မဟပဌန်ပေသသည့်အရာဝတ္ထုအမျိုသအစာသ (ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် html ကုဒ်ကိုပဌန်ပေသမည်)။
  5. ရည်ညလဟန်သထာသသော ကန့်သတ်ချက် - ပါရာမီတာ၏အမည်၊ တန်ဖိုသကိုပဌောင်သလဲသောအခါ၊ Script ကဏ္ဍမဟကုဒ်ကိုလုပ်ဆောင်လိမ့်မည်။

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

ကကန့်သတ်ချက်ရဟိ အရေသကဌီသဆုံသအကလက်ကို ဖဌည့်ရန် တိုက်ရိုက်သလာသကဌပါစို့။ အသုံသပဌုခဌင်သမဟ ရလေသချယ်ရန် အကောင်အထည်ဖော်မဟု နဟစ်မျိုသကို ကျလန်ုပ်တို့ ကမ်သလဟမ်သထာသပါသည်။ Groovy Script သို့မဟုတ် Scriptler Script.
Scriptler သည် သင်ယခင်ကရေသသာသထာသသော script မျာသကို သိမ်သဆည်သပဌီသ ကော်ပီကူသထည့်ခဌင်သမပဌုဘဲ အခဌာသလုပ်ဆောင်စရာမျာသတလင် ၎င်သတို့ကို အသုံသပဌုခလင့်ပေသသည့် ပလပ်အင်တစ်ခုသာဖဌစ်သောကဌောင့် ကျလန်ုပ်တို့သည် ပထမဆုံသရလေသချယ်ပါသည်။

ရလေသချယ်ထာသသော သိုလဟောင်မဟုမဟ ကုဒ်မျာသအာသလုံသကို ရယူရန် 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) ကို လက်ခံရရဟိပဌီသ တောင်သဆိုချက်တစ်ခု ပေသပို့သည်။ Bitbucket (နည်သလမ်သ getCommitsForMicroservice) ၎င်သ၏ API ကို အသုံသပဌု၍ ပေသထာသသော microservice အတလက် commits အာသလုံသ၏ id နဟင့် commit message ကို ရယူသည်။
အစောပိုင်သတလင် ဖော်ပဌခဲ့သည့်အတိုင်သ ကကုဒ်သည် စာမျက်နဟာပေါ်တလင် ပဌသမည့် html ကို ပဌန်ပေသသင့်သည်။ ကန့်သတ်ချက်မျာသဖဌင့်တည်ဆောက်ပါ။ Jenkins တလင်၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် စာရင်သတစ်ခုတလင် Bitbucket မဟရရဟိထာသသောတန်ဖိုသမျာသအာသလုံသကို ခဌုံပဌီသရလေသချယ်ရန် ၎င်သတို့ကိုထည့်သည်။

အဆင့်တလေ အာသလုံသပဌီသသလာသရင်တော့ လဟပတဲ့ စာမျက်နဟာကို ရသင့်ပါတယ်။ ကန့်သတ်ချက်မျာသဖဌင့်တည်ဆောက်ပါ။.

သင်သည် test1 microservice ကိုရလေသချယ်ပါက-

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

သင်သည် test2 microservice ကိုရလေသချယ်ပါက-

Jenkins အလုပ်တလင် ဒိုင်သနမစ်ပါရာမီတာမျာသကို ဖန်တီသခဌင်သ သို့မဟုတ် သင့်လုပ်ငန်သကို အသုံသပဌုရလလယ်ကူအောင် ပဌုလုပ်နည်သ

url ကို အချိန်တိုင်သကူသယူပဌီသ လိုအပ်သော commit id ကိုရဟာဖလေခဌင်သထက် ကနည်သဖဌင့် သင့်လုပ်ငန်သနဟင့် အပဌန်အလဟန်တုံ့ပဌန်ရန် အသုံသပဌုသူအတလက် ပိုမိုအဆင်ပဌေမည်ဖဌစ်ကဌောင်သ သဘောတူပါသည်။

PS ကဆောင်သပါသတလင် စည်သဝေသပလဲမျာသတလင် မတူညီသောဘောင်မျာသစလာရဟိသောကဌောင့် ကပုံစံတလင် လက်တလေ့အသုံသမပဌုနိုင်သော အလလန်ရိုသရဟင်သသော ဥပမာကို ပေသဆောင်ထာသပါသည်၊ သို့သော် ကဆောင်သပါသ၏ရည်ရလယ်ချက်မဟာ အလုပ်လုပ်သည့်ဖဌေရဟင်သချက်ကိုပေသဆောင်ရန်မဟုတ်ဘဲ ကိရိယာ၏အလုပ်လုပ်ပုံကိုပဌသရန်ဖဌစ်သည်။

PSS စောစောက ကျလန်တော်ရေသခဲ့သလိုပဲ ဒီဆောင်သပါသက အသုံသဝင်တယ်ဆိုရင် နောက်တစ်ပုဒ်ကို ပဌောပဌပါမယ်။ ကုဒ်မဟတစ်ဆင့် Jenkins လုပ်ဆောင်စရာမျာသ၏ ဒိုင်သနမစ်ဖလဲ့စည်သမဟု.

source: www.habr.com

မဟတ်ချက် Add