Gnìomhan GitHub mar CI / CD airson làrach air gineadair statach agus Duilleagan GitHub

Gnìomhan GitHub mar CI / CD airson làrach air gineadair statach agus Duilleagan GitHub

Às deidh beagan sgrìobadh Habr, chuir e iongnadh orm nach deach ach glè bheag de artaigilean fhoillseachadh air cuspair feart GitHub (beta) - Gnìomhan.

Bhiodh e coltach gum faodar a leithid de fho-aithris a mhìneachadh leis gu bheil an comas-gnìomh fhathast fo dheuchainn, ged is e “beta”. Ach tha e na fheart feumail den beta a leigeas leis an inneal seo a chleachdadh ann an stòran prìobhaideach. Tha e mu dheidhinn a bhith ag obair leis an teicneòlas seo air am bruidhinn mi san artaigil seo.

Ro-eachdraidheil

Ma thòisicheas sinn ann an òrdugh, is dòcha gum b’ fhiach iomradh a thoirt air, anns a ’phròiseas a bhith a’ lorg roghainn luath, goireasach, furasta agus an-asgaidh airson làrach-lìn pearsanta “Mu dheidhinn” a stòradh, bha agam ri grunn oidhcheannan a chaitheamh agus cìreadh tro iomadh artaigil.

Bidh cuid de dhaoine a’ taghadh aoigheachd, cuid eile frithealaiche sgòthan, agus an fheadhainn nach eil airson an obair, an eadar-obrachadh agus pàigheadh ​​​​airson seo uile a thuigsinn leithid luchdachadh suas làraich statach gu stòr, oir a-nis faodar seo a dhèanamh air gach cuid GitHub agus GitLab.

Gu dearbh, is e seo roghainn pearsanta a h-uile duine.

B’ e GitHub Pages an roghainn mu dheireadh agam.

Mu Dhuilleagan

Cò aig nach eil fios gh-pages - tha seo na roghainn airson sgrìobhainnean a stòradh ann an cruth làrach-lìn agus tha e air a thoirt seachad an-asgaidh, agus a bharrachd air sgrìobhainnean, thathas cuideachd a ’moladh làraich-lìn pearsanta a stòradh. Tha an gnìomh seo air a thoirt seachad le GitHub don h-uile neach-cleachdaidh agus tha e ri fhaighinn ann an roghainnean an stòrais.

Bidh stòr a’ phròiseict a’ cleachdadh meur gh-pages, airson làrach neach-cleachdaidh - stòr air leth leis an ainm username.github.io le stòran làraich a-steach master meur.

Chì thu barrachd mion-fhiosrachaidh ann an sgrìobhainnean, ach leig dhomh a thoirt fa-near gu bheil GitHub air leth fialaidh ann a bhith a’ leigeil le neach sam bith an àrainn aca fhèin a cheangal ri làrach mar sin le bhith dìreach a’ cur faidhle ris CNAME leis an ainm fearainn agus a’ stèidheachadh DNS an t-solaraiche fearainn agad air na frithealaichean GitHub.

Tha mi cinnteach gu bheil tòrr artaigilean an seo air mar a leasaicheas tu làrach mar sin, agus mar sin chan e sin a tha mi a’ dol a bhruidhinn tuilleadh.

Thachair duilgheadas

B’ e an duilgheadas a bh’ ann nuair a bhios tu a’ cleachdadh gineadair statach, gu feumar sgriobtaichean a bharrachd a sgrìobhadh agus leabharlannan a chleachdadh gus am pròiseas cruthachadh dhuilleagan a dhèanamh nas sìmplidhe agus an luchdachadh a-steach don stòr. Gu sìmplidh, ma stòradh tu na stòran ann an stòr prìobhaideach fa leth, an uairsin a h-uile uair a tha atharrachadh sam bith air an làrach, bha e riatanach an àrainneachd ionadail a chuir a-steach airson an ath ghinealach de dhuilleagan statach agus foillseachadh ann am prìomh stòr na làraich.

Tha pailteas ann gineadairean statach agus tha an aon trioblaid aca uile. Bidh na gnìomhan sin a’ toirt cus ùine is oidhirp, agus aig a’ cheann thall a’ slaodadh sìos obair air an làrach, gu h-àraidh às deidh grunn imrichean bho OS gu OS no tachartasan le call dàta air draibh cruaidh (b’ e seo a’ chùis anns a’ chùis agamsa).

Dìreach o chionn ghoirid, an dàrna cuid ann am brath pop-up air an làrach-lìn no ann an cuairt-litir bho GitHub, chaidh mothachadh a thoirt do CI / CD a chaidh a thogail às ùr, a leig leis na gnìomhan sin a dhèanamh gun mòran oidhirp.

Mu ghineadairean duilleag statach

Cha chuir mi fòcas sònraichte air an fho-chuspair seo, ach roinnidh mi tràchdas no dhà air an tàinig mi gu bhith a’ taghadh agus a’ cleachdadh na leanas:

