
Ngemva kokumhlola kancane u-Habr, ngamangala ukuthi zimbalwa kakhulu izindatshana ezishicilelwe esihlokweni sesici sika-GitHub's (beta) - Izenzo.
Kungase kubonakale sengathi lokho kuchaza kancane kungachazwa ngokuthi ukusebenza kusahlolwa, nakuba "i-beta". Kodwa isici esiwusizo se-beta esivumela leli thuluzi ukuthi lisetshenziswe ezindaweni zokugcina eziyimfihlo. Mayelana nokusebenza nalobu buchwepheshe engizokhuluma ngabo kulesi sihloko.
Umlando wangaphambili
Uma siqala ngokulandelana, khona-ke kuhle ukusho ukuthi ngesikhathi sokufuna inketho esheshayo, elula, elula futhi yamahhala yokugcina iwebhusayithi yomuntu siqu ethi "Mayelana Nami", kwadingeka ngichithe ubusuku obuningana futhi ngihlanganise izihloko eziningi.
Abanye abantu bakhetha ukusingathwa, abanye iseva yefu, nalabo abangafuni ukuqonda umsebenzi, ukusebenzisana kanye nenkokhelo yakho konke lokhu njengokulayisha amasayithi amile endaweni yokugcina, kusukela manje lokhu kungenziwa kokubili i-GitHub ne-GitLab.
Yiqiniso, lokhu kuyisinqumo sawo wonke umuntu.
Ukukhetha kwami kokugcina bekuyi-GitHub Pages.
Mayelana Namakhasi
Ubani ongazi gh-pages - lena inketho yokugcina imibhalo ngendlela yewebhusayithi futhi inikezwa mahhala, futhi ngaphezu kwemibhalo, kuhlongozwa nokuthi kugcinwe amawebhusayithi omuntu. Lokhu kusebenza kunikezwa i-GitHub kubo bonke abasebenzisi futhi kuyatholakala kuzilungiselelo zekhosombe.
Inqolobane yephrojekthi isebenzisa igatsha gh-pages, kusayithi lomsebenzisi - indawo yokugcina ehlukile enegama username.github.io ngemithombo yesayithi ku master igatsha.
Ungabona imininingwane eyengeziwe , kodwa ake ngiqaphele ukuthi i-GitHub inomusa ngokumangalisayo ngokuvumela noma ubani ukuthi axhumanise isizinda sakhe kusayithi elinjalo ngokumane wengeze ifayela. CNAME ngegama lesizinda nokusetha i-DNS yomhlinzeki wakho wesizinda kumaseva e-GitHub.
Nginesiqiniseko sokuthi ziningi izindatshana lapha ezimayelana nendlela yokuthuthukisa isiza esinjalo, ngakho-ke akukhona lokho engisazokhuluma ngakho ngokuqhubekayo.
Inkinga iyavela
Inkinga yayiwukuthi lapho usebenzisa ijeneretha emile, kunesidingo sokubhala imibhalo eyengeziwe nokusebenzisa imitapo yolwazi ukuze kube lula inqubo yokukhiqiza amakhasi nokuwalayisha endaweni yokugcina. Kalula nje, uma ugcina imithombo endaweni yokugcina eyimfihlo ehlukile, khona-ke ngaso sonke isikhathi lapho kukhona noma yiluphi ushintsho esizeni, bekudingeka ukuthi kusetshenziswe indawo yendawo ukuze kusungulwe amakhasi amile kanye nokushicilelwa endaweni eyinhloko yendawo yokugcina.
Kukhona inala futhi bonke banenkinga efanayo. Lezi zenzo zithatha isikhathi esiningi nomzamo, futhi ekugcineni zibambezela umsebenzi kusayithi, ikakhulukazi ngemva kokufuduka okuningana ukusuka ku-OS kuya ku-OS noma izigameko zokulahleka kwedatha kuma-hard drive. (kwakunjalo kimi).
Muva nje, kungaba kusaziso se-pop-up kuwebhusayithi noma ku-newsletter evela ku-GitHub, kuqashelwe i-CI/CD esanda kwakhiwa, evumele lezi zenzo ukuthi zenziwe ngomzamo omncane.
Mayelana namajeneretha amakhasi amile
Ngeke ngigxilise ukunaka okukhethekile kule nto encanyana, kodwa ngizokwabelana ngemibono embalwa engifike kuyo ngesikhathi ngikhetha nokusebenzisa okulandelayo:
1) khetha ijeneretha evumelana nolimi lwakho lohlelo, noma ecace ngangokunokwenzeka. Ngifike kulo mbono ngesikhathi lapho mina ngokwami kufanele ngengeze ukusebenza okuthile ukuze isayithi lisebenze, ngengeze izinduku zokuzinza ukuze libe nokuzinza okukhulu nokuzenzakalela. Ngaphezu kwalokho, lesi yisizathu esihle sokubhala ukusebenza okwengeziwe ngokwakho ngendlela yama-plugin;
2) iyiphi ijeneretha ongakhetha ukuyikhetha, kodwa kufanelekile ukucabangela ukuthi ukucwiliswa kokuqala emsebenzini wokusebenza kwamakhasi we-GitHub, kufanele uqale ufake . Ngenhlanhla, ikuvumela ukuthi ukhiqize iwebhusayithi kusuka emithonjeni ngqo endaweni yokugcina (Ngizophinda lokhu ngokukhetha kwami).
Ukukhetha kwami i-generator kusekelwe ephuzwini lokuqala. ebhalwe ngePython ithatha indawo kaJekyll kalula, engingayazi (usebenzise cishe unyaka). Ngenxa yalokho, ngisho nokudala nokuhlela izindatshana kanye nokusebenza kuwebhusayithi kunikeza ulwazi olwengeziwe ngolimi olungithakaselayo.
__
Ukwakheka kwenkinga
Umsebenzi oyinhloko kuzoba ukubhala umbhalo (empeleni ifayela lokumisa) elizokhiqiza ngokuzenzakalelayo amakhasi amile asuka endaweni yokugcina eyimfihlo. Isixazululo sizobandakanya ukusebenza kwendawo ebonakalayo. Umbhalo ngokwawo uzongeza amakhasi enziwe ngomumo endaweni yokugcina yomphakathi.
Amathuluzi esixazululo
Amathuluzi esizowasebenzisa ukuxazulula inkinga:
- Izenzo ze-GitHub;
- I-Python 3.7;
- I-Pelican;
- I-Git;
- Amakhasi we-GitHub.
Ukuxazulula izinkinga
Ngakho-ke, ngemva kokujwayelana nemibhalo kancane nokuqonda ukuthi imibhalo yezenzo ibhalwe kanjani, kwacaca ukuthi le nqubo izoxazulula ngokuphelele inkinga ekhona. Ngesikhathi sokubhala, kufanele ubhalise ukuze usebenzise lolu hlelo lokusebenza. !

