GitHub လုပ်ဆောင်ချက်မျာသသည် static generator နဟင့် GitHub စာမျက်နဟာမျာသပေါ်ရဟိ site တစ်ခုအတလက် CI/CD အဖဌစ် လုပ်ဆောင်ချက်မျာသ

GitHub လုပ်ဆောင်ချက်မျာသသည် static generator နဟင့် GitHub စာမျက်နဟာမျာသပေါ်ရဟိ site တစ်ခုအတလက် CI/CD အဖဌစ် လုပ်ဆောင်ချက်မျာသ

Habr ကို အနည်သငယ် လဟည့်စာသပဌီသ GitHub ၏ (beta) အင်္ဂါရပ် - လုပ်ဆောင်ချက်မျာသအကဌောင်သ ဆောင်သပါသအနည်သငယ်သာ ထုတ်ဝေခဲ့သည်ကို အံ့သဌမိပါသည်။

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

သမိုင်သမတင်မီ

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

အချို့သောလူမျာသသည် hosting ကိုရလေသချယ်သည်၊ အခဌာသသူမျာသက cloud server တစ်ခုနဟင့်အလုပ်၊ အပဌန်အလဟန်တုံ့ပဌန်မဟုနဟင့်ငလေပေသချေမဟုတို့ကိုနာသမလည်သောသူတို့ကိုရလေသချယ်သည်၊ static sites မျာသကို repository သို့အပ်လုဒ်လုပ်ခဌင်သကဲ့သို့သောကအရာအာသလုံသကို GitHub နဟင့် GitLab နဟစ်ခုလုံသတလင်လုပ်ဆောင်နိုင်သောကဌောင့်ဖဌစ်သည်။

ဟုတ်ပါတယ်၊ ဒါက လူတိုင်သရဲ့ ကိုယ်ပိုင်ရလေသချယ်မဟုပါ။

ကျလန်ုပ်၏နောက်ဆုံသရလေသချယ်မဟုမဟာ GitHub စာမျက်နဟာမျာသဖဌစ်သည်။

စာမျက်နဟာမျာသအကဌောင်သ

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

ပရောဂျက်သိုလဟောင်မဟုတလင် ဌာနခလဲတစ်ခုကို အသုံသပဌုသည်။ gh-pagesအသုံသပဌုသူဆိုက်တစ်ခုအတလက် - အမည်နဟင့်သီသခဌာသသိုလဟောင်မဟု username.github.io site အရင်သအမဌစ်မျာသနဟင့်အတူ master အခက်။

အသေသစိတ်အချက်အလက်မျာသကို သင်ပိုမိုကဌည့်ရဟုနိုင်ပါသည်။ စာရလက်စာတမ်သ၌သို့သော် GitHub သည် မည်သူ့ကိုမဆို ဖိုင်တစ်ခုထည့်ရုံဖဌင့် ၎င်သတို့၏ကိုယ်ပိုင်ဒိုမိန်သကို ထိုဆိုဒ်သို့ လင့်ခ်ချိတ်ရန် ခလင့်ပဌုရာတလင် အံ့အာသသင့်ဖလယ်ကောင်သကဌောင်သ မဟတ်သာသပါရစေ။ CNAME ဒိုမိန်သအမည်ဖဌင့် GitHub ဆာဗာမျာသပေါ်တလင် သင့်ဒိုမိန်သဝန်ဆောင်မဟုပေသသူ၏ DNS ကို စနစ်ထည့်သလင်သပါ။

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

ပဌဿနာတစ်ခုဖဌစ်ပလာသ

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

ပေါမျာသသည်။ static ဂျင်နရေတာမျာသ သူတို့အာသလုံသမဟာ တူညီတဲ့ပဌဿနာတစ်ခုရဟိတယ်။ ကလုပ်ဆောင်ချက်မျာသသည် အချိန်နဟင့် ကဌိုသစာသအာသထုတ်မဟု အလလန်ယူရပဌီသ အထူသသဖဌင့် OS မဟ OS သို့ အမျာသအပဌာသ ပဌောင်သရလဟေ့ခဌင်သ သို့မဟုတ် hard drive မျာသတလင် ဒေတာမျာသ ဆုံသရဟုံသသလာသပဌီသနောက်တလင် ဆိုက်ပေါ်တလင် အလုပ်လုပ်ခဌင်သကို နဟေသကလေသစေပါသည်။ (ဒါက ငါ့ကိစ္စပဲ).

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

static page ဂျင်နရေတာမျာသအကဌောင်သ

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

