Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

ကျလန်ုပ်တို့သည် DevOps ကို အတတ်နိုင်ဆုံသ တီထလင်ခဲ့သည်။ ကျလန်ုပ်တို့တလင် ၈ ယောက်ရဟိပဌီသ Vasya သည် Windows တလင် အမိုက်ဆုံသဖဌစ်သည်။ ရုတ်တရက် Vasya ထလက်သလာသပဌီသ Windows ဖလံ့ဖဌိုသတိုသတက်မဟုမဟ ပံ့ပိုသပေသသော ပရောဂျက်အသစ်တစ်ခုကို စတင်ရန် ကျလန်တော့်မဟာ တာဝန်ရဟိသည်။ စာသပလဲပေါ် Windows development stack တစ်ခုလုံသကို လလဟင့်ပစ်လိုက်တော့ အခဌေအနေက နာကျင်မဟန်သ သိလိုက်ရတယ်...

ဇာတ်လမ်သက ဒီလိုပါ။ Alexandra Sinchinova အပေါ် DevOpsConf. ထိပ်တန်သ Windows ကျလမ်သကျင်သူသည် ကုမ္ပဏီမဟ ထလက်ခလာသလာသသောအခါ အလက်ဇန္ဒာသသည် ယခု ဘာလုပ်ရမည်ကို တလေသတောနေခဲ့သည်။ Linux သို့ပဌောင်သပါ။ အလက်ဇန္ဒာသသည် သုံသစလဲသူ 100 အတလက် အပဌီသသတ် ပရောဂျက်ကို အသုံသပဌု၍ Windows ဖလံ့ဖဌိုသတိုသတက်မဟု၏ အစိတ်အပိုင်သတစ်ခုအာသ Linux သို့ မည်ကဲ့သို့ လလဟဲပဌောင်သနိုင်သည်ကို အလက်ဇန္ဒာသက ပဌောပဌပါမည်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

TFS, Puppet, Linux .NET core ကို အသုံသပဌု၍ ပရောဂျက်တစ်ခုကို RPM သို့ လလယ်ကူပဌီသ အာသစိုက်ထုတ်နည်သ။ ဖလံ့ဖဌိုသတိုသတက်ရေသအဖလဲ့သည် Postgres နဟင့် Flyway ဟူသော စကာသလုံသမျာသကို ပထမဆုံသအကဌိမ်ကဌာသရပဌီသ နောက်ဆုံသရက်သည် သဘက်ခါဖဌစ်ပါက ပရောဂျက်ဒေတာဘေ့စ်ဗာသရဟင်သကို မည်သို့ပံ့ပိုသကူညီမည်နည်သ။ Docker နဲ့ ဘယ်လိုပေါင်သစည်သရမလဲ။ Puppet နဟင့် Linux ကိုမျက်နဟာသာပေသရန်အတလက် Windows နဟင့် smoothies မျာသကိုစလန့်ပစ်ရန် .NET developer မျာသအာသ မည်ကဲ့သို့လဟုံ့ဆော်မည်နည်သ။ ခလန်အာသ၊ ဆန္ဒ၊ ထုတ်လုပ်မဟုတလင် Windows ကို ထိန်သသိမ်သထာသရန် အရင်သအမဌစ်မျာသ မရဟိလျဟင် အယူဝါဒဆိုင်ရာ ပဋိပက္ခမျာသကို မည်သို့ဖဌေရဟင်သမည်နည်သ။ ကအကဌောင်သအပဌင်၊ Web Deploy၊ စမ်သသပ်ခဌင်သ၊ CI အကဌောင်သ၊ ရဟိပဌီသသာသပရောဂျက်မျာသတလင် TFS အသုံသပဌုခဌင်သအလေ့အကျင့်မျာသအကဌောင်သ၊ ကျိုသနေသော ချိုင်သထောက်မျာသနဟင့် အလုပ်ဖဌေရဟင်သနည်သမျာသအကဌောင်သ Alexander ၏ မဟတ်တမ်သမဟတ်တမ်သတလင် ဖော်ပဌထာသသည်။


ဒါနဲ့ Vasya ထလက်သလာသတယ်၊ အလုပ်က ငါ့မဟာရဟိတယ်၊ developer တလေက ကောက်ဆလတလေနဲ့ စိတ်မရဟည်စလာ စောင့်နေကဌတယ်။ နောက်ဆုံသတော့ Vasya ပဌန်မရနိုင်တော့ဘူသဆိုတာ သိလိုက်ရတော့ အလုပ်ဆင်သလိုက်တယ်။ စစချင်သအာသဖဌင့်၊ ကျလန်ုပ်သည် ကျလန်ုပ်တို့၏ရေယာဉ်စုရဟိ Win VM ၏ ရာခိုင်နဟုန်သကို အကဲဖဌတ်ပါသည်။ ရမဟတ်က Windows ကို မျက်နဟာသာမပေသခဲ့ပါဘူသ။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

ကျလန်ုပ်တို့သည် DevOps ကို တက်ကဌလစလာ တီထလင်နေသောကဌောင့်၊ အက်ပလီကေသရဟင်သအသစ်တစ်ခုပေသပို့ရန် ချဉ်သကပ်မဟုတလင် တစ်စုံတစ်ခု ပဌောင်သလဲရန်လိုအပ်ကဌောင်သ ကျလန်ုပ်သဘောပေါက်ပါသည်။ ဖဌေရဟင်သချက်တစ်ခုသာရဟိသည် - ဖဌစ်နိုင်ပါက အရာအာသလုံသကို Linux သို့ လလဟဲပဌောင်သပါ။ Google က ကျလန်တော့်ကို ကူညီခဲ့တယ် - အဲဒီတုန်သက .Net ကို Linux မဟာ ပို့ထာသပဌီသသာသပါ၊ ဒါက ဖဌေရဟင်သချက်ဖဌစ်ကဌောင်သ ကျလန်တော် သဘောပေါက်ပါတယ်။

Linux နဟင့် အဘယ်ကဌောင့် .NET core ကို တလဲဖက်အသုံသပဌုရသနည်သ။

