


บันทึก
ดูการดำเนินการอย่างเป็นทางการของ GitHub GitHub ก่อน
นี่คือ การกระทำของ 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 Actions จะสร้างความลับ GITHUB_TOKEN โดยอัตโนมัติเพื่อตรวจสอบความถูกต้องในเวิร์กโฟลว์ของคุณ ดังนั้นคุณสามารถเริ่มปรับใช้ได้ทันทีโดยไม่ต้องกำหนดค่าใด ๆ
รองรับสามโทเค็น
| โทเค็น | repo ส่วนตัว | repo สาธารณะ | โปรโตคอล | การตั้งค่า |
|---|---|---|---|---|
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_direxclude_assetscnameenable_jekyllallow_empty_commitkeep_files ไฟล์ที่มีอยู่ไว้external_repositoryforce_orphanGITHUB_TOKEN เพิ่มไฟล์เวิร์กโฟลว์ของคุณ .github/workflows/gh-pages.yml และผลักมันไปยังสาขาเริ่มต้นระยะไกลของคุณ
นี่คือตัวอย่างเวิร์กโฟลว์สำหรับ Hugo
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 |
|---|---|
![]() | ![]() |
github_token ตัวเลือกนี้มีไว้สำหรับ GITHUB_TOKEN ไม่ใช่โทเค็นการเข้าถึงส่วนบุคคล
นักวิ่ง GitHub Actions จะสร้างความลับ 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 อ่านคีย์ Create SSH สร้างคีย์ SSH DEPLING ของคุณและตั้งค่าตัวเลือก 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 ไดเรกทอรีแหล่งที่มาเพื่อปรับใช้กับหน้า GitHub ค่าเริ่มต้นคือ public เฉพาะเนื้อหาของ DIR นี้เท่านั้นที่ถูกผลักไปที่ GitHub Pages Branch, gh-pages โดยค่าเริ่มต้น
- name : Deploy
uses : peaceiris/actions-gh-pages@v4
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
publish_dir : ./out # default: publicdestination_dirคุณสมบัตินี้อยู่ในเบต้า ข้อเสนอแนะใด ๆ ยินดีต้อนรับที่ปัญหา #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 รองรับรูปแบบ GLOB
- 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 เป็นจริง
โดยค่าเริ่มต้นการดำเนินการนี้ส่งสัญญาณไปยังหน้า GitHub ว่าไซต์จะไม่ถูกประมวลผลด้วย Jekyll สิ่งนี้ทำได้โดยการเพิ่มไฟล์ .nojekyll ที่ว่างเปล่าในสาขาการเผยแพร่ของคุณ เมื่อไฟล์นั้นมีอยู่แล้วการกระทำนี้จะไม่ทำอะไรเลย
การข้าม Jekyll ทำให้การปรับใช้เร็วขึ้นและจำเป็นหากคุณกำลังปรับใช้ไฟล์หรือไดเรกทอรีที่เริ่มต้นด้วยขีดเส้นใต้เนื่องจาก Jekyll พิจารณาว่าสิ่งเหล่านี้เป็นทรัพยากรพิเศษและไม่ได้คัดลอกไปยังไซต์สุดท้าย คุณจะต้องตั้งค่า enable_jekyll เป็นจริงเมื่อคุณต้องการปรับใช้เว็บไซต์ที่ขับเคลื่อนด้วย 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 : พื้นที่เก็บข้อมูลสาธารณะโดยใช้หน้า GitHubforce_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 ' 
ตั้งค่าข้อความ commit ที่กำหนดเอง เมื่อเราสร้าง commit กับ 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 " "คุณจะได้รับ 2 ไฟล์:
gh-pages.pub เป็นกุญแจสาธารณะgh-pages เป็นคีย์ส่วนตัวถัดไปไปที่ การตั้งค่าที่เก็บ
ACTIONS_DEPLOY_KEY| เพิ่มคีย์สาธารณะของคุณ | ความสำเร็จ |
|---|---|
![]() | ![]() |
| เพิ่มคีย์ส่วนตัวของคุณ | ความสำเร็จ |
|---|---|
![]() | ![]() |
GITHUB_TOKEN GITHUB_TOKEN มีข้อ จำกัด สำหรับการปรับใช้ครั้งแรกดังนั้นเราต้องเลือกสาขา GitHub Pages บนแท็บการตั้งค่าที่เก็บ หลังจากนั้นทำการปรับใช้ครั้งที่สองเช่นรูปภาพต่อไปนี้
| การปรับใช้ครั้งแรกล้มเหลว | ไปที่แท็บการตั้งค่า |
|---|---|
![]() | ![]() |
| เลือกสาขา | ปรับใช้อีกครั้งและประสบความสำเร็จ |
|---|---|
![]() | ![]() |
หากการดำเนินการล้มเหลวในการผลักดันการกระทำหรือแท็กด้วยข้อผิดพลาดต่อไปนี้:
/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 Native Adentabot นี่คือตัวอย่างการกำหนดค่าของบอท ไฟล์ config อยู่ใน .github/dependabot.yml
version : 2
updates :
- package-ecosystem : " github-actions "
directory : " / "
schedule :
interval : " daily "
labels :
- " CI/CD "
commit-message :
prefix : ciดูเอกสารประกอบอย่างเป็นทางการสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Adentabot: ทำให้การพึ่งพาของคุณอัปเดตโดยอัตโนมัติ - เอกสาร GitHub
สำหรับการปรับใช้อย่างสม่ำเสมอเราสามารถตั้งค่าทริกเกอร์เวิร์กโฟลว์ on.schedule ดูกิจกรรมที่กำหนด เหตุการณ์ที่เรียกเวิร์กโฟลว์ - เอกสาร 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 :
...Cf. การสนับสนุน: การดำเนินการจาก Hashref Disabled/Broken vs GitHub Action Action Security Security แนวทางปฏิบัติที่ดีที่สุด? ·ออก #712 · Peaceiris/action-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, react-static, gridsome, สร้าง react-app และอื่น ๆ โปรดตรวจสอบว่าไดเรกทอรีผลลัพธ์ของคุณอยู่ที่ไหนก่อนที่จะผลักดันเวิร์กโฟลว์ของคุณ เช่น 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) ด้วย create-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) ด้วย create-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, Sphinx และอื่น ๆ
หลักฐาน: การพึ่งพาได้รับการจัดการโดย 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 จากนั้นตามเอกสารคุณอาจใส่ ./target/doc/ ไปที่ . ./book/src dir ก่อนที่คุณ mdbook build และจากนั้นมันจะจบลงที่ ./book/html/ html/ และในหน้า GitHub ของคุณ
ตัวอย่างเวิร์กโฟลว์สำหรับโครงการเว็บ 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ตัวอย่างเวิร์กโฟลว์สำหรับ Elm
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ตัวอย่างเวิร์กโฟลว์สำหรับ Johnsundell/Publish
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