ሀብርን በጥቂቱ ስቃኝ፣ በ GitHub (ቅድመ-ይሁንታ) ባህሪ - ድርጊቶች ላይ በጣም ጥቂት መጣጥፎች መታተማቸው አስገርሞኛል።
ምንም እንኳን “ቅድመ-ይሁንታ” ቢሆንም ተግባራዊነቱ አሁንም በሙከራ ላይ በመሆኑ እንዲህ ዓይነቱን ማቃለል ሊገለጽ የሚችል ይመስላል። ግን ይህ መሳሪያ በግል ማከማቻዎች ውስጥ ጥቅም ላይ እንዲውል የሚያስችለው የቤታ ጠቃሚ ባህሪ ነው። በዚህ ጽሑፍ ውስጥ የምናገረው ከዚህ ቴክኖሎጂ ጋር ስለ መሥራት ነው.
ቅድመ ታሪክ
በቅደም ተከተል ከጀመርን ምናልባት ፈጣን ፣ ምቹ ፣ ቀላል እና ነፃ የሆነ የግል “ስለ እኔ” ድህረ ገጽ ለማከማቸት በመፈለግ ሂደት ውስጥ ብዙ ምሽቶችን ማሳለፍ እና ብዙ መጣጥፎችን ማለፍ ነበረብኝ።
አንዳንድ ሰዎች ማስተናገጃን ይመርጣሉ, ሌሎች ደግሞ የደመና አገልጋይ, እና ለዚህ ሁሉ ስራውን, መስተጋብርን እና ክፍያን ለመረዳት የማይፈልጉ እንደ ቋሚ ጣቢያዎችን ወደ ማጠራቀሚያ መስቀል, አሁን ይሄ በሁለቱም በ GitHub እና GitLab ላይ ሊከናወን ይችላል.
በእርግጥ ይህ የሁሉም ሰው የግል ምርጫ ነው።
የመጨረሻ ምርጫዬ GitHub Pages ነበር።
ስለ ገፆች
ማን የማያውቅ gh-pages
- ይህ በድር ጣቢያ መልክ ሰነዶችን ለማከማቸት አማራጭ ነው እና በነጻ ይሰጣል ፣ እና ከሰነዶች በተጨማሪ የግል ድረ-ገጾችን ለማከማቸት ሀሳብ ቀርቧል። ይህ ተግባር በ GitHub ለሁሉም ተጠቃሚዎች የቀረበ ሲሆን በማጠራቀሚያ ቅንጅቶች ውስጥ ይገኛል።
የፕሮጀክቱ ማከማቻ ቅርንጫፍ ይጠቀማል gh-pages
, ለተጠቃሚ ጣቢያ - ከስሙ ጋር የተለየ ማከማቻ username.github.io
ከጣቢያ ምንጮች ጋር master
ቅርንጫፍ.
ተጨማሪ ማየት ይችላሉ CNAME
በጎራ ስም እና የጎራ አቅራቢዎን ዲ ኤን ኤስ በ GitHub አገልጋዮች ላይ በማዋቀር።
እንደዚህ አይነት ጣቢያን እንዴት ማዳበር እንደሚቻል እዚህ ብዙ መጣጥፎች እንዳሉ እርግጠኛ ነኝ, ስለዚህ ስለ የበለጠ የምናገረው ይህ አይደለም.
የሚፈጠር ችግር
ችግሩ የነበረው የማይንቀሳቀስ ጀነሬተር ሲጠቀሙ ተጨማሪ ስክሪፕቶችን መፃፍ እና ቤተመጻሕፍትን በመጠቀም ገጾችን የማመንጨት እና ወደ ማከማቻው የመጫን ሂደትን ለማቃለል ነበር። በቀላል ፣ ምንጮቹን በተለየ የግል ማከማቻ ውስጥ ካከማቹ ፣ ከዚያ በጣቢያው ላይ ምንም ለውጥ በሚኖርበት ጊዜ ፣ በዋናው ጣቢያ ማከማቻ ውስጥ ለቀጣይ ትውልድ የማይለዋወጡ ገጾች እና ህትመቶች የአካባቢውን አከባቢ ማሰማራት አስፈላጊ ነበር።
የተትረፈረፈ ነገር አለ።
ልክ በቅርቡ፣ ወይ በድረ-ገጹ ላይ ብቅ ባይ ማስታወቂያ ወይም ከ GitHub በተባለው ጋዜጣ ላይ፣ አዲስ የተሰራ ሲአይ/ሲዲ ታይቷል፣ ይህም እርምጃዎች በትንሹ ጥረት እንዲደረጉ አስችሏል።
ስለ የማይንቀሳቀስ ገጽ ጀነሬተሮች
በዚህ ንኡስ ንጥል ላይ ልዩ ትኩረት አላደርግም፣ ነገር ግን በሚከተለው ምርጫ እና አጠቃቀም ወቅት የመጣኋቸውን ሁለቱን ጉዳዮች ላካፍላችሁ።
1) ለፕሮግራሚንግ ቋንቋዎ የሚስማማ ጄኔሬተር ይምረጡ ወይም በተቻለ መጠን ግልጽ ነው። ወደዚህ ሀሳብ የመጣሁት እኔ ራሴ ጣቢያው እንዲሰራ አንዳንድ ተግባራትን ማከል፣ ለበለጠ መረጋጋት እና አውቶማቲክ ክራንች ማከል ባለበት ጊዜ ነው። በተጨማሪም, ይህ ተጨማሪ ተግባራትን እራስዎ በፕለጊን መልክ ለመጻፍ ጥሩ ምክንያት ነው;
2) የትኛውን ጄነሬተር እንደሚመርጥ የግል ምርጫ ነው ፣ ግን በ GitHub ገጾች ተግባር ውስጥ ለመጀመሪያ ጊዜ ለመጥለቅ መጀመሪያ መጫን እንዳለብዎ ግምት ውስጥ ማስገባት ተገቢ ነው ።
የጄነሬተር ምርጫዬ በመጀመሪያው ነጥብ ላይ የተመሰረተ ነው.
__
የችግሩ ቀመር
ዋናው ተግባር ከግል ማከማቻ ውስጥ የማይንቀሳቀሱ ገጾችን በራስ-ሰር የሚያመነጭ ስክሪፕት (በእርግጥ የውቅር ፋይል) መፃፍ ነው። መፍትሄው የቨርቹዋል አካባቢን ተግባራዊነት ያካትታል። ስክሪፕቱ ራሱ ዝግጁ የሆኑ ገጾችን ወደ ይፋዊ ማከማቻ ያክላል።
የመፍትሄ መሳሪያዎች
ችግሩን ለመፍታት የምንጠቀምባቸው መሳሪያዎች፡-
- GitHub ድርጊቶች;
- Python3.7;
- ፔሊካን;
- Git;
- 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.
በአብነት ላይ በመመስረት የራሳችንን እንፃፍ፡-
0) እንዲሁም "CI" የሚለውን ስም መተው ይችላሉ. የጣዕም ጉዳይ ነው።
1) በመቀጠል, ስክሪፕቱን የሚያስነሳውን ድርጊት / ቀስቃሽ መምረጥ ያስፈልግዎታል, በእኛ ሁኔታ ይህ ወደ ማከማቻው አዲስ ቁርጠኝነት የተለመደ ግፊት ነው.
on:
push
2) ኡቡንቱ አስፈላጊ በሆነው ተግባር በጣም ስለረካ ስክሪፕቱ እንደ ምሳሌ በሚጀመርበት መሠረት ምስሉን እንተዋለን ። ሲመለከቱ
build:
runs-on: ubuntu-latest
3) በደረጃዎች ውስጥ በመጀመሪያ ለዋናው ሥራ ለመዘጋጀት አካባቢን እናዘጋጃለን.
3.1) ወደምንፈልገው ቅርንጫፍ ይሂዱ (መደበኛ ደረጃ checkout
):
- uses: actions/checkout@v1
3.2) Python ን ይጫኑ
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.7
3.3) የጄኔሬተሩን ጥገኞች ይጫኑ፡-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
3.4) የጣቢያው ገጾች የሚፈጠሩበት ማውጫ ይፍጠሩ፡
- name: Make output folder
run: mkdir output
4) በጣቢያው ላይ ያለው ሥራ ወጥነት ያለው እንዲሆን ማለትም ከዚህ በፊት የተደረጉ ለውጦችን ላለማጥፋት እና በጣቢያው ማከማቻ ላይ ያለ ግጭት ለውጦችን ለመጨመር የሚቀጥለው እርምጃ የጣቢያውን ማከማቻ በእያንዳንዱ ጊዜ መዝጋት ይሆናል ።
- 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
ይህ እርምጃ የስርዓት ተለዋዋጮችን ይጠራል-
- ተለዋዋጭ
GITHUB_ACTOR
GitHub እራሱን ይጭናል እና ይህ ስክሪፕት የተከፈተበት የተጠቃሚ ስም ነው። - ተለዋዋጭ
secrets.ACCESS_TOKEN
ይህ የመነጨ ነውGithubን ለማስተዳደር ማስመሰያ , በትሩ ውስጥ በማዘጋጀት እንደ የአካባቢ ተለዋዋጭ እናስተላልፋለንSecrets
የእኛ ማከማቻ ቅንብሮች. እባክዎን በትውልድ ጊዜ ማስመሰያው አንድ ጊዜ እንደሚሰጠን ልብ ይበሉ ፣ ለእሱ ምንም ተጨማሪ መዳረሻ አይኖርም። እንዲሁም የምስጢር ዕቃዎች እሴቶች።
5) ገጾቻችንን ወደማመንጨት እንሂድ፡-
- name: Generate static pages
run: pelican content -o output -s publishconf.py
ወደ ጄኔሬተሩ የተላለፉት መለኪያዎች የተፈጠሩት ፋይሎች የሚላኩበት ማውጫ (ዳይሬክተሩ) ተጠያቂ ናቸው (-o output
) እና ለማምረት የምንጠቀመው የማዋቀሪያ ፋይል (-s publishconf.py
; በፔሊካን ሰነድ ውስጥ የአካባቢያዊ ውቅረትን እና ለህትመት አወቃቀሩን ለመለየት ስላለው አቀራረብ ማንበብ ይችላሉ).
በአቃፊችን ውስጥ ያለውን ላስታውስህ output
የጣቢያው ማከማቻ አስቀድሞ ተዘግቷል።
6) git እናዋቅር እና የተቀየሩ ፋይሎቻችንን እንጠቁም፡
- 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
በዚህ ጊዜ, ቀደም ሲል የታወቀው ተለዋዋጭ ጥቅም ላይ ይውላል እና ከዚህ ደረጃ የሚመጡ ትዕዛዞች የሚጀምሩበት የስራ ማውጫ ይጠቁማል. ወደ የሥራ ማውጫው የመሄድ ትእዛዝ ያለበለዚያ ይመስላል - cd output
.
7) የቃል መልእክት እንፍጠር ፣ ለውጦቹን እንፈጽም እና ወደ ማከማቻው እንገፋፋቸዋለን። ስለዚህ ድርጊቱ በከንቱ እንዳልሆነ እና ስለዚህ በ bash ውስጥ ስህተት አይፈጥርም (የውጤት ውጤቱ አይደለም 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
ውጤት
በውጤቱም, እንዲህ ዓይነቱ ስክሪፕት የማይንቀሳቀሱ ገጾችን ስለመፍጠር እንዳያስቡ ያስችልዎታል. ከየትኛውም ሲስተም ከ git ጋር በመስራት ወይም በ GitHub ድር በይነገጽ በኩል ፋይል በመፍጠር በቀጥታ ወደ የግል ማከማቻ ላይ ለውጦችን በማከል እርምጃዎች ሁሉንም ነገር በራሳቸው ያደርጋሉ። ስክሪፕቱ ሳይታሰብ ከተበላሸ፣ ማሳወቂያ ወደ ኢሜልዎ ይላካል።
ሙሉ ኮድ
የስራ ስሪቴን እተወዋለሁ፣ በዚህ ውስጥ የመጨረሻው እርምጃ ቁርጠኝነት ወደ ዋናው ማከማቻ መገፋቱን ማሳወቂያ መላክን ይጨምራል።
ከላይ የተገለጹት ሚስጥሮች ጥቅም ላይ የሚውሉት ቦት ቶከን እና መልእክቱ መላክ ያለበት የተጠቃሚ መታወቂያ ሲጨመሩ ነው።
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
ቅጽበታዊ ገጽ እይታዎች
በምንጭ ማከማቻው ውስጥ በድርጊት ትር ውስጥ የሚታየው የአንዱ ሩጫ ውጤት
ስለ ስክሪፕቱ መጠናቀቅ ከቦት የመጣ መልእክት
ጠቃሚ አገናኞች
ምንጭ: hab.com