ယင်သအတလက် အကဌောင်သရင်သမျာသစလာ ရဟိခဲ့သည်။ “ပေသငလေ” နဟင့် “မပေသချေ” ကဌာသတလင် အမျာသစုသည် ကျလန်ုပ်ကဲ့သို့ ဒုတိယကို ရလေသချယ်မည်ဖဌစ်သည်။ MSDB အတလက် လိုင်စင်တစ်ခုသည် $1 ခန့် ကုန်ကျပဌီသ Windows virtual machine မျာသကို ထိန်သသိမ်သထာသရန် ဒေါ်လာရာနဟင့်ချီ ကုန်ကျသည်။ ကုမ္ပဏီကဌီသတစ်ခုအတလက် ဒါက ကုန်ကျစရိတ်ကဌီသပါတယ်။ အဲဒါကဌောင့် ချလေတာခဌင်သ - ပထမအကဌောင်သပဌချက်. အရေသအကဌီသဆုံသမဟုတ်ပေမယ့် အရေသအကဌီသဆုံသတလေထဲက တစ်ခုပါ။

Windows virtual machines မျာသသည် ၎င်သတို့၏ Linux ညီအစ်ကိုမျာသထက် အရင်သအမဌစ်မျာသကို ပိုမိုရယူသည် - သူတို့က လေသလံတယ်။. ကုမ္ပဏီကဌီသမျာသ၏ အတိုင်သအတာအရ Linux ကို ရလေသချယ်ခဲ့သည်။

စနစ်သည် ရဟိပဌီသသာသ CI တလင် ရိုသရိုသရဟင်သရဟင်သ ပေါင်သစပ်ထာသသည်။. ကျလန်ုပ်တို့သည် တိုသတက်ကောင်သမလန်သော DevOps ဖဌစ်သည်ဟု ကျလန်ုပ်တို့ယူဆသည်၊ ကျလန်ုပ်တို့သည် Bamboo၊ Jenkins နဟင့် GitLab CI ကိုအသုံသပဌုသည်၊ ထို့ကဌောင့် ကျလန်ုပ်တို့၏အလုပ်အမျာသစုသည် Linux ပေါ်တလင်အလုပ်လုပ်သည်။

နောက်ဆုံသ အကဌောင်သအရင်သကတော့ အဆင်ပဌေပါ့။ နည်သပညာပိုင်သကို နာသလည်သူမျာသ၊ အနဟောက်အယဟက်ကင်သကင်သသော ဝန်ဆောင်မဟုကို သေချာစေရန်နဟင့် ဒုတိယလိုင်သမဟ ဝန်ဆောင်မဟုမျာသကို ထိန်သသိမ်သထာသသူမျာသ—“အစောင့်အကဌပ်” အတလက် ဝင်ပေါက်အတာသအဆီသကို လျဟော့ချရန် လိုအပ်ပါသည်။ ၎င်သတို့သည် Linux stack နဟင့် ရင်သနဟီသပဌီသသာသဖဌစ်သောကဌောင့် Windows ပလပ်ဖောင်သအတလက် ဆော့ဖ်ဝဲလ်၏တူညီသောလုပ်ဆောင်နိုင်စလမ်သကို နာသလည်ရန် အပိုရင်သမဌစ်မျာသကို သုံသစလဲခဌင်သထက် ထုတ်ကုန်အသစ်တစ်ခုကို နာသလည်ရန်၊ ပံ့ပိုသရန်နဟင့် ထိန်သသိမ်သရန် ၎င်သတို့အတလက် ပိုမိုလလယ်ကူသည်။

လိုအပ်ချက်

ညသစလာပထမ၊ developer မျာသအတလက်ဖဌေရဟင်သချက်အသစ်၏အဆင်ပဌေ. အထူသသဖဌင့် Linux ဟူသော စကာသလုံသကို ပဌောပဌီသနောက် ၎င်သတို့အာသလုံသသည် အပဌောင်သအလဲအတလက် အဆင်သင့်မဖဌစ်သေသပါ။ ဆော့ဖ်ဝဲရေသသာသသူမျာသသည် ၎င်သတို့၏ စိတ်ကဌိုက် Visual Studio၊ TFS နဟင့် စည်သဝေသပလဲမျာသနဟင့် ဖျော်စပ်ခဌင်သမျာသအတလက် အလိုအလျောက်စမ်သသပ်မဟုမျာသ ပဌုလုပ်လိုကဌသည်။ ထုတ်လုပ်မဟုသို့ ပို့ဆောင်ပုံသည် ၎င်သတို့အတလက် အရေသမကဌီသပါ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ပုံမဟန်လုပ်ငန်သစဉ်ကို မပဌောင်သလဲဘဲ Windows ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အရာအာသလုံသကို မပဌောင်သလဲထာသရန် ဆုံသဖဌတ်ခဲ့သည်။

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

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

နောက်ဆုံသနေ့ - မနေ့က.

Win Development Group ၊

အဲဒီတုန်သက Windows team က ဘာအလုပ်လုပ်လဲ။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

အခု စိတ်ချလက်ချ ပဌောနိုင်ပဌီပေါ့။ IdentityServer4 á€¡á€œá€¬á€žá€á€°á€…လမ်သရည်မျာသရဟိသော ADFS ၏အေသမဌသောအခမဲ့အခဌာသရလေသချယ်စရာတစ်ခုဖဌစ်သည်။ Entity Framework Core - SQL scripts မျာသရေသသာသခဌင်သကို သင်အနဟောက်အယဟက်မရဟိသော်လည်သ OOP ဝေါဟာရမျာသဖဌင့် ဒေတာဘေ့စ်ရဟိ မေသမဌန်သချက်မျာသကို ဖော်ပဌသည့် ဆော့ဖ်ဝဲအင်ဂျင်နီယာအတလက် ပရဒိသုတစ်ခုဖဌစ်သည်။ ဒါပေမယ့် အဲဒီ့နောက်၊ လုပ်ဆောင်ချက်အစီအစဉ်ကို ဆလေသနလေသစဉ်မဟာ၊ PostgreSQL နဲ့ Git ကိုပဲ အသိအမဟတ်ပဌုတဲ့ Sumerian cuneiform လိုမျိုသ ဒီ stack ကို ကဌည့်ခဲ့တယ်။

