


ملحوظة
انظر أيضًا Github الرسمي Github Pages Action أولاً.
هذا إجراء github لنشر ملفاتك الثابتة على صفحات github . يمكن الجمع بين إجراء النشر هذا ببساطة وحرية مع مولدات الموقع الثابتة. (Hugo ، Mkdocs ، Gatsby ، Mdbook ، Next ، Nuxt ، وهلم جرا.)
./public الخطوة التالية gh-pages
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public بالنسبة للمبتدئين من إجراءات github: لاحظ أن GITHUB_TOKEN ليس رمز الوصول الشخصي. يقوم عداء GitHub الإجراءات تلقائيًا بإنشاء سر GITHUB_TOKEN للمصادقة في سير العمل الخاص بك. لذلك ، يمكنك البدء في النشر فورًا دون أي تكوين.
يتم دعم ثلاثة رموز.
| رمز | ريبو الخاص | الريبو العام | بروتوكول | يثبت |
|---|---|---|---|---|
github_token | ✅ | ✅ | https | غير ضروري |
deploy_key | ✅ | ✅ | SSH | ضروري |
personal_token | ✅ | ✅ | https | ضروري |
ملاحظات: في الواقع ، يعمل GITHUB_TOKEN للنشر على صفحات github ولكن لا يزال لديه بعض القيود. للنشر الأول ، نحتاج إلى تحديد فرع gh-pages أو فرع آخر في علامة التبويب إعدادات المستودع. انظر النشر الأول مع GITHUB_TOKEN
جميع العدائين الإجراءات: Linux (Ubuntu) و MacOs و Windows مدعومون.
| يدير | github_token | deploy_key | personal_token |
|---|---|---|---|
| Ubuntu -22.04 | ✅ | ✅ | ✅ |
| Ubuntu-20.04 | ✅ | ✅ | ✅ |
| Ubuntu-latest | ✅ | ✅ | ✅ |
| Macos-latest | ✅ | ✅ | ✅ |
| Windows-Latest | ✅ | (2) | ✅ |
✅ يتم دعم خادم GitHub Enterprise أعلاه 2.22.6 .
لاحظ أن GITHUB_TOKEN الذي أنشأه العداء قد لا يكون له بطبيعته امتيازات دفع/نشر على GHES. قد تحتاج إلى إنشاء/طلب مستخدم تقني مع أذونات الكتابة لمستودعك المستهدف.
github_tokendeploy_keypersonal_tokenpublish_branchpublish_dirdestination_dir Subdirectoryexclude_assetscnameenable_jekyllallow_empty_commitkeep_filesexternal_repositoryforce_orphanGITHUB_TOKEN أضف ملف سير العمل الخاص بك .github/workflows/gh-pages.yml وادفعه إلى فرعك الافتراضي عن بُعد.
فيما يلي مثال على سير العمل لهوجو.
name : GitHub Pages
on :
push :
branches :
- main # Set a branch name to trigger deployment
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
with :
submodules : true # Fetch Hugo themes (true OR recursive)
fetch-depth : 0 # Fetch all history for .GitInfo and .Lastmod
- name : Setup Hugo
uses : peaceiris/actions-hugo@v2
with :
hugo-version : ' 0.110.0 '
- name : Build
run : hugo --minify
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
# If you're changing the branch from main,
# also change the `main` in `refs/heads/main`
# below accordingly.
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public| الإجراءات سجل نظرة عامة | صفحات جيثب سجل |
|---|---|
![]() | ![]() |
github_token هذا الخيار مخصص لـ GITHUB_TOKEN ، وليس رمز الوصول الشخصي.
يقوم Runner بإجراءات GitHub تلقائيًا بإنشاء سر GITHUB_TOKEN لاستخدامه في سير العمل الخاص بك. يمكنك استخدام GITHUB_TOKEN للمصادقة في تشغيل سير العمل.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public لمزيد من التفاصيل حول GITHUB_TOKEN : مصادقة رمزية أوتوماتيكية - مستندات github
deploy_key اقرأ إنشاء مفتاح نشر SSH ، قم بإنشاء مفتاح نشر SSH الخاص بك ، وقم بتعيين خيار deploy_key مثل ما يلي.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
deploy_key : ${{ secrets.ACTIONS_DEPLOY_KEY }}
publish_dir : ./publicpersonal_token قم بإنشاء رمز وصول شخصي ( repo ) وأضفه إلى أسرار باسم PERSONAL_TOKEN ، فهو يعمل وكذلك ACTIONS_DEPLOY_KEY .
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
personal_token : ${{ secrets.PERSONAL_TOKEN }}
publish_dir : ./publicpublish_branch اضبط اسم الفرع لاستخدامه كفرع صفحات GitHub. الافتراضي هو gh-pages .
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_branch : your-branch # default: gh-pagespublish_dir دليل مصدر للنشر على صفحات جيثب. الافتراضي هو public . يتم دفع محتويات هذا dir فقط إلى فرع صفحات github ، gh-pages بشكل افتراضي.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./out # default: publicdestination_dir Subdirectoryهذه الميزة على بيتا. أي ردود فعل موضع ترحيب في العدد رقم 324
دليل الوجهة الفرعية على فرع النشر. الافتراضي فارغ.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
destination_dir : subdirexclude_assetsهذه الميزة على بيتا. أي ردود فعل موضع ترحيب في العدد رقم 163
قم بتعيين الملفات أو الدلائل لاستبعادها من نشر الأصول. الافتراضي هو .github . يجب تقسيم القيم مع فاصلة.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
exclude_assets : ' .github,exclude-file1,exclude-file2 ' تعيين exclude_assets لتفريغ لتضمين دليل .github إلى أصول النشر.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
deploy_key : ${{ secrets.ACTIONS_DEPLOY_KEY }} # Recommended for this usage
# personal_token: ${{ secrets.PERSONAL_TOKEN }} # An alternative
# github_token: ${{ secrets.GITHUB_TOKEN }} # This does not work for this usage
exclude_assets : ' ' يدعم خيار exclude_assets أنماط الكرة الأرضية.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
exclude_assets : ' .github,exclude-file.txt,exclude-dir/**.txt 'cname لإضافة ملف CNAME ، يمكننا تعيين خيار cname . بدلاً من ذلك ، ضع ملف CNAME الخاص بك في publish_dir الخاص بك. (مثل public/CNAME )
لمزيد من التفاصيل حول ملف CNAME ، اقرأ الوثائق الرسمية: إدارة مجال مخصص لموقع GitHub Pages الخاص بك - مستندات github
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
cname : github.comenable_jekyll إذا كنت تريد أن تقوم صفحات GitHub بمعالجة موقعك باستخدام مولد الموقع الثابت Jekyll ، فقم بتعيين enable_jekyll إلى True.
بشكل افتراضي ، يشير هذا الإجراء إلى صفحات github التي لا يجوز معالجتها مع Jekyll. يتم ذلك عن طريق إضافة ملف .nojekyll فارغ على فرع النشر الخاص بك. عندما يكون هذا الملف موجودًا بالفعل ، لا يفعل هذا الإجراء شيئًا.
إن تجاوز Jekyll يجعل النشر بشكل أسرع وهو ضروري إذا كنت تقوم بنشر ملفات أو أدلة تبدأ بالرسومات السفلية ، لأن Jekyll تعتبر هذه الموارد الخاصة ولا تقوم بنسخها إلى الموقع النهائي. تحتاج فقط إلى تعيين enable_jekyll إلى True عندما تريد نشر موقع ويب يعمل بنظام Jekyll والسماح لصفحات Github بالقيام بمعالجة Jekyll.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
enable_jekyll : true لمزيد من التفاصيل حول .nojekyll : تجاوز jekyll على صفحات github - مدونة Github
allow_empty_commit بشكل افتراضي ، لن يتم إنشاء الالتزام عندما لا يتغير ملف. إذا كنت ترغب في السماح لالتزام فارغ ، فقم بتعيين المعلمة الاختيارية allow_empty_commit إلى true .
على سبيل المثال:
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
allow_empty_commit : truekeep_files افتراضيًا ، ستتم إزالة الملفات الموجودة في فرع النشر (أو فقط في destination_dir إذا تم تقديمها). إذا كنت تريد أن تضيف الإجراء ملفات جديدة ولكن اترك تلك الموجودة دون مساس ، فقم بتعيين المعلمة الاختيارية keep_files إلى true .
لاحظ أن المستخدمين الذين يستخدمون مولد موقع ثابت لا يحتاجون إلى هذا الخيار في معظم الحالات. يرجى إعادة النظر في هيكل المشروع الخاص بك وبناء البرامج النصية ، أو استخدام ميزة مدمجة لمولد موقع ثابت قبل تمكين هذه العلامة.
على سبيل المثال:
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
keep_files : trueمع V3 ، لا يدعم هذا الخيار العمل مع خيار Force_orphan. سوف يدعم الإصدار الرئيسي التالي (الإصدار 4) هذا. انظر العدد رقم 455
external_repository بشكل افتراضي ، يتم نشر ملفاتك إلى المستودع الذي يقوم بتشغيل هذا الإجراء. إذا كنت ترغب في النشر إلى مستودع آخر على GitHub ، فقم بتعيين متغير البيئة external_repository على <username>/<external-repository> .
على سبيل المثال:
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
deploy_key : ${{ secrets.ACTIONS_DEPLOY_KEY }}
external_repository : username/external-repository
publish_branch : your-branch # default: gh-pages
publish_dir : ./public يمكنك استخدام deploy_key أو personal_token . عند استخدام deploy_key ، قم بتعيين مفتاحك الخاص على المستودع الذي يتضمن هذا الإجراء وتعيين مفتاحك العام على مستودعك الخارجي.
لاحظ أن GITHUB_TOKEN ليس لديه إذن للوصول إلى المستودعات الخارجية. يرجى إنشاء رمز وصول شخصي وتعيينه على personal_token مثل personal_token: ${{ secrets.PERSONAL_TOKEN }} .
استخدام الحالة:
لا يمكن لحساب الخطة المجانية GitHub استخدام صفحات GitHub في مستودع خاص. لجعل محتويات المصدر الخاصة بك خاصة ونشرها مع صفحات github ، يمكنك نشر موقعك من مستودع خاص إلى مستودع عام باستخدام هذا الخيار.
peaceiris/homepage : مستودع خاص يدير هذا الإجراء مع external_repository: peaceiris/peaceiris.github.iopeaceiris/peaceiris.github.io : مستودع عام باستخدام صفحات جيثبforce_orphan يمكننا تعيين force_orphan: true . يتيح لك هذا جعل فرع النشر الخاص بك مع أحدث الالتزام.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
force_orphan : true قم بتعيين git config user.name و git config user.email . يتم إنشاء الالتزام دائمًا مع نفس المستخدم.
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
user_name : ' github-actions[bot] '
user_email : ' github-actions[bot]@users.noreply.github.com ' 
تعيين رسالة التزام مخصص. عندما نقوم بإنشاء التزام مع docs: Update some post ، سيتم إنشاء التزام النشر باستخدام docs: Update some post ${GITHUB_SHA} .
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
commit_message : ${{ github.event.head_commit.message }} 
لتعيين رسالة التزام مخصصة كاملة دون تجزئة الالتزام المشغلة ، استخدم خيار full_commit_message بدلاً من خيار commit_message .
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
full_commit_message : ${{ github.event.head_commit.message }}هنا مثال سير العمل.
name : GitHub Pages
on :
push :
branches :
- main
tags :
- ' v*.*.* '
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Some build
- name : Prepare tag
id : prepare_tag
if : startsWith(github.ref, 'refs/tags/')
run : |
echo "DEPLOY_TAG_NAME=deploy-${TAG_NAME}" >> "${GITHUB_OUTPUT}"
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public
tag_name : ${{ steps.prepare_tag.outputs.DEPLOY_TAG_NAME }}
tag_message : ' Deployment ${{ github.ref_name }} 'الأوامر على آلة محلية.
$ # On a main branch
$ git tag -a " v1.2.3 " -m " Release v1.2.3 "
$ git push origin " v1.2.3 "
$ # After deployment
$ git fetch origin
$ git tag
deploy-v1.2.3 # Tag on the gh-pages branch
v1.2.3 # Tag on the main branchقم بإنشاء مفتاح النشر الخاص بك مع الأمر التالي.
ssh-keygen -t rsa -b 4096 -C " $( git config user.email ) " -f gh-pages -N " "ستحصل على ملفين:
gh-pages.pub هو مفتاح عامgh-pages هي مفتاح خاصبعد ذلك ، انتقل إلى إعدادات المستودع
ACTIONS_DEPLOY_KEY| أضف مفتاحك العام | نجاح |
|---|---|
![]() | ![]() |
| أضف مفتاحك الخاص | نجاح |
|---|---|
![]() | ![]() |
GITHUB_TOKEN يحتوي GITHUB_TOKEN على قيود على النشر الأول ، لذلك يتعين علينا تحديد فرع صفحات GitHub في علامة التبويب إعدادات المستودع. بعد ذلك ، قم بالنشر الثاني مثل الصور التالية.
| فشل النشر الأول | انتقل إلى علامة تبويب الإعدادات |
|---|---|
![]() | ![]() |
| حدد فرع | النشر مرة أخرى والنجاح |
|---|---|
![]() | ![]() |
إذا فشل الإجراء في دفع الالتزام أو العلامة مع الخطأ التالي:
/usr/bin/git push origin gh-pages
remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/username/repository.git/': The requested URL returned error: 403
Error: Action failed with "The process '/usr/bin/git' failed with exit code 128" يرجى إضافة إذن الكتابة إلى permissions.contents .
permissions :
contents : write بدلاً من ذلك ، يمكنك تكوين أذونات GITHUB_TOKEN الافتراضية عن طريق تحديد أذونات القراءة وكتابة.
نوصيك أن تستخدم أحدث إصدار محدد لهذا الإجراء لـ CI/CD مستقر. من المفيد مشاهدة هذا المستودع (الإصدار فقط) للتحقق من أحدث إصدار من هذا الإجراء.
للتحديث المستمر ، يمكننا استخدام Github الأصلي deparabot. فيما يلي تكوين مثال على الروبوت. يقع ملف التكوين في .github/dependabot.yml .
version : 2
updates :
- package-ecosystem : " github-actions "
directory : " / "
schedule :
interval : " daily "
labels :
- " CI/CD "
commit-message :
prefix : ciراجع الوثائق الرسمية لمزيد من التفاصيل حول reparabot: الحفاظ على تحديث تبعياتك تلقائيًا - مستندات github
للنشر بانتظام ، يمكننا تعيين تشغيل on.schedule Workflow Trigger. انظر الأحداث المجدولة | الأحداث التي تؤدي إلى سير العمل - مستندات Github
للنشر يدويًا ، يمكننا تعيين تشغيل تشغيل on.workflow_dispatch . انظر الأحداث اليدوية workflow_dispatch | الأحداث التي تؤدي إلى سير العمل - مستندات Github
name : GitHub Pages
on :
push :
branches :
- main
schedule :
- cron : " 22 22 * * * "
workflow_dispatch :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
...راجع الدعم: التنفيذ من HASHREF معطل/BROKEN VS GITHUB إجراءات الأمان أفضل الممارسات؟ · العدد رقم 712 · Peaceiris/Actions-GH-PAGES
يبني مشروعنا ويوفر أصول بناء فقط عند إنشاء إصدار. هذا هو منع المستخدم من تنفيذ هذا الإجراء بفرع معين (مثل الرئيسي). على سبيل المثال ، إذا حافظنا على أصول بناء في الفرع الرئيسي ويستخدم المستخدمون هذا الإجراء على النحو التالي ، فإن إصدارًا رئيسيًا بما في ذلك التغييرات سيؤدي إلى كسر سير العمل في CI للمستخدمين بصمت.
- uses : peaceiris/actions-gh-pages@main # Bad example!
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./publicفي هذا المشروع ، يضمن وجود علامة رئيسية (مثل V3) لا تحتوي على تغييرات كسر. لكن ، نوصي باستخدام علامة أو تجزئة ملزمة لاستقرار سير العمل الخاص بك.
- uses : peaceiris/[email protected] # tag: Better
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./public - uses : peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # commit hash of v3.9.3: Best!
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./publicللتحقق من أصول الإصدار ، يمكننا استخدام الأوامر التالية.
git clone https://github.com/peaceiris/actions-gh-pages.git
cd ./actions-gh-pages
git checkout v3.9.3
nvm install
nvm use
npm i -g npm
npm ci
npm run build
git diff ./lib/index.js # We will get zero exit code hexo ، vuepress ، رد فعل ، شبكات ، إنشاء التفاعل وهلم جرا. يرجى التحقق من مكان وجود دليل الإخراج الخاص بك قبل دفع سير العمل الخاص بك. على سبيل المثال ، يتطلب create-react-app publish_dir تعيينه على ./build
الفرضية: تتم تبعيات من قبل package.json و package-lock.json
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Node
uses : actions/setup-node@v3
with :
node-version : ' 14 '
- name : Cache dependencies
uses : actions/cache@v3
with :
path : ~/.npm
key : ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys : |
${{ runner.os }}-node-
- run : npm ci
- run : npm run build
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./publicمثال على مشروع Gatsby (Gatsby.js) مع Gatsby-Starter-Blog
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Node
uses : actions/setup-node@v3
with :
node-version : ' 14 '
- name : Cache dependencies
uses : actions/cache@v3
with :
path : ~/.npm
key : ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys : |
${{ runner.os }}-node-
- run : npm ci
- run : npm run format
- run : npm run test
- run : npm run build
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./publicمثال على مشروع NEXT.JS (React.js) مع إنشاء-Next-APP
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Node
uses : actions/setup-node@v3
with :
node-version : ' 14 '
- name : Get yarn cache
id : yarn-cache
run : echo "YARN_CACHE_DIR=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name : Cache dependencies
uses : actions/cache@v3
with :
path : ${{ steps.yarn-cache.outputs.YARN_CACHE_DIR }}
key : ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys : |
${{ runner.os }}-yarn-
- run : yarn install --frozen-lockfile
- run : yarn build
- run : yarn export
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./outمثال على مشروع Nuxt.js (vue.js) مع إنشاء nuxt-app
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Node
uses : actions/setup-node@v3
with :
node-version : ' 14 '
- name : Cache dependencies
uses : actions/cache@v3
with :
path : ~/.npm
key : ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys : |
${{ runner.os }}-node-
- run : npm ci
- run : npm test
- run : npm run generate
- name : deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./distمثال على سير العمل لـ Docusaurus.
npx @docusaurus/init@next init website classic مفيد لإنشاء مشروع Docusaurus جديد.
# .github/workflows/deploy.yml
name : GitHub Pages
on :
push :
branches :
- main
paths :
- ' .github/workflows/deploy.yml '
- ' website/** '
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
defaults :
run :
working-directory : website
steps :
- uses : actions/checkout@v3
- name : Setup Node
uses : actions/setup-node@v3
with :
node-version : ' 14 '
- name : Get yarn cache
id : yarn-cache
run : echo "YARN_CACHE_DIR=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name : Cache dependencies
uses : actions/cache@v3
with :
path : ${{ steps.yarn-cache.outputs.YARN_CACHE_DIR }}
key : ${{ runner.os }}-website-${{ hashFiles('**/yarn.lock') }}
restore-keys : |
${{ runner.os }}-website-
- run : yarn install --frozen-lockfile
- run : yarn build
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./website/buildPelican ، mkdocs ، أبو الهول ، وهلم جرا.
الفرضية: تتم إدارة التبعيات بواسطة requirements.txt
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Python
uses : actions/setup-python@v3
with :
python-version : ' 3.8 '
- name : Upgrade pip
run : |
# install pip=>20.1 to use "pip cache dir"
python3 -m pip install --upgrade pip
- name : Get pip cache dir
id : pip-cache
run : echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name : Cache dependencies
uses : actions/cache@v3
with :
path : ${{ steps.pip-cache.outputs.dir }}
key : ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys : |
${{ runner.os }}-pip-
- name : Install dependencies
run : python3 -m pip install -r ./requirements.txt
- run : mkdocs build
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./siteمثال على عمل GitHub سير العمل لنشر موقع Rust-Lang/MDBook على صفحات github.
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup mdBook
uses : peaceiris/actions-mdbook@v1
with :
mdbook-version : ' 0.4.8 '
# mdbook-version: 'latest'
- run : mdbook build
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./book تلميح: قد ترغب في نشر Rustdocs. واستخدم الروابط النسبية لها من مستندات MD ، وقم بفحصها بواسطة mdbook . بعد ./book/html/ ، وفقًا للمستند mdbook build ./target/doc/ تضع ./book/src
مثال على سير العمل لمشروع ويب Flutter.
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Flutter
run : |
git clone https://github.com/flutter/flutter.git --depth 1 -b beta _flutter
echo "${GITHUB_WORKSPACE}/_flutter/bin" >> ${GITHUB_PATH}
- name : Install
run : |
flutter config --enable-web
flutter pub get
- name : Build
run : flutter build web
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./build/webمثال سير عمل لدردار.
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : ubuntu-22.04
permissions :
contents : write
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- name : Setup Node
uses : actions/setup-node@v3
with :
node-version : ' 14 '
- name : Setup Elm
run : npm install elm --global
- name : Make
run : elm make --optimize src/Main.elm
- name : Move files
run : |
mkdir ./public
mv ./index.html ./public/
# If you have non-minimal setup with some assets and separate html/js files,
# provide --output=<output-file> option for `elm make` and remove this step
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./publicمثال على سير العمل لجونسوندل/النشر.
name : GitHub Pages
on :
push :
branches :
- main
pull_request :
jobs :
deploy :
runs-on : macos-latest
concurrency :
group : ${{ github.workflow }}-${{ github.ref }}
steps :
- uses : actions/checkout@v3
- uses : actions/cache@v3
with :
path : |
~/Publish_build
.build
key : ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
restore-keys : |
${{ runner.os }}-spm-
- name : Setup JohnSundell/Publish
run : |
cd ${HOME}
export PUBLISH_VERSION="0.7.0"
git clone https://github.com/JohnSundell/Publish.git
cd ./Publish && git checkout ${PUBLISH_VERSION}
mv ~/Publish_build .build || true
swift build -c release
cp -r .build ~/Publish_build || true
echo "${HOME}/Publish/.build/release" >> ${GITHUB_PATH}
- run : publish-cli generate
- name : Deploy to GitHub Pages
uses : peaceiris/actions-gh-pages@v4
if : github.ref == 'refs/heads/main'
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./Output