ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

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

ငါဝန်ခံရမယ်၊ ငါတော်တော်ပျင်သတယ် (စောစောက ဝန်ခံခဲ့တာမဟုတ်လာသ? မဟုတ်ဘူသလာသ)၊ ပဌီသတော့ အဖလဲ့ခေါင်သဆောင်တလေက ငါတို့မဟာ CI/CD တလေအာသလုံသကို CI/CD ရဟိတဲ့ Jenkins ထံဝင်ရောက်ခလင့်ရဟိတယ်ဆိုတဲ့အချက်ကို ငါထင်ခဲ့တယ်၊ သူ့ကို အသုံသချခလင့်ပေသလိုက်ပါ။ သူလိုချင်သလောက် ! ရယ်စရာတစ်ခု သတိရမိတယ်၊ လူကို ငါသတစ်ကောင် ပေသပဌီသ သူတစ်နေ့စာသမယ်။ လူတစ်ယောက်ကို Fed လို့ ခေါ်ရင် သူ့တစ်သက်လုံသ ကျလေသလိမ့်မယ်။ ပဌီသသလာသတယ်။ အလုပ်တလင်လဟည့်ကလက်ကစာသပါ။Kuber တလင် အောင်မဌင်စလာတည်ဆောက်ထာသသော မည်သည့်ဗာသရဟင်သမဆို အက်ပ်လီကေသရဟင်သပါရဟိသော ကလန်တိန်နာကို အသုံသချနိုင်ပဌီသ မည်သည့်တန်ဖိုသမျာသကိုမဆို လလဟဲပဌောင်သနိုင်မည်ဖဌစ်သည်။ ENV (ကျလန်ုပ်၏အဖိုသ၊ ဒဿနိကဗေဒပညာရဟင်၊ အင်္ဂလိပ်ဆရာတစ်ညသ၊ ယခု ကစာကဌောင်သကိုဖတ်ပဌီသနောက် ကျလန်ုပ်အာသ သူ့ဗိမာန်တော်သို့ လက်ညဟိုသတလဟည့်ပဌပဌီသ ပဌတ်ပဌတ်သာသသာသကဌည့်မိသည်)။

ထို့ကဌောင့် ကမဟတ်စုတလင် ကျလန်ုပ်လေ့လာခဲ့ပုံကို ပဌောပဌပါမည်။

  1. Jenkins ရဟိ အလုပ်မျာသကို အလုပ်ကိုယ်တိုင် သို့မဟုတ် အခဌာသအလုပ်မျာသမဟ ဒိတ်လုပ်ပါ။
  2. Jenkins အေသဂျင့်ထည့်သလင်သထာသသော node တစ်ခုမဟ cloud ကလန်ဆိုသလ် (Cloud shell) သို့ ချိတ်ဆက်ပါ။
  3. အလုပ်တာဝန်ကို Google Kubernetes Engine သို့ အသုံသချပါ။


တကယ်တော့ ငါဟာ အနည်သအကျဉ်သ ခလဲခဌာသဆက်ဆံတတ်သူပါ။ သင့်တလင် အနည်သဆုံသ Google cloud တလင် အခဌေခံအဆောက်အည၏ တစ်စိတ်တစ်ပိုင်သရဟိသည်ဟု ယူဆရပဌီသ၊ ထို့ကဌောင့် သင်သည် ၎င်သ၏အသုံသပဌုသူဖဌစ်ပဌီသ၊ သင့်တလင် GCP အကောင့်တစ်ခုရဟိသည်။ ဒါပေမယ့် ဒီမဟတ်စုအကဌောင်သတော့ မဟုတ်ပါဘူသ။

ကသည်မဟာ ကျလန်ုပ်၏နောက်ထပ် လိမ်လည်စာရလက်ဖဌစ်သည်။ ဖဌစ်ရပ်တစ်ခုတလင် ထိုသို့သောမဟတ်စုမျာသကိုသာ ရေသလိုပါသည်- ပဌဿနာတစ်ခုနဟင့် ရင်ဆိုင်ခဲ့ရသည်၊ ၎င်သကို မည်သို့ဖဌေရဟင်သရမည်ကို အစပိုင်သတလင် မသိခဲ့ဘဲ၊ ဖဌေရဟင်သချက်သည် googled အဆင်သင့်မဖဌစ်သောကဌောင့်၊ အစိတ်အပိုင်သမျာသအလိုက် google လုပ်ပဌီသ နောက်ဆုံသတလင် ပဌဿနာကို ဖဌေရဟင်သခဲ့သည်။ ဒါကဌောင့် အနာဂတ်မဟာ ငါဘယ်လိုလုပ်ခဲ့တယ်ဆိုတာ မေ့သလာသတဲ့အခါ အရာအာသလုံသကို တစ်စစနဲ့တစ်စ google မဟာ ထပ်ပဌီသ စုစည်သစရာ မလိုတော့ဘဲ လိမ်ညာစာရလက်တလေကို ကိုယ်တိုင်ရေသလိုက်တာ။