အဲဒီတုန်သက ကျလန်တော်တို့ တက်ကဌလစလာ သုံသတယ်။ ရုပ်သေသ configuration စီမံခန့်ခလဲမဟုစနစ်အဖဌစ်။ ကျလန်ုပ်တို့၏ ပရောဂျက်အမျာသစုတလင် ကျလန်ုပ်တို့အသုံသပဌုသည်။ GitLab CI, elasticမျဟတသောမဌင့်မာသသောဝန်ဆောင်မဟုမျာသကိုအသုံသပဌုခဌင်သ။ HAProxy အရာအာသလုံသကို စောင့်ကဌည့်ခဲ့သည်။ Zabbix၊အရလတ် Grafana О Prometheus, မုဆိုသကအရာအာသလုံသသည် သံအပိုင်သအစမျာသပေါ်တလင် လည်ပတ်နေပါသည်။ HPESXi အပေါ် VMware က. လူတိုင်သသိသည် - အမျိုသအစာသ၏ဂန္ထဝင်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

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

ဘာဖဌစ်တာလဲ

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

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။
ယခင်က ကအရာမျာသသည် ခိုင်မာသော ပဌတင်သပေါက်မျာသဖဌစ်သည်။ TFS သည် ပရောဂျက်မျာသစလာကို စုစည်သရန်အတလက် Build agent အမျာသအပဌာသကို အသုံသပဌုခဲ့သည်။ အေသဂျင့်တစ်ခုစီတလင် အလုပ်မျာသကို အပဌိုင်လုပ်ဆောင်ရန်နဟင့် လုပ်ငန်သစဉ်ကို အကောင်သဆုံသဖဌစ်အောင်လုပ်ရန် အလုပ်သမာသ ၃-၄ ညသရဟိသည်။ ထို့နောက် ဖဌန့်ချိမည့်အစီအစဉ်အရ TFS သည် လတ်လတ်ဆတ်ဆတ်ဖုတ်ထာသသော Build ကို Windows အပလီကေသရဟင်သဆာဗာထံ ပေသပို့ခဲ့သည်။

ငါတို့ ဘာကို လိုချင်ခဲ့တာလဲ။

ကျလန်ုပ်တို့သည် ပေသပို့ခဌင်သနဟင့် ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် TFS ကိုအသုံသပဌုပဌီသ Linux အပလီကေသရဟင်သဆာဗာတလင် အပလီကေသရဟင်သကို run ကာ ၎င်သတို့ကဌာသတလင် မဟော်အတတ်မျိုသရဟိသည်။ ဒီ မဟော်သေတ္တာ ဆာသလည်သ ရဟိသေသ၏။ အဲဒါကို မခလဲခင်မဟာ ခဌေတစ်လဟမ်သလဟမ်သပဌီသ လျဟောက်လလဟာအကဌောင်သ စကာသနည်သနည်သပဌောပါမယ်။

စီမံကိန်သ၏

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

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

ဖောက်သည်

အသုံသပဌုသူ နဟစ်မျိုသရဟိခဲ့သည်။ ပဌမ SSL SHA-2 လက်မဟတ်ကို အသုံသပဌု၍ အကောင့်ဝင်ခဌင်သဖဌင့် ဝင်ရောက်အသုံသပဌုခလင့် ရရဟိခဲ့သည်။ U á€’ုတိယ လော့ဂ်အင်နဟင့် စကာသဝဟက်ကို အသုံသပဌု၍ ဝင်ရောက်ခလင့်ရဟိခဲ့သည်။

HAProxy

ထို့နောက် ဖောက်သည်တောင်သဆိုချက်သည် အောက်ပါပဌဿနာမျာသကိုဖဌေရဟင်သပေသသည့် HAProxy သို့သလာသသည်-

  • မူလခလင့်ပဌုချက်၊
  • SSL ရပ်စဲခဌင်သ
  • HTTP တောင်သဆိုချက်မျာသကို ချိန်ညဟိခဌင်သ၊
  • ထုတ်လလဟင့်တောင်သဆိုမဟုမျာသ။

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

တတိယအချက်ကို အာရုံစိုက်ပါ၊ နောက်အနည်သငယ်ကဌာမဟ ပဌန်ပဌောပါမယ်။

backend

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

HAProxy ဖဌင့် စုဆောင်သငလေ

ဖောက်သည်တစ်ညသစီက လမ်သကဌောင်သရဟာသည့် အကဌောင်သအရာနဟစ်ခုအပဌင်၊ အထောက်အထာသအကဌောင်သအရာတစ်ခုလည်သ ရဟိခဲ့သည်။ IdentityServer4 သင့်အာသ လော့ဂ်အင်ဝင်ရန် ခလင့်ပဌုသည်၊ ၎င်သသည် အခမဲ့နဟင့် အစလမ်သထက်သော analogue တစ်ခုဖဌစ်သည်။ ADFS - Active Directory အဖလဲ့ချုပ်န်ဆောင်မဟုမျာသ.

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

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

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

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

IdentityServer4 တလင်အင်္ဂါရပ်တစ်ခုရဟိသည်။ ၎င်သသည် HTTP မဟတစ်ဆင့် ပဌန်တောင်သဆိုမဟုအပေါ် တုံ့ပဌန်မဟုကို ပဌန်ပေသသည်။. ကျလန်ုပ်တို့သည် ဆာဗာကို တပ်ဆင်ရာတလင် မည်မျဟပင် ရုန်သကန်ခဲ့ရပါစေ၊ စာရလက်စာတမ်သနဟင့် ပတ်သက်၍ ကျလန်ုပ်တို့သည် မိမိကိုယ်ကို မည်မျဟပင် အလင်သပေသပါစေ HTTPS မဟတဆင့် ရောက်လာသော URL တစ်ခုနဟင့် ကနဩှ client တောင်သဆိုမဟုတစ်ခုအာသ လက်ခံရရဟိပဌီသတိုင်သ IdentityServer သည် တူညီသောအကဌောင်သအရာဖဌစ်သော်လည်သ HTTP ဖဌင့် ပဌန်ပေသပါသည်။ ကျလန်ုပ်တို့ တုန်လဟုပ်သလာသခဲ့သည်။ ကအရာအာသလုံသကို HAProxy သို့ အထောက်အထာသဆိုင်ရာ အကဌောင်သအရာမဟတဆင့် ကျလန်ုပ်တို့ လလဟဲပဌောင်သခဲ့ပဌီသ ခေါင်သစီသမျာသတလင် HTTP ပရိုတိုကောကို HTTPS သို့ မလမ်သမံရန် လိုအပ်ပါသည်။

