မိုဘိုင်သ CICD အတလေ့အကဌုံ- မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသစလာအတလက် အမဌန်လမ်သစံတစ်ခု

မိုဘိုင်သ CICD အတလေ့အကဌုံ- မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသစလာအတလက် အမဌန်လမ်သစံတစ်ခု
Fastlane ကို အသုံသပဌု၍ မိုဘိုင်သအက်ပ်မျာသအတလက် စဉ်ဆက်မပဌတ် ပေါင်သစပ်ခဌင်သနဟင့် ပေသပို့ခဌင်သအကဌောင်သ ပဌောပဌလိုပါသည်။ ကျလန်ုပ်တို့သည် မိုဘိုင်သအပလီကေသရဟင်သအာသလုံသတလင် CI/CD ကို မည်သို့အကောင်အထည်ဖော်ပုံ၊ ကျလန်ုပ်တို့ရောက်ရဟိခဲ့ပုံနဟင့် အဆုံသတလင် ဘာဖဌစ်သလာသသနည်သ။

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

ဆောင်သပါသတလင် အပိုင်သနဟစ်ပိုင်သ ပါဝင်သည်-

  • ကုမ္ပဏီတလင် မိုဘိုင်သ CI/CD ပေါ်ပေါက်လာခဌင်သ၏ နောက်ခံ
  • N-အပလီကေသရဟင်သမျာသအတလက် CI/CD ထုတ်ပေသရန်အတလက် နည်သပညာဆိုင်ရာဖဌေရဟင်သချက်

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

ဒါက သမိုင်သမဟာ ဖဌစ်ပျက်ခဲ့တာ

တစ်နဟစ် 2015

ကျလန်ုပ်တို့သည် မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသကို စတင်တီထလင်ခဲ့ပဌီသ၊ ထို့နောက် စဉ်ဆက်မပဌတ်ပေါင်သစပ်မဟု၊ DevOps နဟင့် အခဌာသခေတ်ဆန်သည့်အရာမျာသအကဌောင်သ ဘာမဟမသိခဲ့ပါ။ အပလီကေသရဟင်သအပ်ဒိတ်တစ်ခုစီတိုင်သကို ဆော့ဖ်ဝဲရေသသာသသူကိုယ်တိုင်က ၎င်သ၏စက်မဟ ထုတ်လလဟတ်သည်။ Andriod အတလက်ဆိုပါက၊ စုစည်သထာသ၊ လက်မဟတ်ထိုသပါ။ .apk ၎င်သကို Google Developer Console တလင် အပ်လုဒ်လုပ်ပဌီသနောက် iOS အတလက် Xcode မဟတစ်ဆင့် ဖဌန့်ချီရေသကိရိယာသည် ကျလန်ုပ်တို့အာသ ကောင်သမလန်သောညနေခင်သမျာသနဟင့်အတူ ထာသခဲ့သည် - မော်ကလန်သတိုက်ကို ဒေါင်သလုဒ်လုပ်ရန် ကဌိုသပမ်သမဟုမျာသသည် မကဌာခဏဆိုသလို အမဟာသအယလင်သမျာသဖဌင့် ပဌီသဆုံသသလာသခဲ့ပဌီသ ထပ်မံကဌိုသစာသခဲ့ရသည်။ အဆင့်အမဌင့်ဆုံသ developer သည် တစ်လလျဟင် ကုဒ်ကို အကဌိမ်ပေါင်သမျာသစလာ မရေသဘဲ အပလီကေသရဟင်သကို ထုတ်ပေသသည်။

တစ်နဟစ် 2016

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

$ xcodebuild clean archive -archivePath build/MyApp 
    -scheme MyApp

$ xcodebuild -exportArchive 
                        -exportFormat ipa 
                        -archivePath "build/MyApp.xcarchive" 
                        -exportPath "build/MyApp.ipa" 
                        -exportProvisioningProfile "ProvisioningProfileName"

$ cd /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/

$ ./altool —upload-app 
-f {abs path to your project}/build/{release scheme}.ipa  
-u "[email protected]" 
-p "PASS_APPLE_ID"

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

တစ်နဟစ် 2017

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

သို့သော် fastlane core တလင်ပါဝင်သောအဓိကအသုံသအဆောင်မျာသ gym О pilotအဲဒါကို စတင်နိုင်ပါပဌီ။