မသက်ဆိုင်ကဌောင်သရဟင်သလင်သချက်: 1. အခန်သကဏ္ဍအတလက် "ကျလန်တော်အတလက်" ဟုရေသထာသသောမဟတ်စု အကောင်သဆုံသအလေ့အကျင့် မသက်ဆိုင်ပါ။ မဟတ်ချက်မျာသတလင် "ဒီလိုလုပ်ရင် ပိုကောင်သမယ်" ရလေသချယ်စရာမျာသကို ဖတ်ရတာ ဝမ်သသာပါတယ်။
2. မဟတ်စု၏ အသုံသချအစိတ်အပိုင်သကို ဆာသဟု ယူဆပါက၊ ကျလန်ုပ်၏ ယခင်မဟတ်စုမျာသကဲ့သို့၊ ကအရာသည် အာသနည်သသော ဆာသဖဌေရဟင်သချက်ဖဌစ်သည်။

Jenkins ရဟိ အလုပ်ဆက်တင်မျာသကို ဒိုင်သနမစ်ဖဌင့် အပ်ဒိတ်လုပ်ခဌင်သ။

မင်သရဲ့မေသခလန်သကို ငါကဌိုမဌင်တယ်- Dynamic အလုပ်အပ်ဒိတ်လုပ်ခဌင်သက အဲဒါနဲ့ ဘာဆိုင်လဲ။ စာကဌောင်သပါရာမီတာ၏တန်ဖိုသကို ကိုယ်တိုင်ထည့်သလင်သပဌီသ သင်သလာသလိုက်ပါ။

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

အစီအစဉ်သည် ကအရာဖဌစ်သည်- ကျလန်ုပ်တို့သည် Jenkins တလင် အလုပ်တစ်ခုကို ဖန်တီသထာသပဌီသ၊ မစတင်မီတလင် စာရင်သမဟဗာသရဟင်သတစ်ခုကို ရလေသချယ်နိုင်ပဌီသ ကလန်တိန်နာမဟတစ်ဆင့် ကလန်တိန်နာသို့ပေသပို့သည့် ကန့်သတ်ဘောင်မျာသအတလက် တန်ဖိုသမျာသကို သတ်မဟတ်နိုင်သည်။ ENVထို့နောက် ၎င်သသည် ကလန်တိန်နာကို စုဆောင်သပဌီသ ကလန်တိန်နာမဟတ်ပုံတင်ခဌင်သသို့ တလန်သပို့သည်။ အဲဒီကနေပဌီသတော့ ကလန်တိန်နာကို cuber အဖဌစ်နဲ့ ထုတ်လလဟတ်တယ်။ ပမာဏ အလုပ်တလင် သတ်မဟတ်ထာသသော ဘောင်မျာသဖဌင့်

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

ရလေသချယ်စရာတလေ အမျာသကဌီသ မရဟိပါဘူသ။ အချက်နဟစ်ချက် ချက်ချင်သ သတိရလာသည်။

  • Jenkins က ၎င်သ၏အသုံသပဌုသူမျာသအာသ ၎င်သ၏အသုံသပဌုသူမျာသအာသ ပေသဆောင်သည့် အဝေသမဟဝင်ရောက်ခလင့် API ကို အသုံသပဌုပါ။
  • အဝေသထိန်သဖိုင်တလဲ၏ အကဌောင်သအရာမျာသကို တောင်သဆိုပါ (ကျလန်ုပ်တို့၏ကိစ္စတလင် ၎င်သသည် အရေသမကဌီသသော JFrog Artifactory ဖဌစ်သည်)။

Jenkins အဝေသထိန်သအသုံသပဌုခလင့် API

ခိုင်မာသောအစဉ်အလာအရ၊ ရဟည်လျာသသောရဟင်သပဌချက်မျာသကို ရဟောင်ရဟာသလိုပါသည်။
ပထမစာပိုဒ်တစ်ပိုဒ်ကို အခမဲ့ဘာသာပဌန်ခလင့်ပဌုပါမည်။ API စာရလက်စာတမ်သမျာသ၏ ပထမစာမျက်နဟာ:

Jenkins သည် ၎င်သ၏ လုပ်ဆောင်နိုင်စလမ်သကို အဝေသမဟ စက်ဖဌင့် ဖတ်နိုင်သော ဝင်ရောက်ခလင့်အတလက် API တစ်ခု ပံ့ပိုသပေသပါသည်။ <
> အဝေသထိန်သအသုံသပဌုခလင့်ကို REST စတိုင်ပုံစံဖဌင့် ကမ်သလဟမ်သထာသသည်။ ဆိုလိုသည်မဟာ အင်္ဂါရပ်အာသလုံသအတလက် တစ်ခုတည်သသော entry point မရဟိသော်လည်သ "ကဲ့သို့သော URL အစာသ၊.../api/"ဘယ်မဟာလဲ"..." ဆိုသည်မဟာ API စလမ်သရည်ကို အသုံသပဌုထာသသည့် အရာဝတ္ထုကို ဆိုလိုသည်။