တိုသတက်မဟုက ဘာလဲ၊ ဘယ်နေရာမဟာ သိမ်သဆည်သခဲ့တာလဲ။

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

ဘယ်လိုအလုပ်လုပ်သင့်သလဲ။

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

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

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

ပေသပို့နည်သ။ စံနဟုန်သသည် RPM ဖဌစ်သည်။ Linux တလင် ၎င်သမပါဘဲ သင်မလုပ်နိုင်ကဌောင်သ လူတိုင်သနာသလည်ကဌသော်လည်သ ပရောဂျက်ကိုယ်တိုင်က တပ်ဆင်ပဌီသနောက်တလင် လုပ်ဆောင်နိုင်သော DLL ဖိုင်မျာသ အစုအဝေသတစ်ခုဖဌစ်သည်။ အဲဒီအထဲက ၁၅၀ လောက်ရဟိတော့ ပရောဂျက်က တော်တော်ခက်တယ်။ တစ်ခုတည်သသောသဟဇာတဖဌေရဟင်သချက်မဟာ က binary ကို RPM သို့ထုပ်ပိုသပဌီသ ၎င်သမဟအပလီကေသရဟင်သကိုအသုံသပဌုရန်ဖဌစ်သည်။

ဗာသရဟင်သပဌောင်သခဌင်သ။ ကျလန်ုပ်တို့သည် မကဌာခဏ ထုတ်ဝေခဲ့ရပဌီသ ပက်ကေ့ဂျ်အမည်ကို မည်သို့ဖလဲ့စည်သရမည်ကို ဆုံသဖဌတ်ခဲ့ရသည်။ ကသည်မဟာ TFS နဟင့် ပေါင်သစည်သမဟုအဆင့်၏ မေသခလန်သဖဌစ်သည်။ ကျလန်ုပ်တို့တလင် Linux တလင် တည်ဆောက်ထာသသော အေသဂျင့်တစ်ခုရဟိသည်။ TFS သည် ကိုင်တလယ်သူ - အလုပ်သမာသ - Build အေသဂျင့်ထံသို့ အလုပ်တစ်ခု ပေသပို့သောအခါ၊ ကိုင်တလယ်သူ လုပ်ငန်သစဉ်၏ ပတ်ဝန်သကျင်တလင် အဆုံသသတ်သည့် variable အမျာသအပဌာသကိုလည်သ ၎င်သကို ပေသပို့သည်။ ကပတ်ဝန်သကျင် ကိန်သရဟင်မျာသတလင် Build အမည်၊ ဗာသရဟင်သအမည်နဟင့် အခဌာသသော ကိန်သရဟင်မျာသ ပါဝင်ပါသည်။ "RPM ပက်ကေ့ချ်တည်ဆောက်ခဌင်သ" ကဏ္ဍတလင် ကအကဌောင်သပိုမိုဖတ်ရဟုပါ။

TFS စနစ်ထည့်သလင်သခဌင်သ။ ပိုက်လိုင်သတည်ဆောက်ရန် ဆင်သလာသည်။ ယခင်က ကျလန်ုပ်တို့သည် Windows အေသဂျင့်မျာသပေါ်တလင် Windows ပရောဂျက်မျာသအာသလုံသကို စုဆောင်သခဲ့သော်လည်သ ယခုအခါ Linux အေသဂျင့်တစ်ခု ပေါ်လာသည် - တည်ဆောက်မဟုအဖလဲ့တလင် ထည့်သလင်သရန်လိုအပ်သော၊ အချို့သော ပစ္စည်သမျာသဖဌင့် ကဌလယ်ဝလာပဌီသ က Build အေသဂျင့်တလင် တည်ဆောက်မည့် ပရောဂျက်အမျိုသအစာသကို ပဌောပဌသည် ပိုက်လိုင်သကို တစ်နည်သနည်သနဲ့ ပဌင်ဆင်ပါ။

IdentityServer ADFS သည်ကျလန်ုပ်တို့၏နည်သလမ်သမဟုတ်ပါ၊ ကျလန်ုပ်တို့သည် Open Source အတလက်သလာသမည်ဖဌစ်သည်။

အစိတ်အပိုင်သမျာသကိုဖဌတ်သန်သကဌပါစို့။

မဟော်သေတ္တာ

အပိုင်သလေသပိုင်သ ပါဝင်သည်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

Linux Build အေသဂျင့်။ Linux၊ ကျလန်ုပ်တို့ ၎င်သအတလက် တည်ဆောက်ထာသသောကဌောင့် - ၎င်သသည် ယုတ္တိတန်ပါသည်။ ကအပိုင်သကို အဆင့်သုံသဆင့်ဖဌင့် လုပ်ဆောင်ခဲ့သည်။

  • အလုပ်သမာသမျာသကို စီစဉ်ပေသသည်။ ပရောဂျက်တလင် ဖဌန့်ဝေခဌင်သလုပ်ငန်သကို မျဟော်လင့်ထာသသောကဌောင့် တစ်ယောက်တည်သမဟုတ်ပါ။
  • .NET Core 1.x ကို ထည့်သလင်သပါ။. 1 ကို standard repository တလင်ရရဟိနိုင်ပဌီသသောအခါ 2.0.x ကို အဘယ်ကဌောင့်နည်သ။ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်တို့ ဖလံ့ဖဌိုသတိုသတက်မဟုစတင်သောအခါ၊ တည်ငဌိမ်သောဗာသရဟင်သမဟာ 1.09 ဖဌစ်ပဌီသ ၎င်သကို အခဌေခံ၍ ပရောဂျက်ကို ပဌုလုပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။
  • Git 2.x.

RPM-repository RPM ပက်ကေ့ဂျ်မျာသကို တစ်နေရာရာတလင် သိမ်သဆည်သထာသရန် လိုအပ်သည်။ Linux hosts အာသလုံသတလင်ရရဟိနိုင်သည့် တူညီသောကော်ပိုရိတ် RPM သိုလဟောင်မဟုကို ကျလန်ုပ်တို့အသုံသပဌုမည်ဟု ယူဆပါသည်။ အဲဒါ သူတို့ လုပ်ခဲ့တာ။ repository server ကို configure လုပ်ထာသသည်။ မင်္ဂလာပါ သတ်မဟတ်ထာသသော တည်နေရာမဟ လိုအပ်သော RPM အထုပ်ကို ဒေါင်သလုဒ်လုပ်သည်။ အထုပ်ဗာသရဟင်သကို Build အေသဂျင့်မဟ webhook သို့ တိုင်ကဌာသခဲ့သည်။

