
ปรับใช้โครงการของคุณไปยังหน้า GitHub โดยอัตโนมัติด้วยการกระทำของ GitHub การกระทำนี้สามารถกำหนดค่าเพื่อผลักดันรหัสพร้อมการผลิตของคุณไปยังสาขาใด ๆ ที่คุณต้องการรวมถึง GH-PAGES และ เอกสาร นอกจากนี้ยังสามารถจัดการการปรับใช้ที่เก็บข้ามและทำงานร่วมกับ GitHub Enterprise ได้เช่นกัน

การบำรุงรักษาโครงการนี้เกิดขึ้นได้โดยผู้สนับสนุนและผู้สนับสนุนทุกคน หากคุณต้องการสปอนเซอร์โครงการนี้และให้โลโก้ Avatar หรือ บริษัท ของคุณปรากฏด้านล่างคลิกที่นี่ -




















คุณสามารถรวมการกระทำในเวิร์กโฟลว์ของคุณเพื่อทริกเกอร์ในเหตุการณ์ใด ๆ ที่การกระทำของ GitHub สนับสนุน หากสาขาระยะไกลที่คุณต้องการปรับใช้ไม่ได้มีอยู่แล้วการกระทำจะสร้างให้คุณ เวิร์กโฟลว์ของคุณจะต้องรวมขั้นตอน actions/checkout ก่อนที่เวิร์กโฟลว์นี้จะทำงานเพื่อให้การปรับใช้ทำงาน หากคุณตั้งใจจะทำการปรับใช้หลายครั้งอย่างต่อเนื่องคุณอาจต้องใช้ประโยชน์จากพารามิเตอร์การเกิดขึ้นพร้อมกันในเวิร์กโฟลว์ของคุณเพื่อป้องกันการทับซ้อน
คุณสามารถดูตัวอย่างของสิ่งนี้ด้านล่าง
name : Build and Deploy
on : [push]
permissions :
contents : write
jobs :
build-and-deploy :
concurrency : ci-${{ github.ref }} # Recommended if you intend to make multiple deployments in quick succession.
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : build # The folder the action should deploy. บันทึก
คุณต้องกำหนดค่าที่เก็บของคุณเพื่อปรับใช้จากสาขาที่คุณผลักดันไป ในการทำเช่นนี้ให้ไปที่การตั้งค่าที่เก็บของคุณคลิกที่ Pages และเลือก Deploy from a Branch จากดรอปดาวน์ Source จากที่นั่นเลือกสาขาที่คุณมอบให้กับการกระทำ ในกรณีส่วนใหญ่นี่จะเป็น gh-pages ซึ่งเป็นค่าเริ่มต้น
หากคุณต้องการที่จะทำให้เป็นเวิร์กโฟลว์จะกระตุ้นให้เกิดเหตุการณ์ผลักดันไปยังสาขาเฉพาะคุณสามารถแก้ไขส่วน on
on :
push :
branches :
- main คำเตือน
หากคุณไม่ได้จัดหาการกระทำด้วยโทเค็นการเข้าถึงหรือคีย์ SSH คุณต้องเข้าถึงการตั้งค่าที่เก็บและให้ Read and Write Permissions ไปยัง GITHUB_TOKEN ที่ให้ไว้มิฉะนั้นคุณจะพบปัญหาการอนุญาต หรือคุณสามารถตั้งค่าต่อไปนี้ในไฟล์เวิร์กโฟลว์ของคุณเพื่อให้การดำเนินการตามที่ต้องการ
permissions :
contents : write ส่วนที่ with เวิร์กโฟลว์ จะต้อง กำหนดค่าก่อนที่การกระทำจะทำงาน คุณสามารถเพิ่มสิ่งเหล่านี้ใน with ที่พบในตัวอย่างด้านบน secrets ใด ๆ จะต้องอ้างอิงโดยใช้ไวยากรณ์ตัวยึดและเก็บไว้ในเมนู Settings/Secrets ของ GitHub คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่าตัวแปรสภาพแวดล้อมด้วยการกระทำของ GitHub ที่นี่
ต้องกำหนดค่าตัวเลือกต่อไปนี้เพื่อทำการปรับใช้
| สำคัญ | ข้อมูลคุณค่า | พิมพ์ | ที่จำเป็น |
|---|---|---|---|
folder | โฟลเดอร์ในที่เก็บข้อมูลที่คุณต้องการปรับใช้ หากสคริปต์บิลด์ของคุณรวบรวมลงในไดเรกทอรีชื่อ build คุณจะใส่ไว้ที่นี่ หากคุณต้องการปรับใช้ไดเรกทอรีรูทคุณสามารถ . ที่นี่. นอกจากนี้คุณยังสามารถใช้เส้นทางไฟล์สัมบูรณ์โดยเตรียมล่วงหน้า ~ ไปยังเส้นทางโฟลเดอร์ของคุณ โปรดทราบว่ารายการไฟล์/โฟลเดอร์ใด ๆ ที่ตรงกัน .gitignore จะไม่ถูกปรับใช้ เครื่องมือบางอย่างสร้างไฟล์ .gitignore โดยอัตโนมัติสำหรับการสร้างเอาต์พุต | with | ใช่ |
โดยค่าเริ่มต้นการดำเนินการไม่จำเป็นต้องมีการกำหนดค่าโทเค็นใด ๆ และใช้โทเค็น GitHub ที่จัดเก็บที่เก็บไว้เพื่อให้การปรับใช้ หากคุณต้องการการปรับแต่งเพิ่มเติมคุณสามารถแก้ไขประเภทการปรับใช้โดยใช้ตัวเลือกต่อไปนี้
| สำคัญ | ข้อมูลคุณค่า | พิมพ์ | ที่จำเป็น |
|---|---|---|---|
token | ตัวเลือกนี้เริ่มต้นไปยังโทเค็น GitHub ที่กำหนดขอบเขตที่เก็บ อย่างไรก็ตามหากคุณต้องการสิทธิ์เพิ่มเติมสำหรับสิ่งต่าง ๆ เช่นการปรับใช้กับที่เก็บอื่นคุณสามารถเพิ่มโทเค็นการเข้าถึงส่วนบุคคล (PAT) ได้ที่นี่ สิ่งนี้ควรเก็บไว้ใน secrets / with เมนู เป็นความลับ เราขอแนะนำให้ใช้บัญชีบริการที่มีสิทธิ์น้อยที่สุดที่จำเป็นและแนะนำเมื่อสร้าง PAT ใหม่ที่คุณเลือกขอบเขตการอนุญาตน้อยที่สุดที่จำเป็น เรียนรู้เพิ่มเติมเกี่ยวกับการสร้างและการใช้ความลับที่เข้ารหัสที่นี่ | with | เลขที่ |
ssh-key | คุณสามารถกำหนดค่าการกระทำเพื่อปรับใช้โดยใช้ SSH โดยการตั้งค่าตัวเลือกนี้เป็นคีย์ส่วนตัว SSH ที่เก็บไว้ เป็นความลับ นอกจากนี้ยังสามารถตั้งค่าเป็น true เพื่อใช้การกำหนดค่าไคลเอนต์ SSH ที่มีอยู่ สำหรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการเพิ่มคู่คีย์ SSH สาธารณะ/ส่วนตัวของคุณโปรดดูที่การใช้ส่วนคีย์การปรับใช้ของ readMe นี้ | with | เลขที่ |
| สำคัญ | ข้อมูลคุณค่า | พิมพ์ | ที่จำเป็น |
|---|---|---|---|
branch | นี่คือสาขาที่คุณต้องการปรับใช้เช่น gh-pages หรือ docs ค่าเริ่มต้นเป็น gh-pages | with | เลขที่ |
git-config-name | ช่วยให้คุณสามารถปรับแต่งชื่อที่แนบมากับการกำหนดค่า GIT ซึ่งใช้เมื่อผลักดันการปรับใช้ หากไม่รวมอยู่จะใช้ชื่อในบริบทของ GitHub ตามด้วยชื่อของการกระทำ | with | เลขที่ |
git-config-email | ช่วยให้คุณสามารถปรับแต่งอีเมลที่แนบกับการกำหนดค่า GIT ซึ่งใช้เมื่อผลักดันการปรับใช้ หากไม่รวมอยู่จะใช้อีเมลในบริบทของ GitHub ตามด้วยอีเมล GitHub ทั่วไป คุณสามารถรวม <> สำหรับค่าหากคุณต้องการละเว้นฟิลด์นี้โดยสิ้นเชิงและผลักดันการกระทำโดยไม่มีอีเมล | with | เลขที่ |
repository-name | ช่วยให้คุณระบุเส้นทางที่เก็บที่แตกต่างกันตราบใดที่คุณมีสิทธิ์ผลักดันไป สิ่งนี้ควรจัดรูปแบบเช่น So: JamesIves/github-pages-deploy-action คุณจะต้องใช้ PAT ในอินพุต token สำหรับตัวเลือกการกำหนดค่านี้เพื่อทำงานอย่างถูกต้อง | with | เลขที่ |
target-folder | หากคุณต้องการผลักดันเนื้อหาของโฟลเดอร์การปรับใช้ลงในไดเรกทอรีเฉพาะในสาขาการปรับใช้คุณสามารถระบุได้ที่นี่ | with | เลขที่ |
commit-message | หากคุณต้องการปรับแต่งข้อความ commit สำหรับการรวมคุณสามารถทำได้ | with | เลขที่ |
clean | คุณสามารถใช้ตัวเลือกนี้เพื่อลบไฟล์ออกจากปลายทางการปรับใช้ของคุณซึ่งไม่มีอยู่ในแหล่งการปรับใช้ของคุณอีกต่อไป กรณีการใช้งานหนึ่งคือถ้าโครงการของคุณสร้างไฟล์แฮชที่แตกต่างจากการสร้างเพื่อสร้าง การใช้ clean จะไม่ส่งผลกระทบต่อ .git , .github หรือ .ssh ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้นและสามารถสลับได้โดยการตั้งค่าเป็น false | with | เลขที่ |
clean-exclude | หากคุณต้องการใช้ clean แต่คุณต้องการรักษาไฟล์หรือโฟลเดอร์บางอย่างคุณสามารถใช้ตัวเลือกนี้ได้ สิ่งนี้ควรมีแต่ละรูปแบบเป็นบรรทัดเดียวในสตริง multiline | with | เลขที่ |
dry-run | อย่าผลักดันกลับ แต่ใช้ --dry-run บน git push Invocations แทน | with | เลขที่ |
single-commit | ตัวเลือกนี้สามารถสลับเป็น true หากคุณต้องการที่จะมีการกระทำเพียงครั้งเดียวในสาขาการปรับใช้แทนการรักษาประวัติเต็มรูปแบบ การใช้ตัวเลือกนี้จะทำให้ประวัติใด ๆ ที่มีอยู่ถูกเช็ดออกจากสาขาการปรับใช้ | with | เลขที่ |
force | บังคับให้ใช้งานใหม่เพื่อเขียนทับเวอร์ชันก่อนหน้า มิฉะนั้นพยายามที่จะเปลี่ยนการปรับใช้ใหม่ไปยังการใช้งานที่มีอยู่ ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้นและสามารถสลับได้โดยการตั้งค่าเป็น false ซึ่งอาจมีประโยชน์หากมีการปรับใช้หลายรายการในสาขาเดียว | with | เลขที่ |
attempt-limit | มีการรีเบสกี่ครั้งก่อนที่จะระงับงาน ตัวเลือกนี้เริ่มต้นเป็น 3 และอาจเป็นประโยชน์ในการเพิ่มขึ้นเมื่อมีการปรับใช้หลายรายการในสาขาเดียว | with | เลขที่ |
silent | ปิดเสียงเอาท์พุตแอ็คชั่นป้องกันไม่ให้แสดงข้อความ GIT | with | เลขที่ |
tag | เพิ่มแท็กลงในการกระทำ ใช้งานได้เฉพาะเมื่อไม่ได้ใช้งาน dry-run | with | เลขที่ |
ด้วยการกำหนดค่าการกระทำอย่างถูกต้องคุณควรเห็นเวิร์กโฟลว์ทริกเกอร์การปรับใช้ภายใต้เงื่อนไขที่กำหนดค่า
การกระทำจะส่งออกตัวแปรสภาพแวดล้อมที่เรียกว่า deployment_status ที่คุณสามารถใช้ในเวิร์กโฟลว์ของคุณเพื่อพิจารณาว่าการปรับใช้สำเร็จหรือไม่ คุณสามารถค้นหาคำอธิบายของแต่ละประเภทสถานะด้านล่าง
| สถานะ | คำอธิบาย |
|---|---|
success | สถานะ success บ่งชี้ว่าการกระทำสามารถนำไปใช้กับสาขาได้สำเร็จ |
failed | สถานะ failed ชี้ว่าการกระทำพบข้อผิดพลาดในขณะที่พยายามปรับใช้ |
skipped | สถานะ skipped แสดงให้เห็นว่าการกระทำที่ออกก่อนเนื่องจากไม่มีอะไรใหม่ที่จะปรับใช้ |
ค่านี้ถูกตั้งค่าเป็นเอาต์พุตขั้นตอนเป็น deployment-status
หากคุณต้องการใช้คีย์การปรับใช้ SSH เมื่อเทียบกับโทเค็นคุณต้องสร้างคีย์ SSH ใหม่ก่อนเรียกใช้คำสั่งเทอร์มินัลต่อไปนี้แทนที่อีเมลด้วยหนึ่งที่เชื่อมต่อกับบัญชี GitHub ของคุณ
ssh-keygen -t rsa -m pem -b 4096 -C " [email protected] " -N " " เมื่อคุณสร้างคู่คีย์คุณต้องเพิ่มเนื้อหาของคีย์สาธารณะภายในเมนูการปรับใช้คีย์ของที่เก็บ คุณสามารถค้นหาตัวเลือกนี้ได้โดยไปที่ Settings > Deploy Keys คุณสามารถตั้งชื่อคีย์สาธารณะได้ทุกอย่างที่คุณต้องการ แต่คุณ จำเป็น ต้องให้การเข้าถึงการเขียน หลังจากนั้นเพิ่มเนื้อหาของคีย์ส่วนตัวลงในเมนู Settings > Secrets เป็น DEPLOY_KEY
ด้วยการกำหนดค่านี้คุณสามารถตั้งค่าส่วน ssh-key ของการกระทำไปยังคีย์ส่วนตัวของคุณที่เก็บไว้เป็นความลับ
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : site
ssh-key : ${{ secrets.DEPLOY_KEY }} name : Build and Deploy
on :
push :
branches :
- main
jobs :
deploy :
concurrency : ci-${{ github.ref }}
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : build
clean : true
clean-exclude : |
special-file.txt
some/*.txt
ssh-key : ${{ secrets.DEPLOY_KEY }} อีกทางเลือกหนึ่งหากคุณกำหนดค่าไคลเอนต์ SSH ภายในขั้นตอนก่อนหน้านี้คุณสามารถตั้งค่าตัวเลือก ssh-key เป็น true เพื่ออนุญาตให้ปรับใช้โดยใช้ไคลเอนต์ SSH ที่มีอยู่ แทนที่จะปรับการกำหนดค่าไคลเอนต์มันจะเปลี่ยนไปใช้จุดสิ้นสุด SSH ของ GitHub
การกระทำนี้ได้รับการพัฒนาเป็นหลักโดยใช้ Ubuntu ในการกำหนดค่างานเวิร์กโฟลว์ของคุณขอแนะนำให้ตั้งค่าคุณสมบัติ runs-on เป็น ubuntu-latest
jobs :
build-and-deploy :
runs-on : ubuntu-latest หากคุณใช้ระบบปฏิบัติการเช่น Windows คุณสามารถแก้ปัญหานี้ได้โดยใช้สิ่งประดิษฐ์ ในการกำหนดค่าเวิร์กโฟลว์ของคุณคุณสามารถใช้ actions/upload-artifact และ actions/download-artifact เพื่อย้ายโครงการของคุณที่สร้างขึ้นบนงาน Windows ไปยังงานรองที่จะจัดการกับการปรับใช้
name : Build and Deploy
on : [push]
permissions :
contents : write
jobs :
build :
runs-on : windows-latest # The first job utilizes windows-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Upload Artifacts ? # The project is then uploaded as an artifact named 'site'.
uses : actions/upload-artifact@v1
with :
name : site
path : build
deploy :
concurrency : ci-${{ github.ref }}
needs : [build] # The second job must depend on the first one to complete before running and uses ubuntu-latest instead of windows.
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Download Artifacts ? # The built project is downloaded into the 'site' folder.
uses : actions/download-artifact@v1
with :
name : site
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : ' site ' # The deployment folder should match the name of the artifact. Even though our project builds into the 'build' folder the artifact name of 'site' must be placed here. หากคุณใช้คอนเทนเนอร์ในเวิร์กโฟลว์ของคุณคุณอาจต้องเรียกใช้ขั้นตอนเพิ่มเติมเพื่อติดตั้ง rsync เนื่องจากการกระทำนี้ขึ้นอยู่กับมัน คุณสามารถดูตัวอย่างของสิ่งนี้ด้านล่าง
- name : Install rsync
run : |
apt-get update && apt-get install -y rsync
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4 หากคุณใช้โดเมนที่กำหนดเองและต้องการไฟล์ CNAME หรือหากคุณต้องการใช้ไฟล์ .nojekyll คุณสามารถส่งไฟล์เหล่านี้ไปยังสาขาการปรับใช้โดยตรงโดยไม่ต้องถูกแทนที่หลังจากการปรับใช้แต่ละครั้งนอกจากนี้คุณสามารถรวมไฟล์เหล่านี้ไว้ในโฟลเดอร์การปรับใช้ของคุณเพื่ออัปเดต หากคุณต้องการเพิ่มไฟล์เพิ่มเติมในการปรับใช้ที่ควรละเว้นโดยขั้นตอนการทำความสะอาดบิลด์คุณสามารถใช้ตัวเลือก clean-exclude
name : Build and Deploy
permissions :
contents : write
on :
push :
branches :
- main
jobs :
deploy :
concurrency : ci-${{ github.ref }}
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : build
clean : true
clean-exclude : |
special-file.txt
some/*.txtหากคุณต้องการลบไฟล์เหล่านี้คุณต้องเข้าไปในสาขาการปรับใช้โดยตรงเพื่อลบไฟล์เหล่านั้น นี่คือการป้องกันการเปลี่ยนแปลงโดยบังเอิญในสคริปต์การปรับใช้ของคุณจากการสร้างการเปลี่ยนแปลงที่แตกหัก