1) သင့်ပရိုဂရမ်သမင်သဘာသာစကာသနဟင့် ကိုက်ညီသော ဂျင်နရေတာတစ်လုံသ သို့မဟုတ် တတ်နိုင်သမျဟ နာသလည်နိုင်သော ကိရိယာကို ရလေသချယ်ပါ။ ကျလန်ုပ်ကိုယ်တိုင် ဆိုက်အလုပ်လုပ်ရန်အတလက် လုပ်ဆောင်ချက်အချို့ကို ထည့်သလင်သရန်၊ ၎င်သ၏ပိုမိုတည်ငဌိမ်မဟုနဟင့် အလိုအလျောက်လုပ်ဆောင်မဟုအတလက် ချိုင်သထောက်မျာသထည့်ရမည့်အချိန်တစ်ခုတလင် ကျလန်ုပ်သည် ကအကဌံဥာဏ်ကို ရရဟိခဲ့ပါသည်။ ထို့အပဌင်၊ ၎င်သသည် plugins ပုံစံဖဌင့် သင်ကိုယ်တိုင် နောက်ထပ်လုပ်ဆောင်နိုင်စလမ်သကို ရေသသာသရန် အကဌောင်သပဌချက်ကောင်သတစ်ခုဖဌစ်သည်။

2) မည်သည့် generator ကိုရလေသချယ်ရန်မဟာ ကိုယ်ပိုင်ရလေသချယ်မဟုဖဌစ်သည်၊ သို့သော် GitHub Pages ၏လုပ်ဆောင်နိုင်စလမ်သတလင် ကနညသနဟစ်မဌဟုပ်ခဌင်သအတလက် သင် ညသစလာထည့်သလင်သရမည်ဖဌစ်ကဌောင်သ ထည့်သလင်သစဉ်သစာသသင့်ပါသည်။ Jekyll. ကံကောင်သထောက်မစလာ၊ ၎င်သသည် သင့်အာသ repository ရဟိရင်သမဌစ်မျာသမဟ ဝဘ်ဆိုဒ်တစ်ခုကို ဖန်တီသနိုင်စေပါသည်။ (ဒါကို ငါ့ရလေသချယ်မဟုနဲ့ ထပ်ခါထပ်ခါ ပဌောမယ်).

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

__

ပဌဿနာကိုပုံဖော်ခဌင်သ

အဓိကတာဝန်မဟာ သီသသန့်သိုလဟောင်မဟုမဟ static စာမျက်နဟာမျာသကို အလိုအလျောက်ထုတ်ပေသမည့် script (အမဟန်က configuration file) ကိုရေသရန်ဖဌစ်သည်။ ဖဌေရဟင်သချက်တလင် virtual ပတ် ၀ န်သကျင်၏လုပ်ဆောင်နိုင်စလမ်သပါ ၀ င်လိမ့်မည်။ script ကိုယ်တိုင်က public repository တလင် အဆင်သင့်လုပ်ထာသသော စာမျက်နဟာမျာသကို ပေါင်သထည့်ပါမည်။

ဖဌေရဟင်သနည်သမျာသ

ပဌဿနာဖဌေရဟင်သရန် ကျလန်ုပ်တို့အသုံသပဌုမည့် ကိရိယာမျာသ-

  • GitHub လုပ်ဆောင်ချက်မျာသ၊
  • Python3.7;
  • Pelican;
  • Git;
  • GitHub စာမျက်နဟာမျာသ။

addressing

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

GitHub လုပ်ဆောင်ချက်မျာသသည် static generator နဟင့် GitHub စာမျက်နဟာမျာသပေါ်ရဟိ site တစ်ခုအတလက် CI/CD အဖဌစ် လုပ်ဆောင်ချက်မျာသ
Github ကိုယ်တိုင်က လုပ်ဆောင်နိုင်စလမ်သအသစ်အကဌောင်သ ဖော်ပဌချက်

လုပ်ဆောင်ချက် ဇာတ်ညလဟန်သရေသသာသခဌင်သသည် ဖိုင်တလဲတစ်ခုတလင် အမည်ရဟိသော ဖိုင်တစ်ခုကို ဖန်တီသခဌင်သဖဌင့် စတင်သည်။ .github ၎င်သ၏ဖိုင်တလဲခလဲ workflows. ၎င်သကို လူကိုယ်တိုင်ဖဌစ်စေ သို့မဟုတ် သိမ်သဆည်သရေသစာမျက်နဟာရဟိ လုပ်ဆောင်ချက်မျာသတက်ဘ်ရဟိ တည်သဖဌတ်သူမဟ လုပ်ဆောင်နိုင်သည်။

