การดำเนินการ 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 }}
ตัวอย่างขั้นตอนการทำงานเพื่อใช้พารามิเตอร์สาขาเพื่อส่งการเปลี่ยนแปลงไปยังสาขาที่ระบุ เช่น สาขา Pull Request:
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 ร่วมกับโทเค็นเริ่มต้นภายในการดำเนินการชำระเงิน คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อได้ที่นี่:
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 ผ่านทาง 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 Keys หรือไม่ |
สาขา | เชือก | (ค่าเริ่มต้น) | สาขาปลายทางที่จะผลักดันการเปลี่ยนแปลง สามารถส่งผ่านได้โดยใช้ ${{ github.ref }} |
บังคับ | บูลีน | เท็จ | กำหนดว่ามีการใช้แรงกดหรือไม่ |
Force_with_lease | บูลีน | เท็จ | กำหนดว่ามีการใช้การกดแบบบังคับพร้อมลีสหรือไม่ โปรดระบุสาขาที่เกี่ยวข้องภายในส่วน ref ของการดำเนินการชำระเงิน เช่น ref: ${{ github.head_ref }} โปรดทราบว่า หากคุณต้องการอัปเดตสาขาและแท็กที่เกี่ยวข้อง โปรดใช้พารามิเตอร์ force แทนตัวเลือก force_with_lease |
อะตอม | บูลีน | จริง | กำหนดว่ามีการใช้การดันแบบอะตอมมิกหรือไม่ |
push_to_submodules | เชือก | 'ตามความต้องการ' | พิจารณาว่า --recurse-submodules= ถูกใช้หรือไม่ ค่าจะกำหนดกลยุทธ์ที่ใช้ |
push_only_tags | บูลีน | เท็จ | กำหนดว่าการดำเนินการควรพุชแท็กเท่านั้นหรือไม่ ค่าเริ่มต้นเป็นเท็จ |
แท็ก | บูลีน | เท็จ | กำหนดว่า --tags ถูกใช้หรือไม่ |
ไดเรกทอรี | เชือก | - | ไดเร็กทอรีที่จะเปลี่ยนก่อนกด |
พื้นที่เก็บข้อมูล | เชือก | - | ชื่อพื้นที่เก็บข้อมูล ชื่อพื้นที่เก็บข้อมูลเริ่มต้นหรือว่างเปล่าแสดงถึง พื้นที่เก็บข้อมูล GitHub ปัจจุบัน หากคุณต้องการพุชไปยังที่เก็บอื่น คุณควรสร้างโทเค็นการเข้าถึงส่วนบุคคล และใช้เป็นอินพุต 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