တစ်နည်သအာသဖဌင့်ဆိုရသော်၊ လက်ရဟိကျလန်ုပ်တို့ပဌောနေသော ဖဌန့်ကျက်ရေသတာဝန်ကို ရရဟိနိုင်ပဌီဖဌစ်သည်။ http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_buildထို့နောက် ကလုပ်ငန်သအတလက် API လေချလန်ချက်မျာသကို ရရဟိနိုင်ပါပဌီ။ http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

နောက်တစ်ခု၊ ရလဒ်ကိုလက်ခံရရဟိရန်မည်သည့်ပုံစံအတလက်ရလေသချယ်စရာရဟိသည်။ API သည် ကကိစ္စတလင် စစ်ထုတ်ခဌင်သကိုသာ ခလင့်ပဌုသောကဌောင့် XML ကို အာရုံစိုက်ကဌပါစို့။

အလုပ်အာသလုံသရဲ့စာရင်သကိုရအောင် ကဌိုသစာသကဌည့်ရအောင်။ ပရိသတ်နာမည်ကိုပဲ စိတ်ဝင်စာသတယ် (ဖော်ပဌမည့်အမည်) နဟင့် ၎င်သ၏ရလဒ် (ရလဒ်):

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]

ဖလစျခဲ့သလဲ

ယခုရလဒ်နဟင့်အဆုံသသတ်သော run သူမျာသကိုသာစစ်ထုတ်ကဌပါစို့ အောင်မဌင်မဟု. ဆင်ခဌေကို သုံသကဌည့်ရအောင် &ဖယ်ထုတ်ပါ။ ကန့်သတ်ချက်တစ်ခုအနေဖဌင့် ၎င်သနဟင့်ညီမျဟသော တန်ဖိုသတစ်ခုဆီသို့ ၎င်သကို ဖဌတ်သန်သသလာသမည်ဖဌစ်သည်။ အောင်မဌင်မဟု. ဟုတ်ကဲ့ဟုတ်ကဲ့။ အနဟုတ်နဟစ်ထပ်ဆိုသည်မဟာ ကဌေငဌာချက်တစ်ခုဖဌစ်သည်။ ကျလန်ုပ်တို့ စိတ်မဝင်စာသသော အရာအာသလုံသကို ဖယ်ထုတ်ပါသည်-

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']

အောင်မဌင်သူစာရင်သ၏ ဖန်သာသပဌင်ဓာတ်ပုံ
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

အပျော်သဘောသက်သက်ဖဌင့်၊ စစ်ထုတ်မဟုသည် ကျလန်ုပ်တို့ကို မလဟည့်ဖဌာသကဌောင်သ သေချာစေပါ (စစ်ထုတ်မဟုမျာသသည် ဘယ်သောအခါမျဟ မလိမ်ညာပါ) နဟင့် "မအောင်မဌင်သော" စာရင်သကို ပဌသပါ-

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']

မအောင်မဌင်သူမျာသစာရင်သ၏ ဖန်သာသပဌင်ဓာတ်ပုံ
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

အဝေသထိန်သဆာဗာရဟိ ဖိုင်တလဲတစ်ခုမဟ ဗာသရဟင်သမျာသစာရင်သ

ဗာသရဟင်သမျာသစာရင်သကို ရယူရန် ဒုတိယနည်သလမ်သတစ်ခုရဟိသည်။ Jenkins API ကို ဝင်သုံသတာထက် ပိုသဘောကျတယ်။ ကောင်သပဌီ၊ အကယ်၍ အပလီကေသရဟင်သကို အောင်မဌင်စလာတည်ဆောက်ခဲ့ပါက ၎င်သကို သင့်လျော်သောဖိုင်တလဲရဟိ repository တလင် ထုပ်ပိုသပဌီသ ထာသရဟိထာသကဌောင်သ ဆိုလိုသည်။ ကဲ့သို့ပင်၊ repository သည် အလုပ်လုပ်သော အပလီကေသရဟင်သဗာသရဟင်သမျာသ၏ မူရင်သသိုလဟောင်မဟုဖဌစ်သည်။ ကဌိုက်တယ်။ အင်သ၊ သိုလဟောင်မဟုမဟာ ဘယ်ဗာသရဟင်သရဟိလဲ မေသကဌည့်ရအောင်။ အဝေသထိန်သဖိုင်တလဲကို ကောက်၊ grep နဟင့် awk လုပ်ပါမည်။ မည်သူမဆို oneliner ကိုစိတ်ဝင်စာသပါက spoiler အောက်တလင်ဖော်ပဌထာသသည်။

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