Incazelo yokusebenza okusha kwe-Github ngokwayo
Ukubhala iskripthi Sezenzo kuqala ngokwakha ifayela elinegama kufolda .github kanye nefolda yayo engaphansi workflows. Lokhu kungenziwa ngokwenza noma kumhleli kuthebhu ethi Izenzo ekhasini lenqolobane.

Isibonelo sefomu lesikripthi esingenalutho
Ngizophawula kafushane ngefomu
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.Masibhale ezethu ngokusekelwe kusifanekiso:
0) Ungakwazi futhi ukushiya igama elithi "CI". Kuyindaba yokunambitha.
1) Okulandelayo, udinga ukukhetha isenzo/i-trigger ezokwethula iskripthi, kithina lokhu ukucindezela okujwayelekile kokuzibophezela okusha endaweni yokugcina.
on:
push2) Sizophinde sishiye isithombe ngesisekelo lapho iskripthi sizokwethulwa njengesibonelo, njengoba Ubuntu benelisekile ngokusebenza okudingekayo. Bukela i kuyacaca ukuthi lokhu kungaba yinoma yisiphi isithombe esidingekayo noma esilula (noma isitsha se-Docker esisekelwe kuso).
build:
runs-on: ubuntu-latest3) Ezinyathelweni, sizoqala simise imvelo ukuze silungiselele umsebenzi oyinhloko.
3.1) iya egatsheni esilidingayo (isinyathelo esijwayelekile checkout):
- uses: actions/checkout@v13.2) faka iPython:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.73.3) faka ukuncika kwejeneretha yethu:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt3.4) dala uhla lwemibhalo lapho amakhasi esayithi azokhiqizwa khona:
- name: Make output folder
run: mkdir output4) Ukuze umsebenzi esakhiweni uhambisane, okungukuthi, ukungasusi izinguquko zangaphambilini futhi ukwazi ukwengeza izinguquko endaweni yesikhombi ngaphandle kwezingxabano, isinyathelo esilandelayo kuzoba ukuhlanganisa inqolobane yesayithi isikhathi ngasinye:
- name: Clone master branch
run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./outputLesi sinyathelo sibiza okuguquguqukayo kwesistimu:
- okuguquguqukayo
GITHUB_ACTORI-GitHub iyazifaka yona, futhi leli igama lomsebenzisi okuye kwaqaliswa ngalo iphutha lesi script; - okuguquguqukayo
secrets.ACCESS_TOKENlokhu kukhiqizwa , singayidlulisela njengokuguquguquka kwendawo ngokuyibeka kuthebhuSecretsizilungiselelo zethu zokugcina. Sicela uqaphele ukuthi ngesikhathi sokukhiqiza ithokheni izohlinzekwa kithi kanye, ngeke kusaba khona ukufinyelela kulo. Kanye namanani wezinto Eziyimfihlo.
5) Masiqhubekele phambili ekukhiqizeni amakhasi ethu:
- name: Generate static pages
run: pelican content -o output -s publishconf.pyAmapharamitha adluliselwe kujeneretha anesibopho senkomba lapho amafayela akhiqiziwe azothunyelwa khona (-o output) kanye nefayela lokumisa esilisebenzisayo ukwenza (-s publishconf.py; Ungafunda mayelana nendlela yokuhlukanisa ukucushwa kwendawo kanye nokuhlelwa kokushicilelwa kumadokhumenti e-Pelican.).
Ake ngikukhumbuze okukufolda yethu output Inqolobane yesayithi isivele yenziwe yakhiwe.
6) Masimise i-git bese sikhomba amafayela ethu ashintshiwe:
- 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: ./outputKuleli qophelo, okuguquguqukayo osekwaziwa kakade kuyasetshenziswa futhi uhla lwemibhalo olusebenzayo lukhonjisiwe lapho kuzokwethulwa khona imiyalo evela kulesi sinyathelo. Umyalo wokuya kumkhombandlela osebenzayo ubungabukeka sengathi - cd output.
7) Ake sikhiqize umlayezo wokuzibophezela, senze izinguquko futhi sizifake endaweni yokugcina. Ukuze ukuzinikela akulona ize ngakho-ke akukhiqizi iphutha ku-bash (umphumela wokuphuma awukho 0) — okokuqala, ake sihlole ukuthi kudingekile yini ukuzibophezela nokuphusha okuthile. Ukwenza lokhu sisebenzisa umyalo git diff-index --quiet --cached HEAD -- ezophuma kutheminali 0 uma zingekho izinguquko ezihlobene nenguqulo yangaphambilini yesayithi, futhi 1 zikhona izinguquko ezinjalo. Bese sicubungula umphumela walo myalo. Ngakho-ke, olwazini olumayelana nokukhishwa kweskripthi, sizorekhoda ulwazi oluwusizo mayelana nesimo sesayithi kulesi sigaba, esikhundleni sokuphahlazeka ngokuzenzakalelayo futhi sithumele umbiko mayelana nokuphahlazeka kweskripthi.
Siphinde senza lezi zenzo kunkomba yethu ngamakhasi enziwe ngomumo.
- 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: ./outputUmphumela
Ngenxa yalokho, iskripthi esinjalo sikuvumela ukuthi ungacabangi ngokudala amakhasi amile. Ngokungeza izinguquko ngqo endaweni yokugcina yangasese, kungakhathaliseki ukuthi ngokusebenza ne-git kunoma iyiphi isistimu noma ngokudala ifayela ngokusebenzisa isixhumi esibonakalayo sewebhu ye-GitHub, Izenzo zizokwenza yonke into ngokwazo. Uma umbhalo uphahlazeka kungazelelwe, isaziso sizothunyelwa ku-imeyili yakho.
Ikhodi egcwele
Ngizoshiya inguqulo yami yokusebenza, lapho isinyathelo sokugcina sengeza ukuthumela isaziso sokuthi isivumelwano siphushelwe endaweni yokugcina enkulu.
Izimfihlo ezichazwe ngenhla zisetshenziswa, lapho ithokheni ye-bot kanye ne-ID yomsebenzisi okumele umlayezo uthunyelwe kuyo yengezwe.
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: ./outputIzithombe-skrini

Umphumela wokukodwa kokuqalisa oboniswe kuthebhu ethi Izenzo yekhosombe lomthombo

Umlayezo ovela ku-bot mayelana nokuqedwa kombhalo
Izixhumanisi eziwusizo
Source: www.habr.com