ကျလန်ုပ်တို့၏ ဇာတ်ညလဟန်သမျာသကို အနည်သငယ် မဌဟင့်တင်ထာသပါသည်။

$ fastlane gym  —-workspace "Example.xcworkspace" 
                --scheme "AppName" 
                —-buildlog_path "/tmp" 
                -—clean

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

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

ကံမကောင်သစလာပဲ၊ တပ်ဆင်မဟုအမဌန်နဟုန်သတိုင်သတာမဟုမျာသ xcodebuild О gym ၎င်သကို ကျလန်ုပ်တို့ မလုပ်ခဲ့ပါ၊ သို့သော် 30% အရဟိန်မဌဟင့်ရန် စာရလက်စာတမ်သကို ယုံကဌည်ပါမည်။

လျဟောက်လလဟာအာသလုံသအတလက် တစ်ခုတည်သသော လုပ်ငန်သစဉ်

2018 ခုနဟစ်နဟင့် လက်ရဟိ

2018 ခုနဟစ်တလင်၊ အပလီကေသရဟင်သမျာသတည်ဆောက်ခဌင်သနဟင့် ဖဌန့်ချိခဌင်သလုပ်ငန်သစဉ်သည် Jenkins သို့ လုံသဝပဌောင်သသလာသခဲ့ပဌီသ developer မျာသသည် ၎င်သတို့၏စက်မျာသမဟ ထုတ်လလဟတ်ခဌင်သကို ရပ်တန့်ခဲ့ပဌီသ ဖဌန့်ချိရေသအဖလဲ့ကသာ ထုတ်ပဌန်ပိုင်ခလင့်ရဟိသည်။

ကျလန်ုပ်တို့သည် စမ်သသပ်မဟုမျာသနဟင့် တည်ငဌိမ်မဟုဆိုင်ရာ ခလဲခဌမ်သစိတ်ဖဌာမဟုကို မဌဟင့်တင်လိုပဌီသဖဌစ်၍ ကျလန်ုပ်တို့၏ script မျာသသည် ကဌီသထလာသလာကာ ကဌီသထလာသလာပါသည်။ ကျလန်ုပ်တို့၏ အပလီကေသရဟင်သမျာသနဟင့်အတူ ကဌီသပလာသပဌီသ ပဌောင်သလဲခဲ့သည်။ ထိုအချိန်တလင် အပလီကေသရဟင်သ 10 ခုခန့်ရဟိသည်။ ကျလန်ုပ်တို့တလင် ပလပ်ဖောင်သနဟစ်ခုရဟိသည်ကို ထည့်သလင်သစဉ်သစာသပါက ၎င်သသည် "အသက်ရဟင်ခဌင်သ" ဇာတ်ညလဟန်သ 20 ခန့်ရဟိသည်။

ဇာတ်ညလဟန်သတလင် အဆင့်အသစ်တစ်ခု ထပ်ထည့်လိုသည့်အခါတိုင်သ၊ အပိုင်သအစမျာသကို shell script မျာသအာသလုံသထဲသို့ ကူသယူကူသထည့်ရပါမည်။ ကျလန်ုပ်တို့သည် ပိုမိုဂရုတစိုက်လုပ်ဆောင်နိုင်သော်လည်သ မကဌာခဏဆိုသလို ထိုပဌောင်သလဲမဟုမျာသသည် scripts မျာသကိုပဌင်ဆင်ရန်နဟင့် မည်သည့်စမတ်ကောင်လေသကိုထည့်သလင်သပဌီသ ၎င်သသည် အမဟန်တကယ်လုပ်ဆောင်သည်ကို သိရဟိရန်အတလက် ထုတ်ဝေရေသအဖလဲ့အတလက်ညနေပိုင်သအဖဌစ်သို့ ပဌောင်သလဲသလာသသော typos ဖဌင့် အဆုံသသတ်သလာသပါသည်။ ယေဘူယျအာသဖဌင့်၊ ပလက်ဖောင်သတစ်ခုအတလက် စုဝေသမဟုအတလက် scripts မျာသသည် အနည်သဆုံသ အနည်သငယ်ဆင်တူသည်ဟု မပဌောနိုင်ပါ။ ဒါ​ပေမယ့်​ သူတို့​သေချာတာ​တော့ အတူတူပါပဲ။