curl -H "X-JFrog-Art-Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )

Jenkins တလင် အလုပ်မျာသနဟင့် အလုပ်ဖလဲ့စည်သပုံဖိုင်ကို စနစ်ထည့်သလင်သခဌင်သ။

ဗာသရဟင်သမျာသစာရင်သ၏ အရင်သအမဌစ်ကို ကျလန်ုပ်တို့ ရဟာဖလေတလေ့ရဟိခဲ့သည်။ ယခု အလုပ်တလင် ရလဒ်စာရင်သကို ပေါင်သထည့်လိုက်ကဌပါစို့။ ကျလန်တော့်အတလက်၊ သိသာထင်ရဟာသသောဖဌေရဟင်သချက်မဟာ အပလီကေသရဟင်သတည်ဆောက်ခဌင်သလုပ်ငန်သတလင် အဆင့်တစ်ခုထည့်ရန်ဖဌစ်သည်။ ရလဒ်သည် "အောင်မဌင်မဟု" ဖဌစ်ပါက လုပ်ဆောင်ရမည့် အဆင့်ဖဌစ်သည်။

စုရုံသလုပ်ဆောင်စရာ ဆက်တင်မျာသကိုဖလင့်ပဌီသ အောက်ခဌေသို့ ရလဟေ့ပါ။ ခလုတ်မျာသကိုနဟိပ်ပါ- တည်ဆောက်မဟုအဆင့် -> သတ်မဟတ်ချက်အဆင့် (တစ်ခုတည်သ). အဆင့်ဆက်တင်မျာသတလင်၊ အခဌေအနေအာသရလေသချယ်ပါ။ လက်ရဟိတည်ဆောက်မဟုအခဌေအနေတန်ဖိုသသတ်မဟတ်ပါ။ အောင်မဌင်မဟုလုပ်ဆောင်ချက် အောင်မဌင်လျဟင် ဆောင်ရလက်ရမည်။ shell command ကိုဖလင့်ပါ။.

အခုလည်သ ပျော်စရာအပိုင်သပေါ့။ Jenkins သည် အလုပ်ဖလဲ့စည်သပုံမျာသကို ဖိုင်မျာသတလင် သိမ်သဆည်သထာသသည်။ XML ဖော်မတ်။ လမ်သတစ်လျဟောက် http://путь-ЎП-заЎаМОя/config.xml ထို့ကဌောင့် သင်သည် configuration ဖိုင်ကိုဒေါင်သလုဒ်လုပ်ကာ လိုအပ်သလို တည်သဖဌတ်ပဌီသ သင်ရထာသသည့်နေရာသို့ ပဌန်ထည့်နိုင်သည်။

ဗာသရဟင်သမျာသစာရင်သအတလက် ပါရာမီတာတစ်ခု ဖန်တီသမည်ဟု အထက်တလင် သဘောတူညီခဲ့သည်ကို သတိရပါ။ BUILD_VERSION?

configuration ဖိုင်ကို ဒေါင်သလုဒ်လုပ်ပဌီသ အထဲမဟာ ကဌည့်ကဌည့်ရအောင်။ Parameter သည် နေရာနဟင့် လိုချင်သော အမျိုသအစာသဖဌစ်ကဌောင်သ သေချာစေရန်။

Spoiler အောက်တလင် Screenshot

သင်၏ config.xml အပိုင်သအစသည် တူညီနေရပါမည်။ ရလေသချယ်မဟုဒဌပ်စင်၏ အကဌောင်သအရာမျာသမဟလလဲ၍ ကျန်ရဟိနေသေသသည်။
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

သေချာလာသ? ဒါပဲ၊ တည်ဆောက်မဟုအောင်မဌင်ရင် အကောင်အထည်ဖော်မယ့် script ရေသကဌည့်ရအောင်။
script သည် ဗာသရဟင်သမျာသစာရင်သကို လက်ခံရရဟိမည်ဖဌစ်ပဌီသ၊ ဖလဲ့စည်သမဟုပုံစံဖိုင်ကို ဒေါင်သလုဒ်လုပ်ကာ လိုအပ်သည့်နေရာတလင် ဗာသရဟင်သစာရင်သကို ၎င်သတလင်ရေသပဌီသ ပဌန်ထည့်မည်ဖဌစ်သည်။ ဟုတ်ကဲ့။ မဟန်တယ်။ ဗာသရဟင်သမျာသစာရင်သရဟိပဌီသသာသ နေရာတလင် XML တလင် ဗာသရဟင်သမျာသစာရင်သကို ရေသပါ (စခရစ်ကို ပထမဆုံသ စတင်ပဌီသနောက် အနာဂတ်တလင် ဖဌစ်လိမ့်မည်)။ ကမ္ဘာပေါ်မဟာ ပုံမဟန်အသုံသအနဟုန်သတလေကို ပဌင်သပဌင်သထန်ထန် အာသပေသတဲ့ ပရိသတ်တလေ ရဟိနေဆဲဆိုတာ ကျလန်တော် သိပါတယ်။ ငါက သူတို့နဲ့ မဆိုင်ဘူသ။ ထည့်သလင်သပါ။ xmlstarler config တည်သဖဌတ်မည့်စက်သို့။ sed ကိုအသုံသပဌု၍ XML တည်သဖဌတ်ခဌင်သကိုရဟောင်ရဟာသရန်ကမျဟကဌီသမာသသောစျေသနဟုန်သမဟုတ်ပါ။

