إجراءات GitHub لدفع التغييرات المحلية إلى GitHub باستخدام رمز GitHub المعتمد.
للتأكد من أن سير عمل GitHub Actions يعمل بشكل صحيح، من المهم تكوين GITHUB_TOKEN
بحقوق الوصول المناسبة لكل مستودع.
اتبع هذه الخطوات لإعداد الأذونات اللازمة:
Settings
الموجودة في شريط أدوات المستودع.Actions
.Actions
، ابحث عن General
وانقر عليه.Workflow permissions
.GITHUB_TOKEN
. انقر على خيار Read and write permissions
.تأكد من حفظ التغييرات قبل الخروج من صفحة الإعدادات.
ملحوظة
يتيح منح Read and write permissions
لسير العمل تعديل المستودع الخاص بك، بما في ذلك إضافة الملفات والتعليمات البرمجية أو تحديثها. تأكد دائمًا من ثقتك في سير العمل الذي تقوم بتمكينه باستخدام هذه الأذونات.
يمكن أيضًا تكوين أذونات GITHUB_TOKEN
عالميًا لجميع الوظائف في سير العمل أو بشكل فردي لكل مهمة.
يوضح هذا المثال كيفية تعيين الأذونات اللازمة contents
ونطاقات pull-requests
على مستوى الوظيفة:
jobs :
job1 :
runs-on : ubuntu-latest
permissions : # Job-level permissions configuration starts here
contents : write # 'write' access to repository contents
pull-requests : write # 'write' access to pull requests
steps :
- uses : actions/checkout@v4
لتطبيق الأذونات بشكل عام، مما سيؤثر على جميع الوظائف ضمن سير العمل، يمكنك تحديد مفتاح permissions
على المستوى الجذر لملف سير العمل، كما يلي:
permissions : # Global permissions configuration starts here
contents : read # 'read' access to repository contents
pull-requests : write # 'write' access to pull requests
jobs :
job1 :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
اضبط مستويات الأذونات ونطاقاتها وفقًا لمتطلبات سير العمل لديك. لمزيد من التفاصيل حول كل مستوى إذن، راجع وثائق GitHub.
مثال لسير العمل للمصادقة باستخدام منصة GitHub ولدفع التغييرات إلى مرجع محدد، على سبيل المثال فرع متاح بالفعل:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
fetch-depth : 0 # otherwise, there would be errors pushing refs to the destination repository.
- name : Create local changes
run : |
...
- name : Commit files
run : |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
branch : ${{ github.ref }}
مثال لسير العمل لاستخدام معلمة الفرع لدفع التغييرات إلى فرع محدد، على سبيل المثال فرع طلب السحب:
name : Example
on : [pull_request, pull_request_target]
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
branch : ${{ github.head_ref }}
مثال لسير العمل لاستخدام معلمة force-with-lease لفرض الدفع إلى مستودع:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
force_with_lease : true
مثال لسير العمل لاستخدام GitHub App Token مع الرمز المميز الافتراضي داخل إجراء الدفع. يمكنك العثور على مزيد من المعلومات حول الموضوع هنا:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
persist-credentials : false
- name : Generate Githup App Token
id : generate_token
uses : tibdex/github-app-token@v1
with :
app_id : ${{ secrets.APP_ID }}
installation_id : ${{ secrets.INSTALLATION_ID }}
private_key : ${{ secrets.APP_PRIVATE_KEY }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ env.TOKEN }}
مثال لسير العمل لاستخدام الرمز المميز غير الافتراضي للدفع إلى مستودع تخزين آخر. انتبه إلى أن علامة القوة مع الإيجار غير ممكنة في مثل هذه الحالة:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
token : ${{ secrets.PAT_TOKEN }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.PAT_TOKEN }}
repository : Test/test
force : true
مثال لسير العمل لتحديث/الكتابة فوق علامة موجودة:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git tag -d $GITHUB_REF_NAME
git tag $GITHUB_REF_NAME
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
force : true
tags : true
مثال لسير العمل للمصادقة باستخدام GitHub Platform عبر Deploy Keys أو بشكل عام SSH:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ssh-key : ${{ secrets.SSH_PRIVATE_KEY }}
persist-credentials : true
- name : Create local changes
run : |
...
- name : Commit files
run : |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
ssh : true
branch : ${{ github.ref }}
مثال لسير العمل للدفع إلى فرع محمي داخل المستودع الخاص بك. انتبه إلى أنه من الضروري استخدام رمز وصول شخصي واستخدامه داخل actions/checkout
. قد تكون فكرة جيدة تحديد علامة فرض التأجير في حالة حدوث أخطاء في المزامنة والدفع. إذا كنت تريد إنشاء رمز وصول شخصي مناسب، فيمكنك اتباع التعليمات التالية:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
token : ${{ secrets.PAT_TOKEN }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.PAT_TOKEN }}
repository : Test/test
force_with_lease : true
اسم | قيمة | تقصير | وصف |
---|---|---|---|
github_token | خيط | ${{ github.token }} | GITHUB_TOKEN أو الريبو النطاق رمز الوصول الشخصي. |
سش | منطقية | خطأ شنيع | يحدد ما إذا كان سيتم استخدام مفاتيح ssh/Deploy. |
فرع | خيط | (تقصير) | فرع الوجهة لدفع التغييرات. يمكن تمريره باستخدام ${{ github.ref }} . |
قوة | منطقية | خطأ شنيع | يحدد ما إذا كان سيتم استخدام دفع القوة. |
force_with_lease | منطقية | خطأ شنيع | يحدد ما إذا كان سيتم استخدام دفع القوة مع الإيجار. يرجى تحديد الفرع المقابل داخل قسم ref لإجراء الخروج، على سبيل المثال ref: ${{ github.head_ref }} . انتبه، إذا كنت تريد تحديث الفرع والعلامة المقابلة، فيرجى استخدام معلمة force بدلاً من خيار force_with_lease . |
الذري | منطقية | حقيقي | يحدد ما إذا كان سيتم استخدام الدفع الذري. |
Push_to_submodules | خيط | "حسب الطلب" | يحدد ما إذا كان --recurse-submodules= مستخدمًا. تحدد القيمة الإستراتيجية المستخدمة. |
Push_only_tags | منطقية | خطأ شنيع | يحدد ما إذا كان الإجراء يجب أن يدفع العلامات فقط، أم لا، الافتراضي خطأ |
العلامات | منطقية | خطأ شنيع | يحدد ما إذا كان --tags قد تم استخدامه. |
دليل | خيط | '.' | الدليل للتغيير إليه قبل الدفع. |
مستودع | خيط | '' | اسم المستودع. يمثل اسم المستودع الافتراضي أو الفارغ مستودع جيثب الحالي. إذا كنت تريد الدفع إلى مستودع آخر، يجب عليك إنشاء رمز وصول شخصي واستخدمه كمدخل github_token . |
إذا رأيت الخطأ التالي داخل مخرجات الوظيفة، وتريد تحديث علامة موجودة:
To https://github.com/Test/test_repository
! [rejected] 0.0.9 -> 0.0.9 (stale info)
error: failed to push some refs to 'https://github.com/Test/test_repository'
الرجاء استخدام force
بدلاً من المعلمة force_with_lease
. تحديث العلامة مع المعلمة --force-with-lease
غير ممكن.
تم إصدار ملف Dockerfile والبرامج النصية والوثائق المرتبطة به في هذا المشروع بموجب ترخيص MIT.
GitHub هي علامات تجارية مسجلة لشركة GitHub, Inc. اسم GitHub المستخدم في هذا المشروع هو لأغراض التعريف فقط. لا يرتبط المشروع بأي شكل من الأشكال بشركة GitHub Inc. ولا يعد حلاً رسميًا لشركة GitHub Inc. وقد تم توفيره لتسهيل استخدام موقع GitHub.