ڪير نه ٿو ڄاڻي gh-pages - هي هڪ ويب سائيٽ جي صورت ۾ دستاويزن کي ذخيرو ڪرڻ لاء هڪ اختيار آهي ۽ اهو مفت مهيا ڪيو ويو آهي، ۽ دستاويزن کان علاوه، اهو پڻ تجويز ڪيل آهي ذاتي ويب سائيٽن کي ذخيرو ڪرڻ لاء. هي ڪارڪردگي GitHub پاران سڀني صارفين کي مهيا ڪئي وئي آهي ۽ مخزن جي سيٽنگن ۾ موجود آهي.
پروجيڪٽ مخزن هڪ شاخ استعمال ڪري ٿو gh-pages, هڪ صارف جي سائيٽ لاء - نالي سان هڪ الڳ مخزن username.github.io سائيٽ جي ذريعن سان master شاخ.
توھان وڌيڪ تفصيل ڏسي سگھو ٿا دستاويز ۾، پر مون کي صرف نوٽ ڪرڻ ڏيو ته GitHub حيرت انگيز طور تي فياض آهي هر ڪنهن کي اجازت ڏيڻ جي اجازت ڏيڻ ۾ پنهنجي پنهنجي ڊومين کي اهڙي سائيٽ سان ڳنڍڻ لاءِ صرف هڪ فائل شامل ڪندي CNAME ڊومين جي نالي سان ۽ GitHub سرورز تي توهان جي ڊومين فراهم ڪندڙ جي DNS کي ترتيب ڏيڻ.
مون کي پڪ آهي ته هتي ڪيترائي آرٽيڪل موجود آهن ته اهڙي سائيٽ کي ڪيئن ڊولپ ڪيو وڃي، تنهن ڪري اهو نه آهي جيڪو آئون اڳتي ڳالهائڻ وارو آهيان.
هڪ مسئلي جو واقعو
مسئلو اهو هو ته جڏهن هڪ جامد جنريٽر استعمال ڪيو وڃي، اتي اضافي اسڪرپٽ لکڻ جي ضرورت آهي ۽ صفحا ٺاهڻ ۽ انهن کي مخزن ۾ لوڊ ڪرڻ جي عمل کي آسان ڪرڻ لاءِ لائبريريون استعمال ڪرڻ گهرجن. بس، جيڪڏهن توهان ذريعن کي هڪ الڳ خانگي مخزن ۾ ذخيرو ڪريو ٿا، ته پوءِ هر ڀيري سائيٽ تي ڪا به تبديلي اچي ٿي، ان لاءِ ضروري هو ته مقامي ماحول کي ايندڙ نسل جي جامد صفحن ۽ اشاعت جي مکيه سائيٽ جي مخزن ۾ ترتيب ڏيو.
ڪثرت آهي جامد جنريٽر ۽ انهن سڀني کي ساڳيو مسئلو آهي. اهي ڪارناما تمام گهڻو وقت ۽ ڪوشش وٺن ٿا، ۽ آخرڪار سائيٽ تي ڪم کي سست ڪري ٿو، خاص طور تي OS کان OS ڏانهن ڪيترن ئي لڏپلاڻ کان پوء يا هارڊ ڊرائيو تي ڊيٽا جي نقصان سان واقعا. (منهنجي صورت ۾ اهو معاملو هو).
تازو ئي، يا ته ويب سائيٽ تي هڪ پاپ اپ نوٽيفڪيشن ۾ يا GitHub جي هڪ نيوز ليٽر ۾، هڪ نئون ٺهيل CI/CD نظر آيو، جنهن انهن عملن کي گهٽ ۾ گهٽ ڪوشش سان ڪرڻ جي اجازت ڏني.
جامد صفحو جنريٽر بابت
مان هن ذيلي مضمون تي خاص توجه نه ڏيندس، پر مان ڪجھ ٿورا شيئر ڪندس جيڪي مون کي ھيٺين جي چونڊ ۽ استعمال دوران آيو.
1) ھڪڙو جنريٽر چونڊيو جيڪو توھان جي پروگرامنگ ٻولي کي مناسب بڻائي، يا ھڪڙو جيڪو ممڪن طور تي صاف آھي. مون کي اهو خيال ان وقت آيو جڏهن مون پاڻ کي سائيٽ لاءِ ڪم ڪرڻ لاءِ ڪجهه ڪارڪردگي شامل ڪرڻي هئي، ان جي وڌيڪ استحڪام ۽ آٽوميشن لاءِ ڪڇ شامل ڪرڻي هئي. اضافي طور تي، اهو هڪ سٺو سبب آهي اضافي ڪارڪردگي پاڻ کي پلگ ان جي صورت ۾ لکڻ لاء؛
2) جيڪو جنريٽر چونڊڻ لاءِ هڪ ذاتي پسند آهي، پر اهو غور ڪرڻ جي قابل آهي ته GitHub صفحن جي ڪارڪردگي جي ڪم ۾ ابتدائي وسعت لاءِ، توهان کي پهريان انسٽال ڪرڻ گهرجي. Jekll. خوشقسمتيء سان، اهو توهان کي اجازت ڏئي ٿو ويب سائيٽ ٺاهي ذريعن کان سڌو سنئون مخزن ۾ (مان پنهنجي پسند سان ورجائيندس).
جنريٽر جو منهنجو انتخاب پهرين نقطي تي ٻڌل آهي. پيليڪن جيڪو پٿون ۾ لکيل آهي آساني سان Jekyll کي تبديل ڪيو ويو، جيڪو مون لاء غير ملڪي آهي (تقريبن هڪ سال تائين استعمال ڪيو). نتيجي طور، آرٽيڪل ٺاهڻ ۽ ايڊٽ ڪرڻ ۽ ويب سائيٽ تي ڪم ڪرڻ هڪ ٻولي ۾ اضافي تجربو ڏئي ٿو جيڪا مون لاءِ دلچسپ آهي.
__
مسئلو جي ترتيب
مکيه ڪم هڪ رسم الخط لکڻ هوندو (اصل ۾ هڪ ترتيب واري فائيل) جيڪو خودڪار طور تي هڪ خانگي مخزن مان جامد صفحا ٺاهيندو. حل ۾ هڪ مجازي ماحول جي ڪارڪردگي شامل هوندي. اسڪرپٽ خود تيار ڪيل صفحا شامل ڪندو عوامي مخزن ۾.
حل لاءِ اوزار
اوزار جيڪي اسان استعمال ڪنداسين مسئلو حل ڪرڻ لاء:
GitHub عمل؛
پٿون 3.7؛
پيليڪن؛
گيت؛
GitHub صفحا.
مسئلا حل ڪرڻ
تنهن ڪري، دستاويزن کان ٿورو واقف ٿيڻ کان پوء ۽ سمجھڻ کان پوء ڪئين اسڪرپٽ لکندا آهن ڪارناما، اهو واضح ٿي ويو ته هي ميکانيزم مڪمل طور تي اهو مسئلو حل ڪندو. لکڻ جي وقت، توهان کي هن فنڪشنلٽي کي استعمال ڪرڻ لاء رڪنيت حاصل ڪرڻ گهرجي.بيٽا ٽيسٽ لاءِ!
Github پاران نئين ڪارڪردگي جو تفصيل
ايڪشن اسڪرپٽ لکڻ شروع ٿئي ٿو فولڊر ۾ نالي واري فائل ٺاهي .github ۽ ان جو ذيلي فولڊر workflows. اهو يا ته دستي طور تي ٿي سگهي ٿو يا مخزن واري صفحي تي ايڪشن ٽيب ۾ ايڊيٽر کان.
خالي اسڪرپٽ فارم جو مثال
مان مختصر طور تي فارم تي تبصرو ڪندس
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.
1) اڳيون، توهان کي عمل / ٽرگر کي چونڊڻ جي ضرورت آهي جيڪا اسڪرپٽ لانچ ڪندي، اسان جي صورت ۾ هي مخزن ڏانهن نئين عزم جو معمولي ڌڪ آهي.
on:
push
2) اسان تصوير کي به ڇڏينداسين جنهن جي بنياد تي اسڪرپٽ لانچ ڪيو ويندو مثال طور، ڇو ته Ubuntu ضروري ڪارڪردگي سان بلڪل مطمئن آهي. ڏسي رهيو آهي ڊريسٽيڪٽ اهو واضح ٿئي ٿو ته هي ڪنهن به ضروري يا آسان تصوير ٿي سگهي ٿو (يا هڪ ڊاکر ڪنٽينر ان جي بنياد تي).
build:
runs-on: ubuntu-latest
3) قدمن ۾، اسان پهريون ڀيرو ماحول کي ترتيب ڏينداسين بنيادي ڪم لاء تيار ڪرڻ.
3.1) اسان کي گهربل شاخ ڏانھن وڃو (معياري قدم checkout):
- uses: actions/checkout@v1
3.2) پٿون انسٽال ڪريو:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.7
4) سائيٽ تي ڪم جي تسلسل لاءِ، يعني اڳئين تبديلين کي حذف نه ڪرڻ ۽ بغير ڪنهن تڪرار جي سائيٽ جي مخزن ۾ تبديليون شامل ڪرڻ لاءِ، ايندڙ قدم هر دفعي سائيٽ جي مخزن کي ڪلون ڪرڻ هوندو:
متغير GITHUB_ACTOR GitHub پاڻ کي انسٽال ڪري ٿو، ۽ هي اهو صارف نالو آهي جنهن جي غلطي ذريعي هي اسڪرپٽ شروع ڪيو ويو؛
ڪشش secrets.ACCESS_TOKEN هي ٺهيل آهي Github جي انتظام لاءِ ٽوڪن، اسان ان کي ٽيب ۾ سيٽ ڪندي ان کي ماحولياتي متغير طور پاس ڪري سگھون ٿا Secrets اسان جي مخزن سيٽنگون. مهرباني ڪري نوٽ ڪريو ته پيدا ٿيڻ دوران ٽوڪن اسان کي هڪ ڀيرو فراهم ڪيو ويندو، ان کي وڌيڪ رسائي نه هوندي. ان سان گڏو گڏ راز جي شين جي قيمت.
هن نقطي تي، اڳ ۾ ئي ڄاڻايل متغير استعمال ڪيو ويو آهي ۽ ڪم ڪندڙ ڊاريڪٽري اشارو ڪيو ويو آهي جنهن ۾ هن قدم کان حڪم شروع ڪيو ويندو. ڪم ڪندڙ ڊاريڪٽري ڏانهن وڃڻ جو حڪم ٻي صورت ۾ نظر ايندو - cd output.
7) اچو ته هڪ عزم پيغام ٺاهي، تبديلين کي انجام ڏيو ۽ انهن کي مخزن ۾ ڌڪيو. تنهن ڪري اهو ڪم بيڪار نه آهي ۽ تنهن ڪري بش ۾ غلطي پيدا نه ٿئي (آئوٽ پٽ نتيجو نه آهي 0) - پهرين، اچو ته چيڪ ڪريون ته ڇا اهو ضروري آهي ته ڪجهه ڪرڻ ۽ زور ڏيڻ لاءِ. ائين ڪرڻ لاءِ اسان ڪمانڊ استعمال ڪريون ٿا git diff-index --quiet --cached HEAD -- جيڪو ٽرمينل ڏانهن آئوٽ ڪندو 0 جيڪڏهن سائيٽ جي پوئين ورزن جي نسبت ڪا به تبديلي نه آهي، ۽ 1 اهڙيون تبديليون آهن. پوء اسان هن حڪم جي نتيجي تي عمل ڪريون ٿا. اهڙيءَ طرح، اسڪرپٽ جي عمل جي باري ۾ معلومات ۾، اسان هن اسٽيج تي سائيٽ جي حالت بابت مفيد معلومات رڪارڊ ڪنداسين، بجاءِ خودڪار طور تي حادثو ۽ اسان کي اسڪرپٽ حادثي بابت رپورٽ موڪلڻ.
اسان انهن ڪمن کي پنهنجي ڊاريڪٽري ۾ تيار ڪيل صفحن سان پڻ ڪندا آهيون.
- 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
نتيجي ۾
نتيجي طور، اهڙي اسڪرپٽ توهان کي جامد صفحا ٺاهڻ بابت سوچڻ جي اجازت ڏئي ٿي. تبديلين کي شامل ڪرڻ سان سڌو سنئون خانگي مخزن ۾، ڇا ڪنهن به سسٽم مان گٽ سان ڪم ڪندي يا GitHub ويب انٽرفيس ذريعي فائل ٺاهيندي، عمل پاڻ سڀ ڪجهه ڪندا. جيڪڏهن اسڪرپٽ اڻڄاتل طور تي خراب ٿي وئي، هڪ نوٽيفڪيشن توهان جي اي ميل ڏانهن موڪلي ويندي.