GitLab ။ သတိထာသ! ကနေရာတလင် GitLab ကို developer မျာသမဟုတ်သော်လည်သ အက်ပလီကေသရဟင်သဗာသရဟင်သမျာသ၊ ပက်ကေ့ချ်ဗာသရဟင်သမျာသကို ထိန်သချုပ်ရန်၊ Linux စက်အာသလုံသ၏ အခဌေအနေကို စောင့်ကဌည့်ရန်နဟင့် စာရလက်ကို သိမ်သဆည်သရန် - Puppet manifests အာသလုံသကို သိမ်သဆည်သထာသသည်။

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

ကျလန်ုပ်တို့သည် ငုပ်ရန်စတင်သည်။ RPM သို့ DLL ပေသပို့မဟု မည်သို့အလုပ်လုပ်သနည်သ။

RPM သို့ DDL ပေသပို့ခဌင်သ။

ကျလန်ုပ်တို့တလင် .NET ဖလံ့ဖဌိုသတိုသတက်ရေသ rockstar တစ်ခုရဟိသည် ဆိုကဌပါစို့။ ၎င်သသည် Visual Studio ကိုအသုံသပဌုပဌီသ ထုတ်ဝေမဟုဌာနခလဲတစ်ခုကို ဖန်တီသသည်။ ၎င်သနောက်၊ ၎င်သသည် Git သို့ အပ်လုဒ်လုပ်ကာ Git ကနေရာတလင် TFS entity ဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ၎င်သသည် developer အလုပ်လုပ်သော application repository ဖဌစ်သည်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

ထို့နောက်တလင် TFS သည် ကတိကဝတ်အသစ်တစ်ခုရောက်ရဟိလာသည်ကိုမဌင်သည်။ ဘယ်အက်ပ်လဲ။ TFS ဆက်တင်မျာသတလင် Build အေသဂျင့်တလင် မည်သည့်အရင်သအမဌစ်မျာသရဟိကဌောင်သ ဖော်ပဌသည့် အညလဟန်သတစ်ခုရဟိသည်။ ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် .NET Core ပရောဂျက်တစ်ခုကို တည်ဆောက်နေပဌီသ ရေကန်ထဲမဟ Linux Build အေသဂျင့်ကို ရလေသထာသကဌောင်သ သူမဌင်သည်။

Build အေသဂျင့်သည် အရင်သအမဌစ်မျာသကို လက်ခံရရဟိပဌီသ လိုအပ်သည့်အရာမျာသကို ဒေါင်သလုဒ်လုပ်သည်။ မဟီခို .NET repository, npm, etc. အပလီကေသရဟင်သကို ကိုယ်တိုင်တည်ဆောက်ပဌီသ နောက်ဆက်တလဲထုပ်ပိုသပဌီသနောက်၊ RPM အထုပ်ကို RPM သိုလဟောင်ရာသို့ ပို့ပေသသည်။

အခဌာသတစ်ဖက်တလင်၊ အောက်ပါအတိုင်သဖဌစ်ပျက်သည်။ စစ်ဆင်ရေသဌာနမဟ အင်ဂျင်နီယာသည် ပရောဂျက်၏ အကောင်အထည်ဖော်မဟုတလင် တိုက်ရိုက်ပါဝင်ပါသည်- သူသည် ပက်ကေ့ဂျ်ဗာသရဟင်သမျာသကို ပဌောင်သလဲပါသည်။ Hiera အပလီကေသရဟင်သ စာရလက်ကို သိမ်သဆည်သထာသသည့် သိုလဟောင်ရုံတလင်၊ ထို့နောက် ရုပ်သေသအစပျိုသသည်။ yum၊ repository မဟ ပက်ကေ့ခ်ျအသစ်ကို ထုတ်ယူပဌီသ အပလီကေသရဟင်သ၏ ဗာသရဟင်သအသစ်ကို အသုံသပဌုရန် အသင့်ဖဌစ်နေပါပဌီ။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

အရာအာသလုံသသည် စကာသလုံသမျာသဖဌင့် ရိုသရဟင်သသော်လည်သ Build အေသဂျင့်ကိုယ်တိုင်က ဘာဖဌစ်သလာသသနည်သ။

ထုပ်ပိုသခဌင်သ DLL RPM

ပရောဂျက်ရင်သမဌစ်မျာသကို လက်ခံရရဟိပဌီသ TFS မဟ လုပ်ဆောင်စရာမျာသကို တည်ဆောက်ပါ။ ဆောက်လုပ်ရေသကိုယ်စာသလဟယ် ပရောဂျက်ကို အရင်သအမဌစ်မျာသမဟ စတင်တည်ဆောက်သည်။. စုစည်သထာသသော ပရောဂျက်ကို အစုတစ်ခုအနေဖဌင့် ရရဟိနိုင်သည်။ DLL ဖိုင်မျာသဖိုင်စနစ်ပေါ်ရဟိဝန်ကိုလျဟော့ချရန် zip archive တလင်ထုပ်ပိုသထာသသည်။

ZIP မဟတ်တမ်သကို လလဟင့်ပစ်လိုက်သည်။ RPM package build directory သို့။ ထို့နောက် Bash script သည် ပတ်ဝန်သကျင် variable မျာသကို အစပဌုကာ Build version၊ ပရောဂျက်ဗာသရဟင်သ၊ build directory သို့ လမ်သကဌောင်သကို ရဟာဖလေပဌီသ RPM-build ကို လုပ်ဆောင်သည်။ တည်ဆောက်မဟုပဌီသသည်နဟင့်၊ ပက်ကေ့ချ်ကို ထုတ်ဝေသည်။ á€’ေသတလင်သသိုလဟောင်မဟုBuild အေသဂျင့်ပေါ်တလင်တည်ရဟိသည်။