1) tagh gineadair a tha iomchaidh don chànan prògramaidh agad, no fear a tha cho furasta a thuigsinn. Thàinig mi chun bheachd seo aig àm nuair a bha agam fhìn ri beagan gnìomh a chuir ris gus an obraich an làrach, cuir a-steach crutches airson barrachd seasmhachd agus fèin-ghluasad. A bharrachd air an sin, tha seo na adhbhar math airson gnìomhan a bharrachd a sgrìobhadh thu fhèin ann an cruth plugins;

2) dè an gineadair a thaghas tu a tha na roghainn pearsanta, ach is fhiach beachdachadh air, airson a’ chiad bhogadh ann an obair gnìomhachd GitHub Pages, feumaidh tu a stàladh an-toiseach Jekyll. Gu fortanach, leigidh e leat làrach-lìn a ghineadh bho thùsan gu dìreach san stòr (Cuiridh mi seo a-rithist le mo roghainn).

Tha mo roghainn gineadair stèidhichte air a 'chiad phuing. pelican a tha sgrìobhte ann am Python gu furasta an àite Jekyll, a tha cèin dhomh (chleachd e e airson faisg air bliadhna). Mar thoradh air an sin, tha eadhon a bhith a’ cruthachadh agus a’ deasachadh artaigilean agus ag obair air làrach-lìn a’ toirt eòlas a bharrachd ann an cànan a tha inntinneach dhomh.

__

Aithris dhuilgheadas

Is e a’ phrìomh obair sgriobt a sgrìobhadh (faidhle rèiteachaidh dha-rìribh) a ghineadh duilleagan statach gu fèin-ghluasadach bho stòr prìobhaideach. Bidh am fuasgladh a’ toirt a-steach gnìomhachd àrainneachd bhrìgheil. Cuiridh an sgriobt fhèin duilleagan deiseil ris an ionad-tasgaidh poblach.

Innealan airson fuasgladh

Innealan a chleachdas sinn gus an duilgheadas fhuasgladh:

  • Gnìomhan GitHub;
  • Python 3.7;
  • Pelican;
  • Git;
  • Duilleagan GitHub.

Fuasgladh dhuilgheadasan

Mar sin, an dèidh beagan eòlas fhaighinn air na sgrìobhainnean agus a 'tuigsinn mar a tha sgriobtaichean airson Gnìomhan air an sgrìobhadh, dh'fhàs e soilleir gum bi an dòigh seo gu tur a' fuasgladh na duilgheadas a tha air èirigh. Aig àm sgrìobhaidh, feumaidh tu fo-sgrìobhadh gus am feart seo a chleachdadh. airson deuchainn beta!

Gnìomhan GitHub mar CI / CD airson làrach air gineadair statach agus Duilleagan GitHub
Tuairisgeul air a’ ghnìomhachd ùr le Github fhèin

Bidh sgrìobhadh sgriobt Gnìomhan a’ tòiseachadh le bhith a’ cruthachadh faidhle ainmichte ann am pasgan .github agus a fo-phasgan workflows. Faodar seo a dhèanamh le làimh no bhon neach-deasachaidh anns an taba Gnìomhan air duilleag an stòrais.

Gnìomhan GitHub mar CI / CD airson làrach air gineadair statach agus Duilleagan GitHub
Eisimpleir de fhoirm sgriobt bàn

Bheir mi iomradh goirid air an fhoirm

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.

Sgrìobh sinn ar cuid fhèin stèidhichte air an teamplaid:

0) Faodaidh tu cuideachd an t-ainm “CI” fhàgail. Tha e na chùis blas.

1) An ath rud, feumaidh tu an gnìomh / brosnachaidh a thaghadh a chuireas air bhog an sgriobt, anns a’ chùis againn is e seo am putadh àbhaisteach de ghealladh ùr don stòr.

on:
  push

2) Fàgaidh sinn cuideachd an ìomhaigh air a bheil an sgriobt air a chuir air bhog mar eisimpleir, leis gu bheil Ubuntu gu math riaraichte leis a’ ghnìomhachd riatanach. A' coimhead air innealan a tha rim faighinn bidh e soilleir gum faod seo a bhith na ìomhaigh riatanach no dìreach goireasach (no inneal Docker stèidhichte air).

  build:
    runs-on: ubuntu-latest

3) Anns na ceumannan, cuiridh sinn air dòigh an àrainneachd an toiseach gus ullachadh airson a 'phrìomh obair.

3.1) rachaibh chun mheur a dh’ fheumas sinn (ceum àbhaisteach checkout):

- uses: actions/checkout@v1

3.2) stàlaich Python:

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

3.3) stàlaich eisimeileachd ar gineadair:

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

3.4) cruthaich eòlaire anns an tèid duilleagan na làraich a chruthachadh:

   - name: Make output folder
      run: mkdir output

4) Gus am bi an obair air an làrach cunbhalach, is e sin, gun a bhith a’ cuir às do na h-atharrachaidhean a bh’ ann roimhe agus a bhith comasach air atharrachaidhean a chuir air stòr na làraich gun strì, is e an ath cheum a bhith a’ clonadh stòr na làraich gach turas:

   - 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

