ProHoster > Pūnaewele > Nā Administration > Nā hana GitHub ma ke ʻano he CI/CD no kahi pūnaewele ma kahi mea hoʻoheheʻe static a me nā ʻaoʻao GitHub
Nā hana GitHub ma ke ʻano he CI/CD no kahi pūnaewele ma kahi mea hoʻoheheʻe static a me nā ʻaoʻao GitHub
Ma hope o ka ʻimi liʻiliʻi ʻana iā Habr, pīhoihoi wau i ka liʻiliʻi o nā ʻatikala i paʻi ʻia ma ke kumuhana o ka hiʻohiʻona o GitHub (beta) - Nā hana.
Me he mea lā hiki ke wehewehe ʻia kēlā ʻōlelo haʻahaʻa e ka ʻoiaʻiʻo e hoʻāʻo mau ana ka hana, ʻoiai ʻo "beta". Akā he hiʻohiʻona pono ia o ka beta e hiki ai i kēia mea hana ke hoʻohana ʻia i nā waihona pilikino. E pili ana i ka hana ʻana me kēia ʻenehana aʻu e kamaʻilio ai ma kēia ʻatikala.
Prehistory
Inā hoʻomaka mākou i ka hoʻonohonoho, a laila pono paha e haʻi aku i ka ʻimi ʻana i kahi koho wikiwiki, maʻalahi, maʻalahi a me ka manuahi no ka mālama ʻana i kahi pūnaewele pilikino "About Me", pono wau e noho i kekahi mau pō a hui pū i nā ʻatikala he nui.
Ke koho nei kekahi poʻe i ka hoʻokipa, ʻo nā mea ʻē aʻe he kikowaena kapua, a ʻo ka poʻe makemake ʻole e hoʻomaopopo i ka hana, ka launa pū ʻana a me ka uku no kēia mau mea a pau e like me ka hoʻouka ʻana i nā pūnaewele static i kahi waihona, no ka mea hiki ke hana ʻia kēia ma GitHub a me GitLab.
ʻOiaʻiʻo, ʻo kēia ke koho pilikino o kēlā me kēia kanaka.
ʻO kaʻu koho hope loa ʻo GitHub Pages.
E pili ana i nā ʻaoʻao
ʻO wai ka mea ʻike ʻole gh-pages - he koho kēia no ka mālama ʻana i nā palapala ma ke ʻano o kahi pūnaewele a hāʻawi ʻia me ka uku ʻole, a ma kahi o nā palapala, ua manaʻo ʻia e mālama i nā pūnaewele pilikino. Hāʻawi ʻia kēia hana e GitHub i nā mea hoʻohana āpau a loaʻa i nā hoʻonohonoho waihona.
Hoʻohana ka waihona papahana i kahi lālā gh-pages, no kahi kahua hoʻohana - kahi waihona ʻokoʻa me ka inoa username.github.io me nā kumu pūnaewele ma master lālā.
Hiki iā ʻoe ke ʻike i nā kikoʻī hou aku ma ka palapala, akā, e ʻae mai iaʻu e hoʻomaopopo wale aku ʻo GitHub i ka lokomaikaʻi i ka ʻae ʻana i kekahi e hoʻopili i kā lākou pūnaewele ponoʻī i kahi pūnaewele ma ka hoʻohui ʻana i kahi faila. CNAME me ka inoa kikowaena a me ka hoʻonohonoho ʻana i ka DNS o kāu mea hoʻolako kikowaena ma nā kikowaena GitHub.
ʻIke wau he nui nā ʻatikala ma aneʻi e pili ana i ka hoʻomohala ʻana i kahi pūnaewele, no laila ʻaʻole ia kaʻu e kamaʻilio hou aku ai.
Pilikia
ʻO ka pilikia, i ka wā e hoʻohana ai i kahi mea hoʻoheheʻe static, pono e kākau i nā palapala hou a hoʻohana i nā hale waihona puke e maʻalahi i ke kaʻina hana o ka hana ʻana i nā ʻaoʻao a hoʻouka iā lākou i loko o ka waihona. ʻO ka maʻalahi, inā mālama ʻoe i nā kumu i loko o kahi waihona pilikino kaʻawale, a laila i kēlā me kēia manawa ke hoʻololi ʻia ma ka pūnaewele, pono ia e hoʻolālā i ke kaiapuni kūloko no ka hanauna ma hope o nā ʻaoʻao static a me ka hoʻolaha ʻana i ka waihona pūnaewele nui.
Aia ka nui nā mea hoʻoheheʻe paʻa a he pilikia like ko lakou a pau. Nui ka manawa a me ka hoʻoikaika ʻana o kēia mau hana, a hoʻolohi i ka hana ma ka pūnaewele, ʻoi aku ma hope o kekahi mau neʻe ʻana mai OS a i OS a i ʻole nā hanana me ka nalowale ʻana o ka ʻikepili ma nā pahu paʻakikī. (ʻo ia ka hihia i koʻu hihia).
ʻO ka mea i hala koke iho nei, ma kahi hoʻolaha pop-up ma ka pūnaewele a i ʻole ma kahi nūhou mai GitHub, ua ʻike ʻia kahi CI/CD hou i kūkulu ʻia, e hiki ai ke hana ʻia kēia mau hana me ka hoʻoikaika liʻiliʻi.
E pili ana i nā mea hana ʻaoʻao static
ʻAʻole au e kau i ka manaʻo kūikawā ma kēia ʻatikala, akā e kaʻana aku wau i kekahi mau kumuhana aʻu i hele mai ai i ke koho ʻana a me ka hoʻohana ʻana i kēia mau mea:
1) E koho i ka mīkini hana i kūpono i kāu ʻōlelo hoʻolālā, a i ʻole ka ʻōlelo maopopo loa. Ua hele au i kēia manaʻo i ka manawa aʻu iho e hoʻohui i kekahi mau hana no ka pūnaewele e hana, hoʻohui i nā koʻokoʻo no kona kūpaʻa a me ka automation. Eia kekahi, he kumu maikaʻi kēia e kākau ai i nā hana hou iā ʻoe iho ma ke ʻano o nā plugins;
2) ʻo ka mea hoʻoheheʻe e koho ai he koho pilikino, akā pono e noʻonoʻo ʻia no ka hoʻomaʻamaʻa mua ʻana i ka hana o ka hana ʻo GitHub Pages, pono ʻoe e hoʻokomo mua. ʻO Iekyll. ʻO ka mea pōmaikaʻi, hiki iā ʻoe ke hana i kahi pūnaewele mai nā kumu i loko o ka waihona (E hana hou wau i kēia me kaʻu koho).
ʻO kaʻu koho o ka generator e pili ana i ka helu mua. Pelika ʻO ka mea i kākau ʻia ma Python ua hoʻololi maʻalahi iā Jekyll, kahi mea ʻē iaʻu (hoʻohana ia no kahi kokoke i hoʻokahi makahiki). ʻO ka hopena, ʻo ka hana ʻana a me ka hoʻoponopono ʻana i nā ʻatikala a me ka hana ʻana ma kahi pūnaewele e hāʻawi i ka ʻike hou aku ma kahi ʻōlelo hoihoi iaʻu.
__
Ka hoʻokumu ʻana i ka pilikia
ʻO ka hana nui, ʻo ia ke kākau ʻana i kahi palapala (ʻoiaʻiʻo he faila hoʻonohonoho) e hoʻopuka koke i nā ʻaoʻao static mai kahi waihona pilikino. E pili ana ka hoʻonā i ka hana o kahi kaiapuni virtual. Na ka ʻatikala ponoʻī e hoʻohui i nā ʻaoʻao i mākaukau i ka waihona lehulehu.
Nā mea hana no ka hoʻonā
Nā mea hana a mākou e hoʻohana ai e hoʻoponopono i ka pilikia:
Nā hana GitHub;
Python3.7;
Pelican;
Git;
Nā ʻaoʻao GitHub.
ʻO ka pilikia
No laila, ma hope o ka hoʻomaʻamaʻa liʻiliʻi ʻana i ka palapala a me ka hoʻomaopopo ʻana i ke kākau ʻana o nā scripts for Actions, ua ʻike ʻia e hoʻopau loa kēia mīkini i ka pilikia i kū mai. I ka manawa kākau, pono ʻoe e kau inoa e hoʻohana i kēia hana.no ka hoʻāʻo beta!
ʻO ka wehewehe ʻana i ka hana hou e Github ponoʻī
Hoʻomaka ke kākau ʻana i kahi palapala Actions ma ka hana ʻana i kahi faila i kapa ʻia i loko o kahi waihona .github a me kona waihona waihona workflows. Hiki ke hana me ka lima a i ʻole mai ka mea hoʻoponopono ma ka pā Hana ma ka ʻaoʻao waihona.
Ka laʻana o kahi palapala palapala hakahaka
E ʻōlelo pōkole wau i ka palapala
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.
E kākau kāua i kā mākou iho ma muli o ke kumu hoʻohālike:
0) Hiki iā ʻoe ke waiho i ka inoa "CI". He mea ʻono.
1) A laila, pono ʻoe e koho i ka hana / trigger e hoʻomaka i ka palapala, i kā mākou hihia, ʻo ia ka pana maʻamau o kahi hana hou i ka waihona.
on:
push
2) E waiho pū mākou i ke kiʻi ma ke kumu e hoʻomaka ʻia ai ka palapala ma ke ʻano he laʻana, no ka mea, ua ʻoluʻolu ʻo Ubuntu i ka hana pono. Ke nana nei mea paahana i loaa ʻike ʻia he kiʻi pono a kūpono paha kēia (a i ʻole kahi pahu Docker e pili ana iā ia).
build:
runs-on: ubuntu-latest
3) Ma nā ʻanuʻu, e hoʻonohonoho mua mākou i ke kaiapuni e hoʻomākaukau no ka hana nui.
3.1) hele i ka lālā e pono ai mākou (paepae maʻamau checkout):
- uses: actions/checkout@v1
3.2) hoʻokomo iā Python:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.7
3.3) hoʻokomo i nā mea hilinaʻi o kā mākou generator:
3.4) hana i kahi papa kuhikuhi kahi e hana ʻia ai nā ʻaoʻao pūnaewele:
- name: Make output folder
run: mkdir output
4) I mea e paʻa ai ka hana ma ka pūnaewele, ʻo ia hoʻi, ʻaʻole e holoi i nā hoʻololi mua a hiki ke hoʻohui i nā loli i ka waihona pūnaewele me ka ʻole o nā paio, ʻo ka hana aʻe e hoʻopili i ka waihona pūnaewele i kēlā me kēia manawa:
loli GITHUB_ACTOR Hoʻokomo ʻo GitHub iā ia iho, a ʻo ia ka inoa inoa nona ka hewa i hoʻomaka ai kēia palapala;
loli secrets.ACCESS_TOKEN hana ʻia kēia hōʻailona no ka mālama ʻana iā Github, hiki iā mākou ke hāʻawi iā ia ma ke ʻano he hoʻololi kaiapuni ma ka hoʻonohonoho ʻana iā ia ma ka pā Secrets kā mākou hoʻonohonoho waihona. E ʻoluʻolu e hoʻomaopopo i ka wā o ka hanauna e hāʻawi ʻia ka hōʻailona iā mākou i hoʻokahi manawa, ʻaʻole e loaʻa hou iā ia. A me nā waiwai o nā mea huna.
ʻO nā palena i hāʻawi ʻia i ka generator ke kuleana no ka papa kuhikuhi kahi e hoʻouna ʻia ai nā faila i hana ʻia (-o output) a me ka faila hoʻonohonoho a mākou e hoʻohana ai e hana (-s publishconf.py; Hiki iā ʻoe ke heluhelu e pili ana i ke ala e hoʻokaʻawale ai i ka config kūloko a me ka config no ka paʻi ʻana i ka palapala Pelican).
E hoʻomanaʻo wau i ka mea i loko o kā mākou waihona output Ua hoʻopili ʻia ka waihona pūnaewele.
6) E hoʻonohonoho i ka git a kuhikuhi i kā mākou mau faila i hoʻololi ʻia:
I kēia manawa, hoʻohana ʻia kahi ʻano hoʻololi i ʻike ʻia a hōʻike ʻia ka papa kuhikuhi hana kahi e hoʻomaka ai nā kauoha mai kēia kaʻina. E like paha ke kauoha e hele i ka papa kuhikuhi hana - cd output.
7) E hana mākou i kahi memo commit, e hana i nā hoʻololi a hoʻokomo iā lākou i loko o ka waihona. No laila ʻaʻole i makehewa ka hana a no laila ʻaʻole i hana hewa i ka bash (ʻaʻole ka hopena hopena 0) — ʻo ka mua, e nānā kākou inā pono e hoʻokō a paʻi i kekahi mea. No ka hana ʻana i kēia, hoʻohana mākou i ke kauoha git diff-index --quiet --cached HEAD -- ka mea e hoʻopuka i ka terminal 0 inā ʻaʻohe hoʻololi e pili ana i ka mana mua o ka pūnaewele, a 1 aia nā hoʻololi like. A laila hana mākou i ka hopena o kēia kauoha. No laila, i ka ʻike e pili ana i ka hoʻokō ʻana i ka palapala, e hoʻopaʻa mākou i ka ʻike kūpono e pili ana i ka mokuʻāina o ka pūnaewele i kēia manawa, ma kahi o ka hāʻule ʻokoʻa ʻana a hoʻouna mai iā mākou i kahi hōʻike e pili ana i ka hāʻule ʻana o ka script.
Hana pū mākou i kēia mau hana ma kā mākou papa kuhikuhi me nā ʻaoʻao i mākaukau.
- 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
hopena
ʻO ka hopena, ʻo ia ʻano palapala e ʻae iā ʻoe ʻaʻole e noʻonoʻo e pili ana i ka hana ʻana i nā ʻaoʻao static. Ma ka hoʻohui pololei ʻana i nā hoʻololi i kahi waihona pilikino, inā ma ka hana ʻana me git mai lalo o kekahi ʻōnaehana a i ʻole ka hana ʻana i kahi faila ma o ka pūnaewele pūnaewele GitHub, e hana nā hana i nā mea āpau iā lākou iho. Inā hāʻule ʻole ka ʻatikala, e hoʻouna ʻia kahi leka i kāu leka uila.
Code piha
E haʻalele wau i kaʻu hana hana, kahi e hoʻohui ai ka hana hope i ka hoʻouna ʻana i kahi leka hoʻomaopopo ua hoʻokau ʻia kahi hana i ka waihona nui.
Hoʻohana ʻia nā mea huna i hōʻike ʻia ma luna, kahi e hoʻohui ʻia ai ka hōʻailona bot a me ka ID mea hoʻohana e hoʻouna ʻia ai ka leka.