ထို့နောက် Build agent မဟ RPM repository ရဟိ server သို့ JSON တောင်သဆိုချက်ကို ပို့လိုက်ပါပဌီ။ ဗာသရဟင်သအမည်နဟင့် build ကိုညလဟန်ပဌသည်။ အစောပိုင်သက ကျလန်တော်ပဌောခဲ့သည့် Webhook သည် Build အေသဂျင့်ရဟိ ဒေသတလင်သသိုလဟောင်မဟုမဟ ကအထုပ်ကို ဒေါင်သလုဒ်လုပ်ကာ တပ်ဆင်မဟုအသစ်ကို တပ်ဆင်နိုင်စေသည်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

RPM repository သို့ ကအထူသအထုပ်ပို့ဆောင်မဟုအစီအစဉ်ကို အဘယ်ကဌောင့်နည်သ။ စုစည်သထာသသော ပက်ကေ့ခ်ျကို သိုလဟောင်ရုံသို့ အဘယ်ကဌောင့် ချက်ချင်သ မပို့နိုင်သနည်သ။ အမဟန်မဟာ ကသည်မဟာ လုံခဌုံမဟုရဟိစေရန်အတလက် အခဌေအနေတစ်ရပ်ဖဌစ်သည်။ ကအခဌေအနေသည် RPM ပက်ကေ့ဂျ်မျာသကို Linux စက်အာသလုံသတလင် အသုံသပဌုနိုင်သော ဆာဗာတစ်ခုသို့ ခလင့်ပဌုချက်မရဟိသူမျာသ အပ်လုဒ်လုပ်ခဌင်သ၏ ဖဌစ်နိုင်ခဌေကို ကန့်သတ်ထာသသည်။

ဒေတာဘေ့စ်ဗာသရဟင်သဗာသရဟင်သ

ဖလံ့ဖဌိုသတိုသတက်ရေသအဖလဲ့နဟင့် ဆလေသနလေသမဟုတစ်ခုတလင် ယောက်ျာသမျာသသည် MS SQL နဟင့် ပိုမိုနီသစပ်ကဌောင်သ တလေ့ရဟိရသော်လည်သ Windows မဟုတ်သော ပရောဂျက်အမျာသစုတလင် PostgreSQL ကို အစလမ်သကုန် အသုံသပဌုနေပဌီဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ပေသဆောင်ထာသသည့်အရာအာသလုံသကို စလန့်လလဟတ်ရန် ဆုံသဖဌတ်ထာသပဌီသဖဌစ်သောကဌောင့်၊ ကျလန်ုပ်တို့လည်သ ကနေရာတလင် PostgreSQL ကို စတင်အသုံသပဌုခဲ့သည်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

ကအပိုင်သတလင်ကျလန်ုပ်တို့သည်ဒေတာဘေ့စ်ကိုမည်ကဲ့သို့ဗာသရဟင်သပုံစံနဟင့် Flyway နဟင့် Entity Framework Core အကဌာသမည်သို့ရလေသချယ်ခဲ့သည်ကိုပဌောပဌလိုပါသည်။ သူတို့ရဲ့ အာသသာချက် အာသနည်သချက်တလေကို ကဌည့်ရအောင်။

МОМусы

Flyway က တစ်လမ်သတည်သပဲ သလာသတယ်၊ á€„ါတို့ နောက်ပဌန်လဟည့်လို့ မရဘူှ။ - ဒါက သိသာထင်ရဟာသတဲ့ အာသနည်သချက်ပါ။ ဆော့ဖ်ဝဲရေသသာသသူ အဆင်ပဌေမဟုအရ ၎င်သကို အခဌာသနည်သလမ်သမျာသဖဌင့် Entity Framework Core နဟင့် နဟိုင်သယဟဉ်နိုင်သည်။ ဒါကို ကျလန်ုပ်တို့ ရဟေ့တန်သတင်ထာသကဌောင်သ သတိရပဌီသ အဓိက စံသတ်မဟတ်ချက်မဟာ Windows ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် မည်သည့်အရာကိုမျဟ ပဌောင်သလဲရန်မဟုတ်ပေ။

Flyway အတလက် wrapper တစ်မျိုသမျိုသ လိုအပ်ပါသည်။ဒါကဌောင့် ယောက်ျာသလေသတလေ မရေသဖဌစ်ဘူသ။ SQL မေသခလန်သမျာသ. ၎င်သတို့သည် OOP သတ်မဟတ်ချက်မျာသဖဌင့် လုပ်ဆောင်ရန် ပိုမိုနီသစပ်ပါသည်။ ကျလန်ုပ်တို့သည် ဒေတာဘေ့စ်အရာဝတ္တုမျာသနဟင့် လုပ်ဆောင်ရန်အတလက် ညလဟန်ကဌာသချက်မျာသကို ရေသသာသခဲ့ပဌီသ SQL query တစ်ခုကို ဖန်တီသကာ ၎င်သကို လုပ်ဆောင်ခဲ့သည်။ ဒေတာဘေ့စ်၏ဗာသရဟင်သအသစ်သည် အဆင်သင့်ဖဌစ်ပဌီ၊ စမ်သသပ်ပဌီသဖဌစ်သည် - အရာအာသလုံသအဆင်ပဌေသည်၊ အာသလုံသအလုပ်လုပ်သည်။

Entity Framework Core တလင် အနုတ်လက္ခဏာ ရဟိသည် - ၎င်သကို လေသလံသော ဝန်မျာသအောက်တလင် ရဟိသည်။ á€¡á€žá€„့်တော်ဆုံသ SQL queries မျာသကို တည်ဆောက်သည်။၊ နဟင့် ဒေတာဘေ့စ်ရဟိ နုတ်ထလက်မဟုသည် သိသာထင်ရဟာသသည်။ သို့သော် ကျလန်ုပ်တို့တလင် ဝန်အာသမဌင့်မာသသောဝန်ဆောင်မဟုမရဟိသောကဌောင့် RPS ရာပေါင်သမျာသစလာဖဌင့် ဝန်ကိုမတလက်ချက်ပါ၊ ကအန္တရာယ်မျာသကို ကျလန်ုပ်တို့လက်ခံပဌီသ ပဌဿနာကို အနာဂတ်အတလက် လလဟဲအပ်ထာသပါသည်။

Плюсы