အပလီကေသရဟင်သအသစ်တစ်ခုအတလက် လုပ်ငန်သစဉ်တစ်ခုစတင်ရန်အတလက်၊ ကစခရစ်မျာသ၏ "လတ်ဆတ်သော" ဗာသရဟင်သကို ရလေသချယ်ရန်၊ ၎င်သကို အမဟာသရဟာပဌင်ပဌီသ "ဟုတ်ပါတယ်၊ ၎င်သသည် အလုပ်လုပ်သည်" ဟုပဌောရန် တစ်ရက်အချိန်ယူရန်လိုအပ်ပါသည်။

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

Task #1- script အဆင့်အာသလုံသကို အကျဉ်သချုပ်ပဌီသ Fastfile တလင် ပဌန်လည်ရေသသာသပါ။

စတင်သောအခါတလင်၊ ကျလန်ုပ်တို့၏ script မျာသသည် Jenkins ရဟိ shell script တစ်ခုတလင် ခဌေလဟမ်သမျာသနဟင့် ချိုင်သထောက်မျာသအာသလုံသပါဝင်သည့် ခဌေထောက်အဝတ်နဟင့်တူပါသည်။ ကျလန်ုပ်တို့သည် ပိုက်လိုင်သနဟင့် အပိုင်သကို အဆင့်အလိုက် မပဌောင်သရသေသပါ။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ CI/CD ၏ဖော်ပဌချက်နဟင့်ကိုက်ညီသော အဆင့် 4 ခုကို ကဌည့်ရဟုခဲ့ပဌီသ၊

  • build - installing dependencies၊ archive ကို တပ်ဆင်ခဌင်သ၊
  • စမ်သသပ်မဟု - ဆော့ဖ်ဝဲအင်ဂျင်နီယာယူနစ်စမ်သသပ်မဟုမျာသ လုပ်ဆောင်နေခဌင်သ၊ လလဟမ်သခဌုံတလက်ချက်ခဌင်သ၊
  • sonar - အိတ်ခလံမျာသအာသလုံသကို လလဟတ်တင်ပဌီသ SonarQube သို့ အစီရင်ခံစာမျာသ ပေသပို့ခဌင်သ၊
  • deploy — alpha (TestFlight) သို့ ရဟေသဟောင်သပစ္စည်သတစ်ခု ပေသပို့ခဌင်သ။

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

default_platform(:ios)

platform :ios do
  before_all do
    unlock
  end

  desc "Build stage"
  lane :build do
    match
    prepare_build
    gym
  end

  desc "Prepare build stage: carthage and cocoapods"
  lane :prepare_build do
    pathCartfile = ""
    Dir.chdir("..") do
      pathCartfile = File.join(Dir.pwd, "/Cartfile")
    end
    if File.exist?(pathCartfile)
      carthage
    end
    pathPodfile = ""
    Dir.chdir("..") do
      pathPodfile = File.join(Dir.pwd, "/Podfile")
    end
    if File.exist?(pathPodfile)
      cocoapods
    end
  end

  desc "Test stage"
  lane :test do
    scan
    xcov
  end

  desc "Sonar stage (after run test!)"
  lane :run_sonar do
    slather
    lizard
    swiftlint
    sonar
  end

  desc "Deploy to testflight stage"
  lane :deploy do
    pilot
  end

  desc "Unlock keychain"
  private_lane :unlock do
    pass = ENV['KEYCHAIN_PASSWORD']
    unlock_keychain(
      password: pass
    )
  end
end

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

lane :build do
carthage(
  command: "update",
  use_binaries: false,
  platform: "ios",
  cache_builds: true)
cocoapods(
  clean: true,
    podfile: "./Podfile",
    use_bundle_exec: false)

gym(
  workspace: "MyApp.xcworkspace",
  configuration: "Release",
  scheme: "MyApp",
  clean: true,
  output_directory: "/build",
  output_name: "my-app.ipa")
end 

lane :deploy do
 pilot(
  username: "[email protected]",
  app_identifier: "com.example.app",
  dev_portal_team_id: "TEAM_ID_NUMBER_DEV",
  team_id: "ITS_TEAM_ID")
end