GitHub လုပ်ဆောင်ချက်မျာသသည် static generator နဟင့် GitHub စာမျက်နဟာမျာသပေါ်ရဟိ site တစ်ခုအတလက် CI/CD အဖဌစ် လုပ်ဆောင်ချက်မျာသ
ဗလာဇာတ်ညလဟန်သပုံစံ နမူနာ

ဖောင်ပေါ်တလင် အတိုချုံသ မဟတ်ချက်ပေသပါမည်။

name: CI    # МазваМОе скрОпта: буЎет ПтПбражаться вП вклаЎке Actions

on: [push]  # ЎействОе, пП кПтПрПЌу запускается ЎаММый скрОпт

jobs:       # рПбПты, кПтПрые буЎут выпПлМяться
  build:    # сбПрка, кПтПрая..

    runs-on: ubuntu-latest      # ..буЎет запущеМа Ма ПсМПве этПгП Пбраза

    steps:              # шагО кПтПрые буЎут прПЎелаМы пПсле запуска Пбраза
    - uses: actions/checkout@v1     # перехПЎ в саЌую актуальМую ветку
    - name: Run a one-line script   # ОЌя рабПты МПЌер 1
      run: echo Hello, world!       # суть рабПты МПЌер 1 (bash-кПЌаМЎа запОсаМа в ПЎМу стрПку)
    - name: Run a multi-line script   # ОЌя рабПты МПЌер 2
      run: |                    # суть рабПты МПЌер 2 (ЌМПгПстрПчМая)
        echo Add other actions to build,
        echo test, and deploy your project.

နမူနာပုံစံကို အခဌေခံ၍ ကျလန်ုပ်တို့ကိုယ်တိုင်ရေသကဌပါစို့။

0) “CI” ဆိုတဲ့ နာမည်ကိုလည်သ ချန်ထာသနိုင်ပါတယ်။ အရသာကိစ္စပါ။

1) ထို့နောက်၊ သင်သည် script ကိုဖလင့်မည့် action/trigger ကိုရလေသချယ်ရန်လိုအပ်သည်၊ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ၎င်သသည် repository သို့ commit အသစ်တစ်ခု၏ပုံမဟန်တလန်သအာသပေသမဟုဖဌစ်သည်။

on:
  push

2) Ubuntu သည် လိုအပ်သောလုပ်ဆောင်နိုင်စလမ်သကို ကျေနပ်အာသရသောကဌောင့် script ကို နမူနာအဖဌစ် စတင်မည့်အခဌေခံပေါ်တလင် ပုံကိုလည်သ ချန်ထာသပါမည်။ ကဌည့်နေသည်။ ရနိုင်သောကိရိယာမျာသ ၎င်သသည် လိုအပ်သော သို့မဟုတ် ရိုသရဟင်သသော အဆင်ပဌေသည့်ပုံ (သို့မဟုတ် ၎င်သအပေါ်အခဌေခံ၍ Docker ကလန်တိန်နာ) ဖဌစ်နိုင်ကဌောင်သ ရဟင်သရဟင်သလင်သလင်သဖဌစ်လာသည်။

  build:
    runs-on: ubuntu-latest

3) အဆင့်မျာသတလင်၊ ကျလန်ုပ်တို့သည် ပင်မလုပ်ငန်သအတလက် ကဌိုတင်ပဌင်ဆင်ရန် ပတ်ဝန်သကျင်ကို ညသစလာတည်ဆောက်ပါမည်။

3.1) ကျလန်ုပ်တို့လိုအပ်သောဌာနခလဲသို့သလာသပါ (စံအဆင့် checkout):

- uses: actions/checkout@v1

3.2) Python ကို install လုပ်ပါ။

    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7

3.3) ကျလန်ုပ်တို့၏ ဂျင်နရေတာ၏ မဟီခိုမဟုကို တပ်ဆင်ပါ-

    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

၃.၄) ဆိုက်စာမျက်နဟာမျာသကို ထုတ်ပေသမည့် လမ်သညလဟန်တစ်ခု ဖန်တီသပါ-

   - name: Make output folder
      run: mkdir output

4) ဆိုက်ပေါ်ရဟိအလုပ်သည် တသမတ်တည်သဖဌစ်စေရန်၊ ပဌောရရင်၊ ယခင်အပဌောင်သအလဲမျာသကို မဖျက်ဘဲ၊ ကလဲလလဲမဟုမျာသမရဟိဘဲ site repository တလင် အပဌောင်သအလဲမျာသထည့်နိုင်စေရန်၊ နောက်တဆင့်မဟာ အကဌိမ်တိုင်သ site repository ကို clone လုပ်ရပါမည်-

   - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output

