Tallaabooyinka GitHub sida CI/CD ee Goobta Generator-ka ee Joogtada ah iyo Bogagga GitHub

Tallaabooyinka GitHub sida CI/CD ee Goobta Generator-ka ee Joogtada ah iyo Bogagga GitHub

Markii aan yara indha-tiray Habr, waxaan la yaabay in maqaallo aad u yar la daabacay mawduuca GitHub's (beta) sifada - Tallaabooyinka.

Waxay u egtahay in hoos u dhigista noocaas ah lagu sharxi karo xaqiiqda ah in shaqeyntu ay weli ku jirto tijaabada, inkastoo "beta". Laakiin waa sifo faa'iido leh oo beta ah oo u oggolaanaysa qalabkan in loo isticmaalo meelaha gaarka ah. Waxay ku saabsan tahay la shaqaynta tignoolajiyadan oo aan kaga hadli doono maqaalkan.

Taariikhda ka hor

Haddii aan ku bilowno habka, markaa waxaa suurtagal ah in la sheego in habka raadinta degdeg ah, ku habboon, sahlan oo bilaash ah oo lagu kaydiyo bogga internetka ee "About Me", waxaan ku qasbanahay inaan ku qaato dhowr habeen oo aan shanlo maqaallo badan.

Dadka qaarkiis waxay doortaan martigelinta, kuwa kale server-ka daruuraha, iyo kuwa aan rabin inay fahmaan shaqada, isdhexgalka iyo lacag bixinta waxaas oo dhan sida ku dhejinta goobaha static ee kaydka, tan iyo hadda tan waxaa lagu samayn karaa labadaba GitHub iyo GitLab.

Dabcan, tani waa doorashada qof ahaaneed ee qof kasta.

Doorashadaydii ugu dambaysay waxay ahayd GitHub Pages.

Ku saabsan Bogagga

Yaa aan garanayn gh-pages - tani waa ikhtiyaarka lagu kaydinayo dukumentiyada qaabka bogga internetka waxaana lagu bixiyaa lacag la'aan, marka lagu daro dukumentiyada, waxaa sidoo kale la soo jeediyay in lagu kaydiyo boggaga internetka ee gaarka ah. Shaqadan waxaa siiya GitHub dhammaan isticmaalayaasha waxaana laga heli karaa goobaha kaydka.

Kaydka mashruuca waxa ay isticmaashaa laan gh-pages, loogu talagalay goobta isticmaale - kayd gaar ah oo magaca leh username.github.io iyadoo ilaha goobta ay ku jiraan master laan.

Waxaad arki kartaa faahfaahin dheeraad ah dukumentiyada, laakiin aan kaliya ogaado in GitHub uu si la yaab leh u deeqsiinayo inuu u oggolaado qof kasta inuu ku xidho domainkiisa goobtan oo kale isagoo si fudud ugu daraya fayl. CNAME oo leh magaca domain iyo dejinta DNS ee bixiyahaaga domainka ee server-yada GitHub.

Waxaan hubaa inay jiraan maqaallo badan oo halkan ku saabsan sida loo horumariyo goobtan oo kale, markaa taasi maaha waxa aan uga sii hadli doono.

Dhibaato dhacdo

Dhibaatadu waxay ahayd marka la isticmaalayo koronto-dhaliye taagan, waxaa loo baahan yahay in la qoro qoraallo dheeraad ah oo la isticmaalo maktabadaha si loo fududeeyo habka abuurista boggaga iyo ku shubista kaydka. Si fudud, haddii aad ku kaydiso ilaha kayd gaar ah oo gaar ah, ka dibna mar kasta oo ay jiraan wax isbeddel ah oo ku saabsan goobta, waxay ahayd lagama maarmaan in la geeyo deegaanka deegaanka ee jiilka xiga ee boggaga static iyo daabacaadda ee kaydka goobta ugu weyn.

Waxaa jira wax badan matoorada taagan Dhammaantoodna waxay leeyihiin dhib isku mid ah. Ficiladani waxay qaataan waqti iyo dadaal badan, oo ugu dambeyntii hoos u dhigaan shaqada goobta, gaar ahaan ka dib dhowr socdaal oo OS ah oo OS ah ama shilalka xogta luminta darawallada adag. (Tani waxay ahayd kiiska kiiskayga).

Dhawaan, ama ogaysiis soo booda ah oo ku yaal bogga internetka ama joornaalka GitHub, CI/CD dhawaan la dhisay ayaa la ogaaday, taas oo u ogolaatay ficiladan in lagu fuliyo dadaal yar.

Ku saabsan soosaarayaasha bogga taagan

Anigu si gaar ah diiradda ugu saari maayo shaygan hoose, balse waxa aan wadaagi doonaa dhawr arrimood oo aan u imid intii aan dooranayay iyo isticmaalka kuwan soo socda:

1) dooro koronto-dhaliye ku habboon luuqadaada barnaamijka, ama mid cad sida ugu macquulsan. Waxaan u imid fikraddan waqti markii aan nafteyda ku qasbanaaday in aan ku daro qaar ka mid ah shaqeynta goobta si ay u shaqeyso, ku dar birta si ay u xasilloonaato iyo automation weyn. Intaa waxaa dheer, tani waa sabab wanaagsan oo aad naftaada u qori karto shaqeyn dheeraad ah oo ah qaabka plugins;

2) koronto-dhaliye uu dooranayo waa doorasho shaqsiyeed, laakiin waxaa mudan in la tixgeliyo in bilowga bilowga ah ee shaqada Bogagga GitHub, waa inaad marka hore rakibtaa. Jekyll. Nasiib wanaag, waxay kuu ogolaaneysaa inaad ka abuurto shabakad ilo si toos ah kaydka (Waxaan ku celin doonaa tan doorashadayda).

Doorashadayda koronto-dhaliye waxay ku salaysan tahay qodobka koowaad. Pelikan oo ku qoran Python waxay si fudud u beddeshay Jekyll, taas oo aniga iga ah shisheeye (waxa la isticmaalayey ku dhawaad ​​hal sano). Natiijo ahaan, xitaa abuurista iyo habeynta maqaallada iyo ka shaqeynta mareegaha waxay ku siineysaa khibrad dheeri ah oo luqadda xiisaha ii leh.

__

Abuurista dhibaatada

Hawsha ugu weyn waxay noqon doontaa in la qoro qoraal (dhab ahaantii faylka qaabeynta) kaas oo si toos ah uga soo saari doona bogag taagan kayd gaar ah. Xalku wuxuu ku lug yeelan doonaa shaqeynta jawiga casriga ah. Qoraalka laftiisa ayaa ku dari doona bogag diyaarsan kaydka dadweynaha.

Qalabka xalka

Qalabka aan u isticmaali doono si aan u xalino dhibaatada:

  • Falalka GitHub;
  • Python 3.7;
  • Pelican;
  • Git;
  • Bogagga GitHub.

Dhibaatooyinka Dhibaatada

Haddaba, ka dib markii aad wax yar ka baratay dukumeentiyada oo aad fahantay sida qoraallada Ficilada loo qoro, waxa caddaatay in habkani uu si buuxda u xallin doono dhibaatada soo ifbaxday. Waqtiga qorista, waa inaad isdiiwaangelisaa si aad u isticmaasho shaqadan. tijaabada beta!

Tallaabooyinka GitHub sida CI/CD ee Goobta Generator-ka ee Joogtada ah iyo Bogagga GitHub
Sharaxaada shaqada cusub ee Github laftirkeeda

Qoritaanka qoraalka ficilku wuxuu ku bilaabmayaa abuurista fayl magac leh oo ku jira gal .github iyo gal-hoosaadkiisa workflows. Tan waxaa lagu samayn karaa gacanta ama tifaftiraha ku jira tab ficillada ee bogga kaydka.

Tallaabooyinka GitHub sida CI/CD ee Goobta Generator-ka ee Joogtada ah iyo Bogagga GitHub
Tusaalaha foomka qoraalka maran

Waxaan si kooban uga faalloon doonaa foomka

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.

Aynu qorno annaga oo ku salayna qaab-dhismeedka:

0) Waxaad sidoo kale ka tagi kartaa magaca "CI". Waa arrin dhadhan.

1) Marka xigta, waxaad u baahan tahay inaad doorato ficilka / kicinta bilaabi doona qoraalka, kiiskeena tani waa riixitaanka caadiga ah ee ballan-qaad cusub oo kayd ah.

on:
  push

2) Waxaan sidoo kale uga tagi doonaa sawirka iyadoo ku saleysan taas oo qoraalka loo bilaabi doono tusaale ahaan, maadaama Ubuntu aad ugu qanacsan yahay shaqeynta lagama maarmaanka ah. Isagoo eegaya qalabka la heli karo way caddahay in tani ay noqon karto sawir kasta oo lagama maarmaan ah ama si fudud ku habboon (ama weel Docker ku salaysan).

  build:
    runs-on: ubuntu-latest

3) Tallaabooyinka, waxaan marka hore dejin doonnaa deegaanka si aan ugu diyaargarowno shaqada ugu weyn.

3.1) u tag laanta aan u baahanahay (tallaabada caadiga ah checkout):

- uses: actions/checkout@v1

3.2) ku rakib Python:

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

3.3) ku rakib ku tiirsanaanta koronto-dhaliyeheena:

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

3.4) Samee hage kaas oo boggaga goobta laga soo saari doono:

   - name: Make output folder
      run: mkdir output

4) Si shaqada goobta ka socotaa ay u noqoto mid joogto ah, oo kala ah, in aan la tirtirin isbedeladii hore iyo in ay awood u yeelato in wax ka bedel lagu sameeyo kaydka goobta iyada oo aan la isku dhacsanayn, tallaabada xigta waxay noqon doontaa in la xidho kaydka goobta mar kasta:

   - 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