Canaidh an ceum seo caochladairean siostam:

  • caochlaideach GITHUB_ACTOR Bidh GitHub ga stàladh fhèin, agus is e seo an t-ainm-cleachdaidh leis an deach an sgriobt seo a chuir air bhog;
  • caochlaideach secrets.ACCESS_TOKEN tha seo air a ghineadh comharra airson a bhith a’ stiùireadh Github, is urrainn dhuinn a thoirt seachad mar chaochladair àrainneachd le bhith ga shuidheachadh anns an taba Secrets na roghainnean tasgaidh againn. Thoir an aire gum bi an comharradh air a thoirt dhuinn aon uair rè ginealach, nach bi cothrom ann tuilleadh air. A bharrachd air luachan na nithean Secrets.

5) Gluaisidh sinn air adhart gu bhith a’ cruthachadh ar duilleagan:

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

Tha na paramadairean a thèid a chuir chun ghineadair an urra ris an eòlaire far an tèid na faidhlichean a chaidh a chruthachadh a chuir (-o output) agus am faidhle rèiteachaidh a chleachdas sinn airson a ghineadh (-s publishconf.py; Faodaidh tu leughadh mun dòigh-obrach airson an rèiteachadh ionadail a sgaradh agus an rèiteachadh airson fhoillseachadh anns na sgrìobhainnean Pelican).

Leig dhomh do chuimhneachadh dè tha sa phasgan againn output Chaidh clonadh a dhèanamh air stòr na làraich mu thràth.

6) Stèidhich sinn git agus clàraich na faidhlichean atharraichte againn:

    - 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

Aig an ìre seo, thathas a’ cleachdadh caochladair a tha aithnichte mar-thà, agus tha an eòlaire obrach air a chomharrachadh anns an tèid na h-òrdughan bhon cheum seo a chuir air bhog. Bhiodh an t-òrdugh airson a dhol dhan eòlaire obrach coltach ri - cd output.

7) Ginidh sinn teachdaireachd gealltanas, dèan na h-atharrachaidhean agus brùth iad a-steach don stòr. Gus nach bi an gealltanas dìomhain agus mar sin nach toir e a-mach mearachd ann am bash (chan eil an toradh toraidh 0) - an toiseach, feuch an dèan sinn cinnteach a bheil e riatanach rudeigin a ghealltainn agus a phutadh idir. Gus seo a dhèanamh bidh sinn a’ cleachdadh an àithne git diff-index --quiet --cached HEAD -- a bheir a-mach chun terminal 0 mura h-eil atharrachaidhean ann an coimeas ris an tionndadh roimhe den làrach, agus 1 tha atharrachaidhean mar sin ann. An uairsin bidh sinn a’ pròiseasadh toradh an àithne seo. Mar sin, anns an fhiosrachadh mu choileanadh an sgriobt, bidh sinn a 'clàradh fiosrachadh feumail mu staid na làraich aig an ìre seo, an àite a bhith a' bualadh gu fèin-obrachail agus a 'cur thugainn aithisg mun tubaist sgriobt.

Bidh sinn cuideachd a’ coileanadh nan gnìomhan sin san eòlaire againn le duilleagan deiseil.

   - 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

thoradh air

Mar thoradh air an sin, tha an leithid de sgriobt a 'leigeil leat gun a bhith a' smaoineachadh mu bhith a 'cruthachadh dhuilleagan statach. Le bhith a’ cur atharrachaidhean gu dìreach ri stòr prìobhaideach, ge bith an ann le bhith ag obair le git bho fo shiostam sam bith no a’ cruthachadh faidhle tro eadar-aghaidh lìn GitHub, nì Gnìomhan a h-uile càil iad fhèin. Ma thuiteas an sgriobt gun dùil, thèid fios a chuir chun phost-d agad.

Còd slàn

Fàgaidh mi an dreach obrach agam, anns a bheil an ceum mu dheireadh a’ cur fios gu bheil gealltanas air a phutadh chun phrìomh stòr.

Bithear a’ cleachdadh na Dìomhaireachd gu h-àrd, far am bi an tòcan bot agus an ID cleachdaiche ris am feumar an teachdaireachd a chuir.

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

Seallaidhean-sgrìn

Gnìomhan GitHub mar CI / CD airson làrach air gineadair statach agus Duilleagan GitHub
Toradh aon de na ruith a tha air a thaisbeanadh ann an tab Gnìomhan an stòr stòr

Gnìomhan GitHub mar CI / CD airson làrach air gineadair statach agus Duilleagan GitHub
Teachdaireachd bhon bot mu chrìochnachadh an sgriobt

Ceanglaichean feumail

Tuigse Gnìomhan
Co-chòrdadh gnìomhan
Liosta de na draibhearan
Roghainnean airson àrainneachdan brìgheil
Duilleagan Github
Liosta de gineadair statach

Source: www.habr.com

Cuir beachd ann