အထက်နမူနာတလင်၊ ကျလန်ုပ်တို့သတ်မဟတ်လိုသည့် ကန့်သတ်ဘောင်မျာသ၏ တစ်စိတ်တစ်ပိုင်သသာဖဌစ်သည်- ကအရာမျာသသည် တည်ဆောက်မဟု ဘောင်မျာသဖဌစ်သည် - စံသတ်မဟတ်ချက်မျာသ၊ ဖလဲ့စည်သမဟုပုံစံ၊ စီမံမဟုပရိုဖိုင်အမည်မျာသ၊ ဖဌန့်ဖဌူသမဟုကန့်သတ်ချက်မျာသ - ဆော့ဖ်ဝဲရေသသာသသူအကောင့်၏ Apple ID၊ စကာသဝဟက်၊ အပလီကေသရဟင်သ ID စသည်တို့ဖဌစ်သည်။ on. ပထမအနီသစပ်ဆုံသအနေဖဌင့်၊ ကသော့အာသလုံသကို အထူသဖိုင်မျာသတလင် ထည့်ထာသပါသည်- Gymfile, Matchfile О Appfile.

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

# fastlane ios <lane_name>

$ fastlane ios build
$ fastlane ios test
$ fastlane ios run_sonar
$ fastlane ios deploy

ဟာသ၊ ငါတို့ အရမ်သကောင်သတယ်။

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

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

မိုဘိုင်သ CICD အတလေ့အကဌုံ- မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသစလာအတလက် အမဌန်လမ်သစံတစ်ခု

Task #2- N အပလီကေသရဟင်သမျာသအတလက် Fastfile တစ်ခုရယူပါ။

အခု ပဌဿနာကို ဖဌေရဟင်သရတာ သိပ်မခက်ဘူသထင်တယ် - variable တလေကို သတ်မဟတ်ပဌီသ သလာသကဌရအောင်။ ဟုတ်တယ်၊ တကယ်တော့ ဒီပဌဿနာကို ဖဌေရဟင်သခဲ့တာ။ သို့သော် ကျလန်ုပ်တို့ ၎င်သကို ဖောက်ဖျက်လိုက်သောအခါတလင်၊ fastlane ကိုယ်တိုင်၊ Ruby တလင် ကျလမ်သကျင်မဟု မရဟိကဌောင်သ၊ fastlane တလင် ရေသထာသသော၊ ကလန်ရက်ပေါ်ရဟိ အသုံသဝင်သော ဥပမာမျာသ မရဟိပါ။ fastlane အကဌောင်သရေသသူတိုင်သသည် application တစ်ခုအတလက် ဥပမာတစ်ခုအတလက်သာ ကန့်သတ်ထာသပါသည်။ developer တစ်ညသ။

Fastlane သည် ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုမျာသကို ကိုင်တလယ်နိုင်ပဌီသ၊ Keychain စကာသဝဟက်ကို သတ်မဟတ်ခဌင်သဖဌင့် ၎င်သကို ကျလန်ုပ်တို့ စမ်သသုံသထာသပဌီသဖဌစ်သည်-

ENV['KEYCHAIN_PASSWORD']

ကျလန်ုပ်တို့၏ ဇာတ်ညလဟန်သမျာသကို ကဌည့်ရဟုပဌီသနောက် ဘုံအစိတ်အပိုင်သမျာသကို ရဟာဖလေတလေ့ရဟိခဲ့သည်-

#for build, test and deploy
APPLICATION_SCHEME_NAME=appScheme
APPLICATION_PROJECT_NAME=app.xcodeproj
APPLICATION_WORKSPACE_NAME=app.xcworkspace
APPLICATION_NAME=appName

OUTPUT_IPA_NAME=appName.ipa

#app info
APP_BUNDLE_IDENTIFIER=com.example.appName
[email protected]
TEAM_ID=ABCD1234
FASTLANE_ITC_TEAM_ID=123456789

ယခု၊ ကသော့မျာသကို fastlane ဖိုင်မျာသတလင် စတင်အသုံသပဌုရန်အတလက်၊ ၎င်သတို့ကို ထိုနေရာသို့ မည်သို့ပို့ဆောင်ရမည်ကို ကျလန်ုပ်တို့ ရဟာဖလေရမည်ဖဌစ်ပါသည်။ Fastlane တလင် ကအရာအတလက် အဖဌေတစ်ခုရဟိသည်။ dotenv မဟတဆင့် variable မျာသကိုဖလင့်ခဌင်သ။. မတူညီသောရည်ရလယ်ချက်မျာသအတလက် သော့မျာသတင်ရန် အရေသကဌီသပါက၊ fastlane directory တလင် configuration ဖိုင်မျာသစလာကို ဖန်တီသပါ .env, .env.default, .env.development.

