ProHoster > Блог > Nchịkwa > Omume GitHub dị ka CI/CD maka saịtị na generator static na ibe GitHub
Omume GitHub dị ka CI/CD maka saịtị na generator static na ibe GitHub
Mgbe m lechara Habr ntakịrị, ọ tụrụ m n'anya na ebipụtala akụkọ ole na ole n'isiokwu nke njirimara GitHub (beta) - Actions.
Ọ ga-adị ka enweghị nkọwa dị otú ahụ nwere ike ịkọwa site n'eziokwu na ọrụ ahụ ka na-anwale, n'agbanyeghị "beta". Mana ọ bụ njirimara bara uru nke beta nke na-enye ohere iji ngwá ọrụ a mee ihe na ebe nchekwa nzuzo. Ọ bụ maka ịrụ ọrụ na teknụzụ a ka m ga-ekwu maka ya n'isiokwu a.
Akụkọ ihe mere eme
Ọ bụrụ na anyị amalite n'usoro, mgbe ahụ, ọ ga-abụ na ọ bara uru ịkọ na n'ime usoro nke ịchọ ngwa ngwa, dị mfe, dị mfe na nhọrọ efu maka ịchekwa ebe nrụọrụ weebụ "About Me" nkeonwe, aghaghị m ịnọ ọtụtụ abalị na-agbakọta ọtụtụ isiokwu.
Ụfọdụ ndị na-ahọrọ Bochum, ndị ọzọ ihe nkesa ígwé ojii, na ndị na-achọghị ịghọta ọrụ, mmekọrịta na ugwo maka ihe a nile dị ka ibugo saịtị static na ebe nchekwa, ebe ọ bụ na ugbu a, nke a nwere ike ime na ma GitHub na GitLab .
N'ezie, nke a bụ nhọrọ onye ọ bụla.
Nhọrọ ikpeazụ m bụ GitHub Pages.
Banyere ibe
Onye na-amaghị gh-pages - nke a bụ nhọrọ maka ịchekwa akwụkwọ n'ụdị weebụsaịtị na a na-enye ya n'efu, na mgbakwunye na akwụkwọ, a na-atụkwa aro ka ịchekwa weebụsaịtị nkeonwe. GitHub na-enye ndị ọrụ niile ọrụ a ma dị na ntọala nchekwa.
Ebe nchekwa ọrụ na-eji alaka ụlọ ọrụ gh-pages, maka saịtị onye ọrụ - ebe nchekwa dị iche nwere aha username.github.io na isi mmalite saịtị na master alaka.
Ị nwere ike ịhụ nkọwa ndị ọzọ na akwụkwọ, mana ka m mara na GitHub na-emesapụ aka n'ụzọ dị ịtụnanya n'ikwe ka onye ọ bụla jikọta ngalaba nke ha na saịtị dị otú ahụ site na ịtinye faịlụ. CNAME na aha ngalaba na ịtọlite DNS nke onye na-eweta ngalaba gị na sava GitHub.
Eji m n'aka na enwere ọtụtụ akụkọ ebe a gbasara otu esi emepụta saịtị dị otú ahụ, nke mere na ọ bụghị ihe m ga-ekwu maka ya.
Nsogbu na-ebilite
Nsogbu bụ na mgbe ị na-eji generator static, ọ dị mkpa ka e dee ederede ọzọ ma jiri ụlọ akwụkwọ mee ka usoro ịmepụta ibe dị mfe na ịkwanye ha n'ime ebe nchekwa. Naanị, ọ bụrụ na ị na-echekwa isi mmalite na ebe nchekwa dị iche iche, mgbe ahụ, oge ọ bụla enwere mgbanwe ọ bụla na saịtị ahụ, ọ dị mkpa ịkwanye gburugburu ebe obibi maka ọgbọ na-esote nke ibe static na mbipụta na ebe nchekwa saịtị.
Enwere ụbara static generators na ha niile nwere otu nsogbu. Omume ndị a na-ewe oge na mgbalị dị ukwuu, na-emecha kwụsị ọrụ na saịtị ahụ, karịsịa mgbe ọtụtụ njem sitere na OS gaa na OS ma ọ bụ ihe mere na enweghị data na draịva siri ike. (Nke a bụ ikpe m).
Naanị n'oge na-adịbeghị anya, ma na ọkwa mmapụta na webụsaịtị ma ọ bụ na akwụkwọ akụkọ sitere na GitHub, ahụrụ CI/CD arụpụtara ọhụrụ, nke mere ka o kwe omume iji obere mbọ mee omume ndị a.
Banyere ndị na-emepụta ibe static
Agaghị m elekwasị anya pụrụ iche na mpaghara ihe a, mana m ga-ekekọrịta edemede ole na ole m bịara n'oge nhọrọ na ojiji nke ndị a:
1) họrọ generator nke dabara asụsụ mmemme gị, ma ọ bụ nke doro anya dịka o kwere mee. Abịara m n'echiche a n'oge mụ onwe m ga-agbakwunye ụfọdụ ọrụ maka saịtị ahụ iji rụọ ọrụ, tinye crutches maka nkwụsi ike ya na akpaaka. Na mgbakwunye, nke a bụ ezigbo ihe mere ị ga-eji dee ọrụ ọzọ n'onwe gị n'ụdị plugins;
2) nke generator ịhọrọ bụ nhọrọ nkeonwe, mana ọ bara uru ịtụle na maka ntinye mbụ na ọrụ nke GitHub Pages, ị ga-ebu ụzọ wụnye. Jekyll. Ọ dabara nke ọma, ọ na-enye gị ohere ịmepụta weebụsaịtị site na isi mmalite ozugbo na ebe nchekwa (M ga-emeghachi nke a na nhọrọ m).
Nhọrọ m nke generator dabeere na isi ihe mbụ. Pelikan nke e dere na Python dị mfe dochie Jekyll, nke bụụrụ m mba ọzọ (jiri ya ihe fọrọ nke nta ka ọ bụrụ otu afọ). N'ihi ya, ọbụna ịmepụta na idezi akụkọ na ịrụ ọrụ na webụsaịtị na-enyekwu ahụmahụ na asụsụ na-amasị m.
__
Ulationkpụzi nsogbu a
Isi ọrụ ga-abụ ide edemede (n'ezie faịlụ nhazi) nke ga-ewepụta ibe na-akpaghị aka site na ebe nchekwa nkeonwe. Ihe ngwọta ga-agụnye ọrụ nke gburugburu ebe obibi. Edemede n'onwe ya ga-agbakwunye ibe emebere na ebe nchekwa ọha.
Ngwa maka ngwọta
Ngwa ndị anyị ga-eji dozie nsogbu ahụ:
Omume GitHub;
Python3.7;
Pelican;
Git;
Ibe GitHub.
Nchọpụta nsogbu
Ya mere, mgbe ị matachara akwụkwọ ahụ ntakịrị ma ghọta otú e si ede ederede maka Actions, ọ bịara doo anya na usoro a ga-edozi nsogbu ahụ kpamkpam. N'oge ederede, ị ga-edebanye aha ka ị jiri ọrụ a.maka ule beta!
Nkọwa nke ọrụ ọhụrụ nke Github n'onwe ya
Ide edemede omume na-amalite site na ịmepụta faịlụ aha ya na nchekwa .github na nchekwa nchekwa ya workflows. Enwere ike ime nke a site na aka ma ọ bụ site na onye ndezi na taabụ omume na ibe nchekwa.
Ọmụmaatụ nke ụdị edemede efu
M ga-ekwu nkenke n'ụdị
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.
Ka anyị dee nke anyị dabere na template:
0) Ị nwekwara ike hapụ aha "CI". Ọ bụ ihe ụtọ.
1) Na-esote, ịkwesịrị ịhọrọ ihe omume / na-akpali akpali nke ga-amalite edemede ahụ, n'ọnọdụ anyị, nke a bụ ihe a na-emekarị nke ntinye ọhụrụ na ebe nchekwa.
on:
push
2) Anyị ga-ahapụkwa onyonyo a na ndabere nke a ga-ewepụta edemede ahụ dịka ọmụmaatụ, ebe ọ bụ na Ubuntu nwere afọ ojuju maka ọrụ dị mkpa. Na-ele anya ndị na-agba ọsọ ọ bịara doo anya na nke a nwere ike ịbụ ihe oyiyi ọ bụla dị mkpa ma ọ bụ dị mfe (ma ọ bụ akpa Docker dabere na ya).
build:
runs-on: ubuntu-latest
3) Na nzọụkwụ, anyị ga-ebu ụzọ guzobe gburugburu ebe obibi iji kwadebe maka isi ọrụ.
4) Ka ọrụ dị na saịtị ahụ wee na-agbanwe agbanwe, ya bụ, ọ bụghị ihichapụ mgbanwe ndị gara aga na inwe ike ịgbakwunye mgbanwe na ebe nchekwa saịtị na-enweghị esemokwu, nzọụkwụ ọzọ ga-abụ imechi ebe nchekwa saịtị oge ọ bụla:
mgbanwe GITHUB_ACTOR GitHub na-arụnye onwe ya, na nke a bụ aha njirimara nke sitere n'aka ya kpatara mmebi edemede a;
mgbanwe secrets.ACCESS_TOKEN nke a na-emepụta token maka ijikwa Github, anyị nwere ike ịgafe ya dị ka mgbanwe gburugburu ebe obibi site na ịtọ ya na taabụ Secrets ntọala nchekwa anyị. Biko mara na n'oge ọgbọ a ga-enye anyị akara ngosi otu ugboro, a gaghị enwe ohere ọzọ na ya. Yana ụkpụrụ nke ihe Nzuzo.
Ihe ndị a na-agafe na generator bụ maka ndekọ aha ebe a ga-eziga faịlụ ndị emepụtara (-o output) na faịlụ nhazi nke anyị na-eji mepụta (-s publishconf.py; Ị nwere ike ịgụ maka ụzọ a ga-esi kewaa nhazi mpaghara na nhazi maka mbipụta na akwụkwọ Pelican.).
Ka m chetara gị ihe dị na folda anyị output E mechilarị ebe nchekwa saịtị ahụ.
6) Ka anyị guzobe git wee depụta faịlụ anyị gbanwere:
N'oge a, a na-eji mgbanwe ama ama ama na-egosikwa akwụkwọ ndekọ aha nke a ga-ewepụta iwu sitere na usoro a. Iwu ịga na ndekọ ọrụ ga-adị ka- cd output.
7) Ka anyị wepụta ozi nkwa, mee mgbanwe ma tinye ha n'ime ebe nchekwa. Ya mere na ime ihe ahụ abụghị ihe efu ma ya mere ọ naghị emepụta njehie na bash (nsonaazụ mmepụta abụghị 0) — nke mbụ, ka anyị lelee ma ọ dị mkpa ime na ịkwanye ihe ọ bụla. Iji mee nke a, anyị na-eji iwu ahụ git diff-index --quiet --cached HEAD -- nke ga-apụta na njedebe 0 ọ bụrụ na enweghị mgbanwe n'ihe gbasara ụdị saịtị gara aga, na 1 enwere mgbanwe ndị dị otú ahụ. Mgbe ahụ anyị na-ahazi nsonaazụ nke iwu a. Ya mere, na ozi gbasara ogbugbu nke edemede ahụ, anyị ga-edekọ ozi bara uru banyere ọnọdụ saịtị ahụ n'oge a, kama ịdaba na-akpaghị aka na-ezigara anyị akụkọ banyere ọdịda edemede ahụ.
Anyị na-emekwa ihe ndị a n'akwụkwọ ndekọ aha anyị na ibe ndị emebere.
- 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
N'ihi
N'ihi ya, edemede dị otú ahụ na-enye gị ohere ịghara iche echiche ịmepụta ibe static. Site n'ịgbakwunye mgbanwe ozugbo na ebe nchekwa nkeonwe, ma site na iji git rụọ ọrụ n'okpuru sistemụ ọ bụla ma ọ bụ mepụta faịlụ site na GitHub web interface, Omume ga-eme ihe niile n'onwe ha. Ọ bụrụ na edemede ahụ daa na mberede, a ga-eziga ọkwa na email gị.
Koodu zuru oke
M ga-ahapụ ụdị ọrụ m, nke nzọụkwụ ikpeazụ na-agbakwụnye izipu ọkwa na ntinye aka na-akwaga na ebe nchekwa isi.
A na-eji ihe nzuzo ndị a kọwara n'elu, ebe a na-agbakwunye bot token na ID onye ọrụ nke ekwesịrị iziga ozi ahụ.