Talaabadani waxay u wacdaa doorsoomayaasha nidaamka:

  • doorsoome GITHUB_ACTOR GitHub ayaa is rakibtay, oo kani waa magaca isticmaalaha kaas oo khaladkiisa qoraalkan la bilaabay;
  • doorsoomaha secrets.ACCESS_TOKEN tan ayaa la soo saaray calaamad u ah maaraynta Github, waxaan u gudbin karnaa sida doorsoomayaasha deegaanka annagoo ku dhejineyno tab Secrets goobaha kaydkayaga. Fadlan la soco in inta lagu jiro qarniga calaamadda ayaa nala siin doonaa hal mar, ma jiri doonto marin dheeraad ah oo loo galo. Iyo sidoo kale qiyamka walxaha siraha.

5) Aan u gudubno abuurista bogaggeena:

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

Halbeegyada loo gudbiyay koronto-dhaliye ayaa mas'uul ka ah hagaha halka loo diri doono faylasha la soo saaray (-o outputiyo faylka qaabeynta ee aan isticmaalno si aan u soo saarno (-s publishconf.py; Waxaad ka akhrisan kartaa habka loo kala saaro habaynta deegaanka iyo habaynta daabacaadda dukumeentiyada Pelican).

Aan ku xasuusiyo waxa ku jira galkeena output Kaydka goobta mar horeba waa la xidhxidhay.

6) Aynu dejinno git oo aan tilmaanno faylalkayada la beddelay:

    - 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

Halkaa marka ay marayso, doorsoome hore loo yaqaan ayaa la isticmaalaa oo hagaha shaqada ayaa lagu tilmaamay kaas oo amarrada talaabadan lagu bilaabi doono. Amarka lagu aadayo tusaha shaqada haddii kale wuxuu u ekaan lahaa - cd output.

7) Aynu abuurno fariin go'an, samayno isbeddelada oo aynu ku riixno kaydka. Sidaa darteed go'aanku maaha mid aan waxba tarayn oo sidaas darteed ma soo saarin qalad bash (natiijada wax soo saarku maaha 0) - Marka hore, aan hubinno inay lagama maarmaan tahay in la sameeyo oo la riixo gabi ahaanba. Si tan loo sameeyo waxaan isticmaalnaa amarka git diff-index --quiet --cached HEAD -- kaas oo soo saari doona terminalka 0 haddii aysan jirin wax isbeddel ah oo ku saabsan nooca hore ee goobta, iyo 1 waxaa jira isbedelo noocaas ah. Kadibna waxaanu ka shaqaynaa natiijada amarkan. Sidaa darteed, macluumaadka ku saabsan fulinta qoraalka, waxaan ku qori doonaa macluumaadka waxtarka leh ee ku saabsan xaaladda goobta marxaladdan, halkii ay si toos ah u burburi lahayd oo ay noogu soo diri lahayd warbixin ku saabsan shilka qoraalka.

Waxa kale oo aanu ku fulinaa talaabooyinkan hagahayaga bogag diyaarsan.

   - 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

natiijada

Natiijo ahaan, qoraalkan oo kale wuxuu kuu ogolaanayaa inaadan ka fikirin abuurista bogag taagan. Adigoo ku daraya isbeddelada si toos ah kaydka gaarka ah, ha ahaato adoo la shaqeynaya git ka hoos yimaada nidaam kasta ama abuurista fayl iyada oo loo marayo interface webka GitHub, Actions ayaa wax walba samayn doona laftooda. Haddii qoraalku u dhaco si lama filaan ah, ogeysiis ayaa lagu soo diri doonaa emailkaaga.

Cod buuxa

Waxaan ka tagayaa nooca shaqadayda, kaas oo tallaabada ugu dambeysa ay ku dareyso soo dirida ogeysiis ah in ballan lagu riixay keydka ugu weyn.

Siraha kor lagu sharaxay ayaa la isticmaalaa, halkaasoo calaamadda bot iyo aqoonsiga isticmaalaha ee fariinta loo baahan yahay lagu daro.

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

Screenshots

Tallaabooyinka GitHub sida CI/CD ee Goobta Generator-ka ee Joogtada ah iyo Bogagga GitHub
Natiijada mid ka mid ah orodyada lagu soo bandhigay tabka Actions ee kaydka isha

Tallaabooyinka GitHub sida CI/CD ee Goobta Generator-ka ee Joogtada ah iyo Bogagga GitHub
Fariinta bot ee ku saabsan dhammaystirka qoraalka

Xiriiro faa'iido leh

Fahamka Ficilada
Actions syntax
Liiska kiciyeyaasha
Ikhtiyaarada jawiga dhabta ah
Bogagga Github
Liiska Generator Static

Source: www.habr.com

Add a comment