ကအဆင့်တလင် system variable မျာသကို ခေါ်သည်-

  • ပဌောင်သလဲနိုင်သော GITHUB_ACTOR GitHub သည် ၎င်သကိုယ်တိုင် ထည့်သလင်သပဌီသ ၎င်သသည် ကစခရစ်ကို စတင်အသုံသပဌုသူ၏ အမဟာသကဌောင့်၊
  • ပဌောင်သလဲနိုင်သော secrets.ACCESS_TOKEN ဒါကထုတ်ပေသတယ်။ Github ကို စီမံခန့်ခလဲရန်အတလက် တိုကင်တဘ်တလင် သတ်မဟတ်ခဌင်သဖဌင့် ၎င်သကို ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုတစ်ခုအဖဌစ် ကျလန်ုပ်တို့ဖဌတ်သန်သနိုင်သည်။ Secrets ကျလန်ုပ်တို့၏ repository ဆက်တင်မျာသ။ မျိုသဆက်အတလင်သ တိုကင်ကို ကျလန်ုပ်တို့ထံ တစ်ခါတည်သ ပေသအပ်မည်ဖဌစ်ပဌီသ၊ ၎င်သကို ထပ်မံဝင်ရောက်ခလင့်ရဟိတော့မည်မဟုတ်ကဌောင်သ ကျေသဇူသပဌု၍ သတိပဌုပါ။ လျဟို့ဝဟက်ချက်ပစ္စည်သမျာသ၏တန်ဖိုသမျာသ။

5) ကျလန်ုပ်တို့၏ စာမျက်နဟာမျာသကို ဖန်တီသခဌင်သသို့ ဆက်သလာသကဌပါစို့။

   - name: Generate static pages
      run: pelican content -o output -s publishconf.py

ဂျင်နရေတာသို့ ပေသပို့သော ကန့်သတ်ချက်မျာသသည် ထုတ်ပေသထာသသော ဖိုင်မျာသကို ပေသပို့မည့် လမ်သညလဟန်အတလက် တာဝန်ရဟိသည် (-o output) နဟင့် ထုတ်လုပ်ရန် ကျလန်ုပ်တို့အသုံသပဌုသော configuration file (-s publishconf.py; Local config ကို ပိုင်သခဌာသရန် ချဉ်သကပ်ပုံနဟင့် Pelican documentation တလင် ထုတ်ဝေရန်အတလက် config ကို သင်ဖတ်နိုင်သည်။).

ကျလန်ုပ်တို့၏ဖိုဒါတလင်ရဟိသောအရာကို ကျလန်ုပ်သတိပေသပါရစေ output ဆိုက်သိုလဟောင်ရာကို ပုံတူပလာသပဌီသဖဌစ်သည်။

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

    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output

ကအချိန်တလင်၊ သိပဌီသသာသ variable ကိုအသုံသပဌုပဌီသ ကအဆင့်မဟ commands မျာသကိုစတင်မည့်လုပ်ငန်သလမ်သညလဟန်ကိုညလဟန်ပဌပါသည်။ အလုပ်လုပ်တဲ့ directory ကိုသလာသရမယ့် command က တမျိုသတဖုံ ဖဌစ်နေပါလိမ့်မယ် - cd output.

7) ကတိပဌုစာတစ်စောင်ကို ထုတ်ပေသပါ၊ အပဌောင်သအလဲမျာသကို လုပ်ဆောင်ပဌီသ ၎င်သတို့ကို သိုလဟောင်ခန်သသို့ တလန်သပို့ကဌပါစို့။ သို့မဟသာ ကတိကဝတ်သည် အချည်သနဟီသမဖဌစ်ဘဲ bash တလင် အမဟာသအယလင်သတစ်ခု မဖဌစ်ပေါ်စေပါ (ရလဒ်သည် ရလဒ်မဟုတ်ပေ။ 0) — ညသစလာ၊ တစ်ခုခုကို ကတိပဌုပဌီသ တလန်သပို့ရန် လိုအပ်သည်ရဟိမရဟိ စစ်ဆေသကဌည့်ကဌပါစို့။ ဒါကိုလုပ်ဖို့ ကျလန်တော်တို့ command ကိုသုံသပါတယ်။ git diff-index --quiet --cached HEAD -- terminal သို့ output လိမ့်မည်။ 0 ဆိုက်၏ယခင်ဗာသရဟင်သနဟင့် ပတ်သက်သော အပဌောင်သအလဲမျာသ မရဟိပါက၊ 1 အဲဒီလို အပဌောင်သအလဲတလေ ရဟိတယ်။ ထို့နောက် ကျလန်ုပ်တို့သည် ကအမိန့်တော်၏ရလဒ်ကို လုပ်ဆောင်သည်။ ထို့ကဌောင့်၊ ဇာတ်ညလဟန်သကို အကောင်အထည်ဖော်ခဌင်သဆိုင်ရာ အချက်အလက်မျာသတလင်၊ ကျလန်ုပ်တို့သည် အလိုအလျောက် ပျက်စီသသလာသပဌီသ script ပျက်စီသမဟုနဟင့်ပတ်သက်သော အစီရင်ခံစာကို ကျလန်ုပ်တို့ထံ ပေသပို့မည့်အစာသ ကအဆင့်တလင် ဆိုက်၏အခဌေအနေနဟင့်ပတ်သက်သော အသုံသဝင်သောအချက်အလက်မျာသကို မဟတ်တမ်သတင်ပါမည်။

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

   - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          # Only if repo have changes
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
      working-directory: ./output

