
أتمتة نشر المواقع الإلكترونية وأكثر من ذلك مع هذا الإجراء github. إنه مجاني!
ضع ما يلي في Your_Project/.github/workflows/main.yml
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ActionsBlank workflow file أو Set up a workflow yourself ، إذا لم تر هذه الخيارات Your_Project/.github/workflows/main.yml قم بإنشاء ملف yaml يدويًاsecrets في مشروعك. لإضافة secret ، انتقل إلى علامة التبويب Settings في مشروعك ثم حدد Secrets . أضف Secret جديدًا لـ private-ssh-key يمكن إضافة المفاتيح مباشرة إلى ملف التكوين .YML الخاص بك أو الرجوع إليه من تخزين Secrets المشروع.
لإضافة secret ، انتقل إلى علامة التبويب Settings في مشروعك ثم حدد Secrets . أوصي بشدة بتخزين private-ssh-key .
| الاسم الرئيسي | مطلوب؟ | مثال | تقصير | وصف |
|---|---|---|---|---|
target-server | نعم | example.com | خادم الوجهة للنشر إلى | |
destination-path | نعم | ~/folderOnServerThatAlreadyExists/ | مسار على الخادم للنشر إلى. يجب أن تكون موجودة بالفعل. | |
remote-user | نعم | username | مستخدم SSH لتسجيل الدخول كما | |
private-ssh-key | نعم | -----BEGIN RSA PRIVATE KEY----- ...... | مفتاح SSH الخاص. يجب تحديدها كسر. | |
source-path | لا | ./myFolderToPublish/ | ./ | يجب أن / طريق التحميل على الخادم |
ssh-port | لا | 12345 | 22 | منفذ SSH للاستخدام. معظم المضيفين يغيرون هذا من الافتراضي. هذا ليس منفذ مواقع الويب الخاصة بك. |
rsync-options | لا | انظر قسم rsync-options أدناه | --archive --verbose --compress --human-readable --progress --delete-after --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore | ملاحظة: إذا كنت في التخصيص ، فيجب عليك إعادة تحديد الإعدادات الافتراضية (على افتراض أنك تريدها). وسيطات RSYNC المخصصة ، يتم تمرير هذا الحقل مباشرة في البرنامج النصي RSYNC. |
rsync-optionsوسيطات مخصصة ، يتم تمرير هذا الحقل مباشرة إلى البرنامج النصي RSYNC. انظر دليل Rsync للحصول على جميع الخيارات. يمكنك استخدام أكبر عدد ممكن من الحجج ، وفصلها بمساحة
فيما يلي قائمة غير مكتملة من args شائعة الاستخدام:
| خيار | وصف |
|---|---|
--archive | طريقة سريعة للقول أنك تريد عودة وتريد الحفاظ على كل شيء تقريبًا |
--dry-run | لا يتم تحميل أو حذف أي شيء ، ولكنه يخبرك بما سيتم تحميله/حذفه إذا كان هذا نشرًا حقيقيًا |
--stats | طباعة إحصائيات مطول على نقل الملف ، مما يتيح لك معرفة مدى فعالية خوارزمية نقل الدلتا RSYNC لبياناتك |
--links | عندما تتم مواجهة Symlinks ، أعد إنشاء Symlink على الوجهة |
--compress | يضغط بيانات الملف عند إرسالها إلى جهاز الوجهة ، مما يقلل من كمية البيانات التي يتم إرسالها |
--human-readable | بايتات الإخراج بتنسيق أكثر قابلة للقراءة البشرية (K ، M ، G) |
--itemize-changes | قائمة مفصلة للتغييرات التي يتم إجراؤها على كل ملف ، بما في ذلك تغييرات السمة |
--delete-after | عند حذف ملف على Github ، سيتم حذفه أيضًا على الخادم. يتم حذف الملفات في نهاية النشر لتقليل وقت التوقف. |
--max-size '200K' | تجاهل مزامنة الملفات على هذا الحد. القيمة هي رقم تليها "K" أو "M" أو "G" |
--exclude 'file.txt' | يستبعد الملفات (الملفات) من النشر. يدعم Glob Pattterns (على سبيل المثال: *.jpg ). يمكنك الحصول على العديد من الاستبعاد! |
--include 'file.txt' | يتضمن ملفات (s) حتى لو تم استبعادها. يدعم Glob Pattterns (على سبيل المثال: *.jpg ). يمكنك الحصول على العديد من يشمل! |
انظر دليل Rsync لجميع الخيارات
تأكد من أن لديك برنامج نصي NPM يسمى "Build". يجب أن يعمل هذا التكوين لمعظم مواقع الويب التي تم إنشاؤها.
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : ? Install Packages
- uses : actions/setup-node@v3
with :
node-version : 18
cache : " npm "
- run : npm ci
- name : ? Build
run : npm run build
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ ouputs قائمة بالملفات التي سيتم إنشاؤها/تعديلها لمزامنة مصدرك دون إجراء أي تغييرات فعلية
on : push
name : Publish Website Dry Run
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
ssh-port : 22
destination-path : ~/destinationFolder/
rsync-options : --dry-run --archive --verbose --compress --delete-after --human-readable --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignoreتريد مثال آخر؟ اسمحوا لي أن أعرف من خلال إنشاء قضية github
إذا كنت تقدر هذا الإجراء github ، فامنحه أو عرضه مع إحدى الشارات أدناه. لا تتردد في تحرير النص أو اللون.
[ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=0077b6 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=297FA9 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) يتم استبعاد ملفات GIT افتراضيًا
إذا كان لديك rsync-options مخصصة ، فستحتاج إلى إعادة إضافة خيارات استبعاد الافتراضية باستخدام- --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore
يمكنك استخدام rsync-options والتمرير في العديد من --exclude التي تريدها. بشكل افتراضي ، يستبعد هذا الإجراء ملفات github. إذا اخترت تخصيص rsync-options فتأكد من نسخها على الافتراضات.
مثال باستثناء جميع ملفات .jpg :
rsync-options: --exclude "*.jpg"
مثال باستثناء مجلد معين:
rsync-options: --exclude "wp-content/themes/"
تستخدم هذه المكتبة rsync لمزامنة الملفات. لم يتمكن البرنامج النصي من اكتشاف rsync على الجهاز الذي يدير الإجراء. إذا كنت تستخدم runs-on: ubuntu-latest فسيحصل دائمًا على rsync .
إذا كنت تستخدم windows-latest و windows-XXXX أو macos-latest أو macos-12 أو عداءًا مستضيفًا ذاتيًا ، فستحتاج إلى تثبيت RSYNC قبل خطوة web-deploy .
هذا سهل جدا!
على windows Runners قم بتشغيل خطوات Windows الخاصة بك ، ثم استخدم خطوة ubuntu-latest للنشر.
على المتسابقين الذين يستضيفونه ، قم بتثبيت RSYNC قبل خطوة web-deploy .
runs-on : [self-hosted, linux, my-self-hosted-runner-label]
steps :
- name : Install rsync
run : |
sudo apt-get update
sudo apt-get install rsync على المتسابقين macos ، قم بتثبيت RSYNC قبل خطوة web-deploy .
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsyncاقرأ المزيد عن تخصيص المتسابقين
https://docs.github.com/en/actions/using-github-hosted-runners/customizing-github-hosted-runners