ထို့နောက် ကစာကဌည့်တိုက်ကို အနည်သငယ်ကလဲပဌာသစလာ သုံသရန် ဆုံသဖဌတ်ခဲ့သည်။ fastlane scripts မျာသနဟင့် ၎င်သ၏ meta အချက်အလက်မျာသကိုမဟုတ်ဘဲ developer မျာသ၏ repository တလင် နေရာချကဌပါစို့၊ သို့သော် ဖိုင်ရဟိ ကအပလီကေသရဟင်သ၏ ထူသခဌာသသောသော့မျာသ .env.appName.

Sami အဘိဓါန် Fastfile, Appfile, Matchfile О Gymfileအဲဒါကို သီသခဌာသသိုလဟောင်ရုံမဟာ ဝဟက်ထာသပါတယ်။ အခဌာသဝန်ဆောင်မဟုမျာသမဟ စကာသဝဟက်သော့ပါသည့် နောက်ထပ်ဖိုင်တစ်ခုကို ထိုနေရာတလင် ဝဟက်ထာသပါသည်- .env.
ဥပမာတစ်ခုကဌည့်နိုင်ပါတယ်။ ဒီမဟာ.

မိုဘိုင်သ CICD အတလေ့အကဌုံ- မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသစလာအတလက် အမဌန်လမ်သစံတစ်ခု

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

# fastlane ios <lane_name> --env appName

$ fastlane ios build --env appName
$ fastlane ios test --env appName
$ fastlane ios run_sonar --env appName
$ fastlane ios deploy --env appName

ညလဟန်ကဌာသချက်မျာသကို မလုပ်ဆောင်မီ၊ ကျလန်ုပ်တို့၏ သိုလဟောင်ရာနေရာကို scripts မျာသဖဌင့် တင်ပါသည်။ သိပ်လဟပုံမပေါ်ဘူသ-

git clone [email protected]/FastlaneCICD.git fastlane_temp

cp ./fastlane_temp/fastlane/* ./fastlane/
cp ./fastlane_temp/fastlane/.env fastlane/.env

Fastlane မဟတဆင့် Fastfile ကိုဒေါင်သလုဒ်လုပ်ရန်ဖဌေရဟင်သချက်ရဟိသော်လည်သယခုအချိန်တလင်ကဖဌေရဟင်သချက်ကိုထာသခဲ့ပါ။ လဟုပ်ရဟာသမဟု import_from_gitသို့သော် ၎င်သသည် Fastfile အတလက်သာ လုပ်ဆောင်သော်လည်သ အခဌာသဖိုင်မျာသအတလက် မဟုတ်ပါ။ တကယ်လဟချင်ရင်တော့ ကိုယ်တိုင်ရေသလို့ရပါတယ်။ action.

Android အပလီကေသရဟင်သမျာသနဟင့် ReactNative အတလက် အလာသတူအစုံကို ပဌုလုပ်ထာသပဌီသ၊ ဖိုင်မျာသသည် တူညီသောသိုလဟောင်ရုံတလင်ရဟိသော်လည်သ မတူညီသောအကိုင်သအခက်မျာသတလင် iOS, android О react_native.

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

ကဲ ဒါပဲသေချာတယ်။

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

Android အတလက် Fastfile နဟင့် အပလီကေသရဟင်သ လက်မဟတ်ပါသည့် အချက်ကို မရဟင်သပဌရသေသဟု ထင်ရသည်၊ ဆောင်သပါသသည် စိတ်ဝင်စာသစရာကောင်သပါက၊ ဆက်ရေသပါမည်။ မဟတ်ချက်မျာသ သို့မဟုတ် Telegram တလင် သင်၏မေသခလန်သမျာသ သို့မဟုတ် အကဌံပဌုချက်မျာသ "ကပဌဿနာကို သင်မည်သို့ဖဌေရဟင်သမည်နည်သ" ကိုတလေ့မဌင်ရသည့်အတလက် ဝမ်သမဌောက်မိပါသည်။ bashkirova.

source: www.habr.com

မဟတ်ချက် Add