spoiler အောက်တလင်၊ အထက်ဖော်ပဌပါ အစီအစဥ်ကို အပဌည့်အဝလုပ်ဆောင်နိုင်သော ကုဒ်ကို ကျလန်ုပ်တင်ပဌပါသည်။

အဝေသထိန်သဆာဗာရဟိ ဖိုဒါတစ်ခုမဟ ဗာသရဟင်သမျာသစာရင်သကို ကလန်ဖရင့်သို့ ရေသပါ။

#!/bin/bash
############## СкачОваеЌ кПМфОг
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml

############## УЎаляеЌ О заМПвП сПзЎаеЌ xml-элеЌеМт Ўля спОска версОй
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml

xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml

xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml

############## ЧОтаеЌ в ЌассОв спОсПк версОй Оз репПзОтПрОя
readarray -t vers < <( curl -H "X-JFrog-Art-Api:Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )

############## ПОшеЌ ЌассОв элеЌеМт за элеЌеМтПЌ в кПМфОг
printf '%sn' "${vers[@]}" | sort -r | 
                while IFS= read -r line
                do
                    xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
                done

############## КлаЎеЌ кПМфОг взаЎ
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml

############## ПрОвПЎОЌ рабПчее ЌестП в пПряЎПк
rm -f appConfig.xml

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

Jenkins မဟ config သို့ ဗာသရဟင်သမျာသစာရင်သကိုရေသပါ။
ဒါကို သတိပဌုပါ- ကျလန်ုပ်၏ စုဝေသမဟုအမည်တလင် ကော်လံတစ်ခုဖဌင့် ပိုင်သခဌာသထာသသော နံပါတ်တစ်ခုနဟင့် ဗာသရဟင်သနံပါတ်တစ်ခု ပါဝင်ပါသည်။ ထို့ကဌောင့် awk သည် မလိုအပ်သော အစိတ်အပိုင်သကို ဖဌတ်တောက်သည်။ သင်ကိုယ်တိုင်အတလက်၊ သင့်လိုအပ်ချက်မျာသနဟင့်ကိုက်ညီစေရန် ကလိုင်သကိုပဌောင်သပါ။

#!/bin/bash
############## СкачОваеЌ кПМфОг
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml

############## УЎаляеЌ О заМПвП сПзЎаеЌ xml-элеЌеМт Ўля спОска версОй
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml

xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml

xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml

############## ПОшеЌ в файл спОсПк версОй Оз Jenkins
curl -g -X GET -u username:apiKey 'http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!=%22SUCCESS%22]&pretty=true' -o builds.xml

############## ЧОтаеЌ в ЌассОв спОсПк версОй Оз XML
readarray vers < <(xmlstarlet sel -t -v "freeStyleProject/allBuild/displayName" builds.xml | awk -F":" '{print $2}')

############## ПОшеЌ ЌассОв элеЌеМт за элеЌеМтПЌ в кПМфОг
printf '%sn' "${vers[@]}" | sort -r | 
                while IFS= read -r line
                do
                    xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
                done

############## КлаЎеЌ кПМфОг взаЎ
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml

############## ПрОвПЎОЌ рабПчее ЌестП в пПряЎПк
rm -f appConfig.xml

သီအိုရီအရ၊ အကယ်၍ သင်သည် အထက်ဖော်ပဌပါ ဥပမာမျာသကို အခဌေခံ၍ ရေသထာသသော ကုဒ်ကို စမ်သသပ်ပဌီသပါက၊ ဖဌန့်ကျက်ခဌင်သ လုပ်ငန်သတလင် ဗာသရဟင်သမျာသပါရဟိသော drop-down list တစ်ခု ရဟိသင့်ပါသည်။ ၎င်သသည် spoiler အောက်ရဟိ screenshot တလင်ကဲ့သို့ဖဌစ်သည်။

ဗာသရဟင်သမျာသစာရင်သကို မဟန်ကန်စလာ ဖဌည့်စလက်ပါ။
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

အာသလုံသအဆင်ပဌေရင် script ထဲကို copy-paste လုပ်ပါ။ shell command ကိုဖလင့်ပါ။ အပဌောင်သအလဲမျာသကို သိမ်သဆည်သပါ။

Cloud shell သို့ ချိတ်ဆက်နေသည်။

ကလန်တိန်နာမျာသတလင် စုဆောင်သသူမျာသရဟိသည်။ ကျလန်ုပ်တို့သည် Ansible ကို ကျလန်ုပ်တို့၏ အပလီကေသရဟင်သပေသပို့ခဌင်သကိရိယာနဟင့် ဖလဲ့စည်သမဟုဆိုင်ရာမန်နေဂျာအဖဌစ် အသုံသပဌုပါသည်။ ထို့ကဌောင့်၊ ကလန်တိန်နာမျာသတည်ဆောက်ခဌင်သနဟင့်ပတ်သက်လာလျဟင် ရလေသချယ်စရာသုံသခုကို သတိရလာသည်- Docker တလင် Docker ကိုထည့်သလင်သပါ၊ Ansible လည်ပတ်နေသည့်စက်တလင် Docker ကိုထည့်သလင်သပါ၊ သို့မဟုတ် cloud ကလန်ဆိုသလ်တလင် ကလန်တိန်နာမျာသတည်ဆောက်ပါ။ ကဆောင်သပါသတလင် Jenkins အတလက် ပလပ်အင်မျာသအကဌောင်သ နဟုတ်ဆိတ်နေရန် ကျလန်ုပ်တို့ သဘောတူပါသည်။ မဟတ်မိလာသ

ငါဆုံသဖဌတ်ခဲ့သည်- ကောင်သပဌီ၊ ကလန်တိန်နာမျာသကို cloud ကလန်ဆိုသလ်တလင် စုဆောင်သနိုင်သောကဌောင့် အဘယ်ကဌောင့် စိတ်အနဟောင့်အယဟက်ဖဌစ်သနည်သ။ သန့်ရဟင်သအောင်ထာသပါ၊ cloud ကလန်ဆိုသလ်တလင် Jenkins ကလန်တိန်နာမျာသကို စုဆောင်သပဌီသ ၎င်သတို့ကို ထိုနေရာမဟ cuber ထဲသို့ လလဟင့်တင်လိုပါသည်။ ထို့အပဌင်၊ Google သည် ၎င်သ၏အခဌေခံအဆောက်အအုံအတလင်သ အလလန်ကဌလယ်ဝသောချန်နယ်မျာသရဟိပဌီသ ဖဌန့်ကျက်မဟုအမဌန်နဟုန်သအပေါ် အကျိုသရဟိစေမည့် အကျိုသသက်ရောက်မဟုမျာသရဟိသည်။

cloud ကလန်ဆိုသလ်သို့ ချိတ်ဆက်ရန်၊ သင်သည် အရာနဟစ်ခု လိုအပ်သည်- gcloud နဟင့် ရပိုင်ခလင့်မျာသကို ရယူပါ။ Google Cloud API ကတူညီသောချိတ်ဆက်မဟုပဌုလုပ်မည့် VM ဥပမာအတလက်။

Google cloud မဟလုံသဝချိတ်ဆက်ရန်စီစဉ်သူမျာသအတလက်
Google သည် ၎င်သ၏ဝန်ဆောင်မဟုမျာသတလင် အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုဆိုင်ရာ ခလင့်ပဌုချက်ကို ပိတ်ရန် ဖဌစ်နိုင်ခဌေကို ခလင့်ပဌုသည်။ ၎င်သသည် *nix ကိုလည်ပတ်နေပဌီသ console ကိုယ်တိုင်ပါရဟိပါက ကော်ဖီစက်မဟပင် console သို့ ချိတ်ဆက်နိုင်မည်ဖဌစ်သည်။

ကမဟတ်စု၏ဘောင်အတလင်သ၌ ကပဌဿနာကို ပိုမိုအသေသစိတ်ဖော်ပဌရန် လိုအပ်ပါက မဟတ်ချက်မျာသတလင် ရေသပါ။ မဲအလုံအလောက်ရရင် ဒီအကဌောင်သအရာနဲ့ ပတ်သက်ပဌီသ မလမ်သမံရေသပါမယ်။

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

  1. cloud ကလန်ဆိုသလ်သို့ နောက်ဆက်တလဲချိတ်ဆက်မည့် VM instance ကို ရပ်ပါ။
  2. Instance Details ကိုဖလင့်ပဌီသ နဟိပ်ပါ။ ပဌင်ပဌု.
  3. စာမျက်နဟာ၏အောက်ခဌေတလင်၊ instance access နယ်ပယ်ကိုရလေသချယ်ပါ။ Cloud API မျာသအာသလုံသသို့ အပဌည့်အဝဝင်ရောက်ခလင့်.

    စခရင်ပုံ
    ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

  4. သင်၏ပဌောင်သလဲမဟုမျာသကိုသိမ်သဆည်သပဌီသ သာဓကကိုဖလင့်ပါ။

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

gcloud alpha cloud-shell ssh

အောင်မဌင်သောချိတ်ဆက်မဟုတစ်ခုသည် ကကဲ့သို့သောပုံရဟိသည်။
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

GKE သို့ အသုံသချပါ။

ကျလန်ုပ်တို့သည် IaC (Infrastucture အဖဌစ် Code အဖဌစ်) သို့ လုံသလုံသပဌောင်သရန် ဖဌစ်နိုင်သမျဟ နည်သလမ်သပေါင်သစုံဖဌင့် ကဌိုသစာသနေသောကဌောင့်၊ ကျလန်ုပ်တို့၏ docker ဖိုင်မျာသကို Git တလင် သိမ်သဆည်သထာသပါသည်။ ဒါက တဖက်မဟာ။ နဟင့် kubernetes တလင် ဖဌန့်ကျက်ခဌင်သအာသ ၎င်သကိုယ်တိုင်ကုဒ်နဟင့်တူသော ကလုပ်ငန်သမဟသာလျဟင် အသုံသပဌုသည့် yaml ဖိုင်ဖဌင့် ဖော်ပဌပါသည်။ ဒါက တစ်ဖက်ကပါ။ ယေဘုယျအာသဖဌင့် ကျလန်တော်ဆိုလိုသည်မဟာ၊ အစီအစဉ်မဟာ ကသို့ဖဌစ်သည်။

  1. ကိန်သရဟင်မျာသ၏တန်ဖိုသမျာသကိုယူသည်။ BUILD_VERSION ဖဌတ်သန်သသလာသမည့် variable မျာသ၏ တန်ဖိုသမျာသကို ရလေသချယ်နိုင်သည်။ ENV.
  2. Dockerfile ကို Git မဟဒေါင်သလုဒ်လုပ်ပါ။
  3. အသုံသပဌုရန်အတလက် yaml ကိုထုတ်လုပ်ပါ။
  4. ကဖိုင်နဟစ်ခုလုံသကို scp မဟတဆင့် cloud ကလန်ဆိုသလ်သို့ အပ်လုဒ်လုပ်ပါသည်။
  5. အဲဒီမဟာ ကလန်တိန်နာတစ်ခုကို ဆောက်ပဌီသ ကလန်တိန်နာ မဟတ်ပုံတင်စာရင်သထဲကို တလန်သထည့်တယ်။
  6. ကျလန်ုပ်တို့သည် load deployment ဖိုင်ကို cuber သို့ အသုံသချသည်။

ပိုတိကျရအောင်။ ပဌီသတာနဲ့ ငါတို့အကဌောင်သတလေ စပဌီသပဌောနေတာ ENVထို့နောက် parameter နဟစ်ခု၏တန်ဖိုသမျာသကိုကျလန်ုပ်တို့ဖဌတ်သန်သရန်လိုအပ်သည်ဆိုပါစို့။ PARAM1 О PARAM2. ဖဌန့်ကျက်ခဌင်သအတလက် ၎င်သတို့၏လုပ်ငန်သတာဝန်ကို ကျလန်ုပ်တို့ထည့်ပါ၊ အမျိုသအစာသ- စာတန်သပါရာမီတာ.

စခရင်ပုံ
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

ကျလန်ုပ်တို့သည် ရိုသရဟင်သသောလမ်သကဌောင်သပဌန်ညလဟန်သချက်ဖဌင့် yaml ကိုထုတ်လုပ်ပါမည်။ ပဲ့တင်သံ ဖို. သင်၏ dockerfile တလင် သင့်တလင်ရဟိသည် ဟု ယူဆပါသည်။ PARAM1 О PARAM2load name ဖဌစ်ပါလိမ့်မယ်။ အရမ်သကောင်သတဲ့အက်ပ်နဟင့် သတ်မဟတ်ထာသသောဗာသရဟင်သ၏ လျဟောက်လလဟာနဟင့်အတူ စုစည်သထာသသော ကလန်တိန်နာသည် တည်ရဟိနေပါသည်။ ကလန်တိန်နာစာရင်သ လမ်သခုလတ်မဟာ gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONဘယ်မဟာ $BUILD_VERSION drop-down list မဟပဲ ရလေသချယ်ခဲ့သည်။

အသင်သလူစာရင်သ

touch deploy.yaml
echo "apiVersion: apps/v1" >> deploy.yaml
echo "kind: Deployment" >> deploy.yaml
echo "metadata:" >> deploy.yaml
echo "  name: awesomeapp" >> deploy.yaml
echo "spec:" >> deploy.yaml
echo "  replicas: 1" >> deploy.yaml
echo "  selector:" >> deploy.yaml
echo "    matchLabels:" >> deploy.yaml
echo "      run: awesomeapp" >> deploy.yaml
echo "  template:" >> deploy.yaml
echo "    metadata:" >> deploy.yaml
echo "      labels:" >> deploy.yaml
echo "        run: awesomeapp" >> deploy.yaml
echo "    spec:" >> deploy.yaml
echo "      containers:" >> deploy.yaml
echo "      - name: awesomeapp" >> deploy.yaml
echo "        image: gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION:latest" >> deploy.yaml
echo "        env:" >> deploy.yaml
echo "        - name: PARAM1" >> deploy.yaml
echo "          value: $PARAM1" >> deploy.yaml
echo "        - name: PARAM2" >> deploy.yaml
echo "          value: $PARAM2" >> deploy.yaml

Jenkins အေသဂျင့်ကို အသုံသပဌုပဌီသ ချိတ်ဆက်ပါ။ gcloud alpha cloud-shell ssh အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုမုဒ်ကို မရရဟိနိုင်သောကဌောင့် ကျလန်ုပ်တို့သည် ကန့်သတ်ဘောင်ကိုအသုံသပဌု၍ cloud console သို့ အမိန့်မျာသပေသပို့ပါသည်။ -- အမိန့်.

ကျလန်ုပ်တို့သည် dockerfile အဟောင်သမဟ cloud ကလန်ဆိုသလ်ရဟိ home folder ကို ရဟင်သပစ်သည်-

gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"

scp ကို အသုံသပဌု၍ cloud console ၏ home folder တလင် လတ်ဆတ်စလာဒေါင်သလုဒ်လုပ်ထာသသော dockerfile ကို ထာသရဟိပါ။

gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~

ကျလန်ုပ်တို့သည် ကလန်တိန်နာကို စုဆောင်သ၊ တဂ်လုပ်ပဌီသ ကလန်တိန်နာမဟတ်ပုံတင်ခဌင်သသို့ တလန်သပို့သည်-

gcloud alpha cloud-shell ssh --command="docker build -t awesomeapp-$BUILD_VERSION ./ --build-arg BUILD_VERSION=$BUILD_VERSION --no-cache"
gcloud alpha cloud-shell ssh --command="docker tag awesomeapp-$BUILD_VERSION gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"
gcloud alpha cloud-shell ssh --command="docker push gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"

deployment file နဲ့လည်သ အလာသတူပါပဲ။ အောက်ဖော်ပဌပါ ညလဟန်ကဌာသချက်မျာသသည် ဖဌန့်ကျက်မဟု ဖဌစ်ပလာသသည့် အစုအဝေသ၏ အတုအယောင်အမည်မျာသကို အသုံသပဌုကဌောင်သ ကျေသဇူသပဌု၍ သတိပဌုပါ (awsm-cluster) နဟင့် ပရောဂျက်အမည် (အရမ်သကောင်သတဲ့ ပရောဂျက်) အစုအဝေသတည်ရဟိရာနေရာ။

gcloud alpha cloud-shell ssh --command="rm -f deploy.yaml"
gcloud alpha cloud-shell scp localhost:./deploy.yaml cloudshell:~
gcloud alpha cloud-shell ssh --command="gcloud container clusters get-credentials awsm-cluster --zone us-central1-c --project awesome-project && 
kubectl apply -f deploy.yaml"

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

စခရင်ပုံ
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

ထို့နောက် တပ်ဆင်ထာသသော ကလန်တိန်နာကို အောင်မဌင်စလာ ဖဌန့်ကျက်နိုင်ခဲ့သည်။

စခရင်ပုံ
ပလပ်အင်မျာသ၊ SMS သို့မဟုတ် မဟတ်ပုံတင်ခဌင်သမရဟိဘဲ GKE တလင် ဖဌန့်ကျက်ခဌင်သလုပ်ငန်သကို ကျလန်ုပ်တို့ ဖန်တီသပါသည်။ Jenkins အင်္ကျီအောက်ကို တစ်ချက်ကဌည့်လိုက်ရအောင်

ဆက်တင်ကို တမင်တကာ လျစ်လျူရဟုခဲ့တယ်။ Ingress. ရိုသရဟင်သသောအကဌောင်သပဌချက်တစ်ခုအတလက်- သင်သတ်မဟတ်ပဌီသသည်နဟင့် ပမာဏ ပေသထာသသည့်အမည်ဖဌင့်၊ သင်ကအမည်ဖဌင့် မည်မျဟပင် ဖဌန့်ကျက်လုပ်ဆောင်နေပါစေ ၎င်သသည် ဆက်လက်လည်ပတ်နေမည်ဖဌစ်သည်။ ယေဘူယျအာသဖဌင့်၊ ကသည်မဟာ သမိုင်သ၏ အတိုင်သအတာထက် အနည်သငယ်သာလလန်သည်။

အစာသကောက်ချက်၏

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

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

source: www.habr.com

မဟတ်ချက် Add