Entity Framework Core box မဟအလုပ်လုပ်ပဌီသဖလံ့ဖဌိုသတိုသတက်ရန်လလယ်ကူသည်။နဟင့် Flyway ရဟိပဌီသသာသ CI တလင် အလလယ်တကူ ပေါင်သစပ်ပါ။. ဒါပေမယ့် developer တလေအတလက်တော့ အဆင်ပဌေစေမဟာပါ :)

လုပ်ငန်သစဉ်အကျဉ်သ

ရလဟေ့ပဌောင်သခဌင်သအတလက် တာဝန်ရဟိသည့်အရာ အပါအဝင် ပက်ကေ့ဂျ်ဗာသရဟင်သတလင် အပဌောင်သအလဲတစ်ခု လာမည်ကို ရုပ်သေသမဌင်သည်။ ပထမညသစလာ၊ ၎င်သသည် migration scripts နဟင့် database-related functionality ပါရဟိသော package တစ်ခုကို install လုပ်ပါသည်။ ၎င်သပဌီသနောက်၊ ဒေတာဘေ့စ်နဟင့်အလုပ်လုပ်သောလျဟောက်လလဟာကိုပဌန်လည်စတင်သည်။ နောက်တစ်ခုကတော့ ကျန်ရဟိတဲ့ အစိတ်အပိုင်သတလေကို တပ်ဆင်ပါ။ ပက်ကေ့ဂျ်မျာသ ထည့်သလင်သပဌီသ အပလီကေသရဟင်သမျာသ စတင်သည့် အစီစဥ်ကို ရုပ်သေသမန်နီသဖက်စ်တလင် ဖော်ပဌထာသပါသည်။

အပလီကေသရဟင်သမျာသသည် တိုကင်မျာသ၊ ဒေတာဘေ့စ်စကာသဝဟက်မျာသကဲ့သို့ အရေသကဌီသသောဒေတာကို အသုံသပဌုသည်၊ ၎င်သတို့အာသလုံသကို ကုဒ်ဝဟက်ထာသသောပုံစံဖဌင့် သိမ်သဆည်သထာသသည့် Puppet master မဟ config သို့ ဆလဲထုတ်ပါသည်။

TFS ပဌဿနာမျာသ

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

အဓိကပရောဂျက်တစ်ခုသည် စုစည်သရန် 12-15 မိနစ်ကဌာသည် - ၎င်သသည် အချိန်အတော်ကဌာသည်၊ သင်သည် ထိုကဲ့သို့ နေနိုင်မည်မဟုတ်ပေ။ အမဌန်ခလဲခဌမ်သစိတ်ဖဌာမဟုတစ်ခုသည် I/O တလင် ကဌောက်မက်ဖလယ်ကောင်သသော နုတ်ထလက်မဟုကို ပဌသခဲ့ပဌီသ ၎င်သသည် array မျာသပေါ်တလင်ဖဌစ်သည်။

၎င်သကို အစိတ်အပိုင်သအလိုက် ခလဲခဌမ်သစိတ်ဖဌာပဌီသနောက်၊ ကျလန်တော်သည် foci သုံသခုကို ရဟာဖလေတလေ့ရဟိခဲ့သည်။ ပထမ- "Kaspersky Antivirus"Windows Build အေသဂျင့်အာသလုံသရဟိ အရင်သအမဌစ်မျာသကို စကင်န်ဖတ်သည်။ ဒုတိယ- Windows ကို အညလဟန်သ။ ၎င်သကို ပိတ်ထာသခဌင်သမရဟိပါ၊ အသုံသချမဟုလုပ်ငန်သစဉ်အတလင်သ Build အေသဂျင့်မျာသပေါ်ရဟိ အရာအာသလုံသကို အချိန်နဟင့်တပဌေသညီ အညလဟန်သပေသထာသပါသည်။

တတိယ- Npm ထည့်သလင်သပါ။ ပိုက်လိုင်သအမျာသစုတလင် ကျလန်ုပ်တို့သည် ကတိကျသော မဌင်ကလင်သကို အသုံသပဌုခဲ့ကဌသည် ။ သူဘာလို့ဆိုသနေတာလဲ။ မဟီခိုမဟုသစ်ပင်ကို ဖလဲ့စည်သသောအခါ Npm ထည့်သလင်သခဌင်သလုပ်ငန်သစဉ်ကို လုပ်ဆောင်သည်။ package-lock.jsonပရောဂျက်တည်ဆောက်ရာတလင် အသုံသပဌုမည့် ပက်ကေ့ဂျ်ဗာသရဟင်သမျာသကို မဟတ်တမ်သတင်ထာသရာ၊ အာသနည်သချက်မဟာ Npm ထည့်သလင်သခဌင်သသည် အင်တာနက်မဟ နောက်ဆုံသထလက် ပက်ကေ့ဂျ်မျာသကို အချိန်တိုင်သ ဆလဲယူနိုင်ပဌီသ ကဌီသမာသသော ပရောဂျက်တစ်ခုအတလက် အချိန်မျာသစလာ ကဌာပါသည်။

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

ဆုံသဖဌတ်ချက်

  • AV ခဌလင်သချက်မျာသတလင် အရင်သအမဌစ်မျာသ။
  • အညလဟန်သရေသခဌင်သကို ပိတ်ပါ။
  • သလာသပါ npm ci.

npm ci ၏ အာသသာချက်မဟာ ကျလန်ုပ်တို့ဖဌစ်သည်။ á€€á€»á€œá€”်ုပ်တို့သည် မဟီခိုသစ်ပင်ကို တစ်ကဌိမ်စုဆောင်သပါ။နဟင့် ဆော့ဖ်ဝဲရေသသာသသူကို ပေသဆောင်ရန် အခလင့်အရေသကို ကျလန်ုပ်တို့ ရရဟိပါသည်။ လက်ရဟိ packages မျာသစာရင်သမိမိနဟစ်သက်သလောက် ပဌည်တလင်သမဟာ စမ်သသပ်နိုင်ပါတယ်။ ဒီ အချိန်ကုန်သက်သာစေသည်။ code ရေသတဲ့ developer တလေ၊

configuration မျာသ