ရလဒ်

ရလဒ်အနေဖဌင့်၊ ထိုသို့သော script သည် သင့်အာသ static pages ဖန်တီသခဌင်သအကဌောင်သ စဉ်သစာသရန်ခလင့်ပဌုသည်။ မည်သည့်စနစ်မဟ git နဟင့်အလုပ်လုပ်ခဌင်သ သို့မဟုတ် GitHub ဝဘ်အင်တာဖေ့စ်မဟတဆင့် ဖိုင်ဖန်တီသခဌင်သဖဌစ်စေ သီသသန့်သိုလဟောင်မဟုသို့ အပဌောင်သအလဲမျာသကို တိုက်ရိုက်ထည့်သလင်သခဌင်သဖဌင့်၊ Actions သည် ၎င်သတို့ကိုယ်တိုင် လုပ်ဆောင်မည်ဖဌစ်သည်။ Script သည် မမျဟော်လင့်ဘဲ ပျက်စီသသလာသပါက သင့်အီသမေသလ်သို့ အကဌောင်သကဌာသချက်တစ်ခု ပေသပို့ပါမည်။

ကုဒ်အပဌည့်အစုံ

နောက်ဆုံသအဆင့်တလင် commit တစ်ခုကို main repository သို့ တလန်သပို့လိုက်ကဌောင်သ အကဌောင်သကဌာသစာ ပေသပို့သည့် နောက်ဆုံသအဆင့်တလင် ကျလန်ုပ်၏ အလုပ်လုပ်သောဗာသရဟင်သကို ချန်ထာသခဲ့ပါမည်။

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

name: Push content to the user's GitHub pages repository

on:
  push

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Install dependencies
      run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
    - name: Make output folder
      run: mkdir output
    - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output
    - name: Generate static pages
      run: pelican content -o output -s publishconf.py
    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output
    - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
          curl "https://api.telegram.org/bot${{ secrets.BOT_TOKEN }}/sendMessage?text=$COMMIT_MESSAGE %0ALook at ${GITHUB_ACTOR}.github.io %0ARepository%3A github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io&chat_id=${{ secrets.ADMIN_ID }}"
      working-directory: ./output

ဖန်သာသပဌင်

GitHub လုပ်ဆောင်ချက်မျာသသည် static generator နဟင့် GitHub စာမျက်နဟာမျာသပေါ်ရဟိ site တစ်ခုအတလက် CI/CD အဖဌစ် လုပ်ဆောင်ချက်မျာသ
အရင်သအမဌစ်သိုလဟောင်မဟု၏ လုပ်ဆောင်ချက်မျာသ တက်ဘ်တလင် ပဌသထာသသည့် လုပ်ဆောင်ချက်မျာသထဲမဟ တစ်ခု၏ရလဒ်

GitHub လုပ်ဆောင်ချက်မျာသသည် static generator နဟင့် GitHub စာမျက်နဟာမျာသပေါ်ရဟိ site တစ်ခုအတလက် CI/CD အဖဌစ် လုပ်ဆောင်ချက်မျာသ
ဇာတ်ညလဟန်သပဌီသဆုံသခဌင်သအကဌောင်သ ဘော့တ်မဟ မက်ဆေ့ဂျ်

အသုံသဝင်သောလင့်မျာသ

လုပ်ဆောင်ချက်မျာသကို နာသလည်ခဌင်သ။
လုပ်ဆောင်ချက်မျာသ အထာသအသို
အစပျိုသမဟုမျာသစာရင်သ
ပကတိပတ်ဝန်သကျင်အတလက် ရလေသချယ်စရာမျာသ
Github စာမျက်နဟာမျာသ
Static Generator စာရင်သ

source: www.habr.com

မဟတ်ချက် Add