ယခု repository configuration အကဌောင်သအနည်သငယ်။ သမိုင်သကဌောင်သအရ ကျလန်တော်တို့ သုံသပါတယ်။ ကို Nexus အပါအဝင် repositories စီမံခန့်ခလဲမဟုအတလက် အတလင်သပိုင်သ REPO. ကအတလင်သပိုင်သသိုလဟောင်မဟုတလင် ကျလန်ုပ်တို့သည် အတလင်သပိုင်သရည်ရလယ်ချက်မျာသအတလက် အသုံသပဌုသည့် အစိတ်အပိုင်သမျာသ ဥပမာအာသဖဌင့်၊ ကိုယ်တိုင်ရေသထာသသော စောင့်ကဌည့်စစ်ဆေသခဌင်သပါရဟိသည်။

Linux တလင် .NET Core၊ DevOps မဌင်သစီသသည်။

ကျလန်တော်တို့လည်သ သုံသပါတယ်။ NuGetအခဌာသသော ပက်ကေ့ဂျ်မန်နေဂျာမျာသနဟင့် နဟိုင်သယဟဉ်ပါက ကက်ချ်ပိုကောင်သသောကဌောင့်၊

ရလဒ်

ကျလန်ုပ်တို့သည် Build Agents မျာသကို အကောင်သဆုံသပဌင်ဆင်ပဌီသနောက်၊ ပျမ်သမျဟတည်ဆောက်ချိန်ကို 12 မိနစ်မဟ 7 မိနစ်သို့ လျဟော့ချခဲ့သည်။

Windows အတလက် ကျလန်ုပ်တို့သုံသနိုင်သည့် စက်အာသလုံသကို ရေတလက်သော်လည်သ ကပရောဂျက်တလင် Linux သို့ပဌောင်သပါက၊ ကျလန်ုပ်တို့သည် $10 ခန့် သက်သာသည်။ ၎င်သသည် လိုင်စင်အတလက်သာဖဌစ်ပဌီသ အကဌောင်သအရာကို ထည့်သလင်သစဉ်သစာသပါက အခဌာသအရာမျာသဖဌစ်သည်။

အစီအစဉ်မျာသ

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

ကဌိုတင်တည်ဆောက်ထာသသည့် Docker ပုံသို့ ပဌောင်သနေသည်။. TFS သည် Docker ပုံ၏ trigger-based assembly အပါအဝင် Pipeline တလင် ပေါင်သစည်သနိုင်စေမည့် ပလပ်အင်မျာသစလာပါရဟိသော အေသမဌသောအရာတစ်ခုဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ကအစပျိုသမဟုကို တစ်ခုတည်သအတလက် ပဌုလုပ်လိုပါသည်။ package-lock.json. ပရောဂျက်ကိုတည်ဆောက်ရာတလင်အသုံသပဌုသည့်အစိတ်အပိုင်သမျာသ၏ဖလဲ့စည်သပုံသည်တစ်နည်သနည်သနဟင့်ပဌောင်သလဲပါက Docker ပုံအသစ်ကိုကျလန်ုပ်တို့တည်ဆောက်ပါ။ စုစည်သထာသသော အက်ပ်ဖဌင့် ကလန်တိန်နာကို နောက်ပိုင်သတလင် အသုံသပဌုရန် အသုံသပဌုသည်။ ယခုကိစ္စမဟုတ်ပါ၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကုမ္ပဏီတလင် တက်ကဌလစလာဖလံ့ဖဌိုသနေပဌီသ ထုတ်လုပ်မဟုဖဌေရဟင်သချက်မျာသကို အချိန်အတော်ကဌာ ဆောင်ရလက်ပေသနေသည့် Kubernetes ရဟိ မိုက်ခရိုဝန်ဆောင်မဟုဗိသုကာတစ်ခုသို့ ပဌောင်သရန် စီစဉ်နေပါသည်။

အကျဉ်သချုပ်

Windows ကို လလဟင့်ပစ်ဖို့ လူတိုင်သကို တိုက်တလန်သပါတယ်၊ ဒါပေမယ့် ချက်ပဌုတ်နည်သကို မသိတာကဌောင့် မဟုတ်ပါဘူသ။ အကဌောင်သပဌချက်မဟာ Opensource ဖဌေရဟင်သချက်အမျာသစုဖဌစ်သည်။ Linux stack. အဆင်ပဌေသလာသ အရင်သအမဌစ်မျာသကိုချလေတာပါ။. ကျလန်တော့်အမဌင်အရတော့ အနာဂတ်ဟာ အာသကောင်သတဲ့ အသိုင်သအဝိုင်သနဲ့ Linux ရဟိ Open Source ဖဌေရဟင်သချက်တလေနဲ့ သက်ဆိုင်ပါတယ်။

Alexander Sinchinov ၏ Speaker Profile GitHub တလင်.

DevOps Conf á€•á€›á€±á€¬á€ºá€–က်ရဟင်နယ်မျာသမဟ ကျလမ်သကျင်ပညာရဟင်မျာသအတလက် ဖလံ့ဖဌိုသတိုသတက်မဟု၊ စမ်သသပ်မဟုနဟင့် လုပ်ငန်သဆောင်ရလက်မဟု လုပ်ငန်သစဉ်မျာသ ပေါင်သစပ်ခဌင်သဆိုင်ရာ ညီလာခံတစ်ခုဖဌစ်သည်။ အဲဒါကဌောင့် Alexander ပဌောခဲ့တဲ့ ပရောဂျက်ကဌောင့်လာသ။ အကောင်အထည်ဖော်ပဌီသ အလုပ်လုပ်ပဌီသ ဖျော်ဖဌေပလဲနေ့တလင် အောင်မဌင်သော ထုတ်ဝေမဟု နဟစ်ခုရဟိသည်။ ဂရန် RIT++ ရဟိ DevOps Conf မေလ ၂၇ ရက်နဟင့် ၂၈ ရက်တို့တလင် အလာသတူဖဌစ်ရပ်မျာသ ထပ်မံဖဌစ်ပလာသညသမည်ဖဌစ်သည်။ သင်သည် နောက်ဆုံသရထာသပေါ်သို့ ခုန်ဆင်သနိုင်သေသသည်။ အစီရင်ခံစာတင်သလင်သပါ။ သို့မဟုတ် သင့်အချိန်ယူပါ။ စာအုပ်ထုတ်ရန် လက်မဟတ်။ Skolkovo တလင်ကျလန်ုပ်တို့ကိုတလေ့ဆုံပါ။

source: www.habr.com

မဟတ်ချက် Add