ทุกที่เก็บ GitHub สามารถมี ( หรือเป็น ) เว็บไซต์GitHub Pagesซึ่งสามารถสร้างด้วย Jekyll GitHub สร้างไซต์ทุกครั้งที่คุณส่งคอมมิตใหม่
มีวิธีบังคับให้รีเฟรชเว็บไซต์ Github Pages โดยไม่ต้องกดคอมมิตใหม่หรือไม่?
ทุกที่เก็บ GitHub สามารถมี ( หรือเป็น ) เว็บไซต์GitHub Pagesซึ่งสามารถสร้างด้วย Jekyll GitHub สร้างไซต์ทุกครั้งที่คุณส่งคอมมิตใหม่
มีวิธีบังคับให้รีเฟรชเว็บไซต์ Github Pages โดยไม่ต้องกดคอมมิตใหม่หรือไม่?
คำตอบ:
จากการสนับสนุน GitHub 2014-06-07:
ขณะนี้ยังไม่สามารถทริกเกอร์การสร้างใหม่ด้วยตนเองได้โดยไม่ต้องกดคอมมิตไปยังสาขาที่เหมาะสม
ดังที่แอนดี้ชี้ให้เห็นในความคิดเห็นคุณสามารถผลักดันการกระทำที่ว่างเปล่าด้วยคำสั่ง:
git commit -m 'rebuild pages' --allow-empty
git push origin <branch-name>
ขอขอบคุณที่การกระทำ GitHub มันค่อนข้างง่ายที่จะก่อให้เกิดรายวันเผยแพร่: https://stackoverflow.com/a/61706020/4548500
git log
หากคุณต้องการวิธีแก้ปัญหาสคริปต์ด่วนนี่คือ เพียงทำภารกิจต่อไปนี้เพียงครั้งเดียวและเรียกใช้สคริปต์เมื่อใดก็ตามที่คุณต้องการสร้างหน้า GitHub ของคุณใหม่
Settings > Developer settings > Personal access tokens > Generate new token
ไปที่:repo
ขอบเขตขีดสร้างไฟล์ที่เรียกRebuildPage.sh
และเพิ่มบรรทัด:
#!/bin/bash
curl -u yourname:yourtoken -X POST https://api.github.com/repos/yourname/yourrepo/pages/builds
ที่นี่
yourname
ด้วยชื่อผู้ใช้ GitHub ของคุณyourtoken
ด้วยโทเค็นการเข้าถึงส่วนบุคคลที่คุณคัดลอกมาyourrepo
ด้วยชื่อที่เก็บของคุณหากคุณใช้ Windows 10:
#!/bin/bash
) RebuildPage.bat
จากสคริปต์และบันทึกสคริปต์ที่เป็น (เช่นแทนที่.sh
ด้วย.bat
ในชื่อไฟล์สคริปต์)ทางเลือกอื่นสำหรับจุดข้างต้น: ในการรับคุณสมบัติดับเบิลคลิกเพื่อเรียกใช้.sh
ไฟล์:
bash.exe
เป็นโปรแกรมเริ่มต้นสำหรับ.sh
ไฟล์เปิดและแก้ไขregedit.exe
HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command
ตั้ง(Default)
ค่าเป็น:
"C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
ตอนนี้ดับเบิลคลิกที่สคริปต์เมื่อคุณต้องการสร้างหน้า GitHub ของคุณใหม่ เสร็จแล้ว!
หากคุณใช้ Linux / Mac การเรียกใช้สคริปต์จะเหมือนกับการเรียกใช้สคริปต์อื่น ๆ เสร็จแล้ว!
โซลูชันนี้ใช้ API ของ GitHub REST API v3 นี่คือเอกสารอย่างเป็นทางการสำหรับ API
ฉันมีปัญหานี้มาระยะหนึ่งแล้วและการผลักดันไปยังสาขาหลักไม่ได้เปลี่ยนแปลงอะไรเลยmyapp.github.io
ด้วยเหตุผลสองประการ:
1 - สร้าง
ไม่ว่าฉันจะพยายามผลักดันผลงานของตัวเองกี่ครั้งงานสร้างก็ไม่เริ่มต้น ฉันพบวิธีแก้ปัญหาโดยการแก้ไขไฟล์ของฉันในโปรแกรมแก้ไขออนไลน์ของ Github (เปิด index.html ของคุณและแก้ไขบนเว็บไซต์ Github จากนั้นคอมมิต)
2 - ปัญหาการแคช
แม้ว่าจะสร้างสำเร็จแล้ว แต่ฉันก็ยังคงเห็นหน้าเดิมทุกประการmyapp.github.io
และการโหลดซ้ำอย่างหนักCtrl + Shift + R
ก็จะไม่สามารถแก้ไขได้ หากใช้ Chrome ให้ตรวจสอบหน้าของคุณเข้าไปที่Application
แท็บเลือก "ล้างที่เก็บข้อมูล" ในเมนูด้านซ้ายจากนั้นคลิก "ล้างข้อมูลไซต์" ที่ด้านล่างของเมนู
ตอนนี้ GitHub Actions พร้อมใช้งานแล้วสิ่งนี้เป็นเรื่องเล็กน้อยที่ต้องทำ:
# File: .github/workflows/refresh.yml
name: Refresh
on:
schedule:
- cron: '0 3 * * *' # Runs every day at 3am
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- name: Trigger GitHub pages rebuild
run: |
curl --fail --request POST \
--url https://api.github.com/repos/${{ github.repository }}/pages/builds \
--header "Authorization: Bearer $USER_TOKEN"
env:
# You must create a personal token with repo access as GitHub does
# not yet support server-to-server page builds.
USER_TOKEN: ${{ secrets.USER_TOKEN }}
ตัวอย่าง repo ที่ทำสิ่งนี้: https://github.com/SUPERCILEX/personal-website/actions
Pages API: https://developer.github.com/v3/repos/pages/#request-a-page-build
แม้ว่าฉันจะส่งการเปลี่ยนแปลงไปยังที่เก็บ GitHub แต่ฉันก็ยังไม่เห็นการเปลี่ยนแปลงในวันนี้ จากนั้นฉันตรวจสอบการตั้งค่าที่เก็บของฉันเพื่อดูข้อมูลเพิ่มเติมที่นั่นฉันเห็นทุกครั้งที่การสร้างล้มเหลวและนั่นคือเหตุผลที่ฉันไม่สามารถเห็นการเปลี่ยนแปลง
คุณอาจเห็นข้อความว่า "ไซต์ของคุณมีปัญหาในการสร้าง: ไม่สามารถสร้างเพจได้โปรดลองอีกครั้งในภายหลัง"
จากนั้นฉันกำลังตรวจสอบการกระทำล่าสุดของฉันและพยายามหาสาเหตุของปัญหานี้ ในตอนท้ายฉันสามารถแก้ไขปัญหาได้
มีเครื่องหมายจุลภาคเพิ่มเติมในแท็ก (,) และนั่นทำให้เกิดปัญหานี้
คุณจะไม่ได้รับข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องหากมีปัญหาใด ๆ ในไฟล์. md ของคุณ ขอแนะนำให้คุณตรวจสอบสถานะการสร้างและเปรียบเทียบการเปลี่ยนแปลงหากคุณประสบปัญหาเดียวกัน
การกระทำที่ว่างเปล่าไม่ได้ผลสำหรับฉัน แต่จากคำตอบของ @benett สิ่งนี้ใช้ได้กับฉัน:
เปิดบุรุษไปรษณีย์สร้างคำขอใหม่ด้วย URL นี้: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (แทนที่ด้วยชื่อและ repo ของคุณ) และเลือกวิธีการ POST
ก่อนที่คุณจะเรียกใช้ให้ไปที่headers
แท็บและเพิ่มคีย์ใหม่ที่Accept
มีค่าapplication/vnd.github.mister-fantastic-preview+json
ตอนนี้คุณสามารถเรียกใช้และเยี่ยมชมเพจของคุณอีกครั้ง
{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }
แล้ว อาจเป็นเพราะ repo ของฉันเป็นแบบส่วนตัว?
สิ่งนี้ทำได้ตั้งแต่ v3 ของ GitHub API แม้ว่าจะอยู่ในตัวอย่าง
https://developer.github.com/v3/repos/pages/#request-a-page-build
POST /repos/:owner/:repo/pages/builds
คุณอาจได้รับอีเมลจาก GitHub ที่แจ้งว่า Jekyll ไม่ประสบความสำเร็จในการสร้างเว็บไซต์ของคุณเมื่อคุณส่งไปยังgh-pages
ไฟล์. หากเป็นกรณีนี้คุณสามารถพยายามบังคับให้พุชทริกเกอร์งานสร้างอื่น
หากคุณใช้โฟลเดอร์เฉพาะสำหรับเว็บไซต์สุดท้ายสมมติว่ามีpublic
โฟลเดอร์คุณสามารถลองสร้างโฟลเดอร์ของคุณใหม่และเพิ่มโฟลเดอร์ในการเปลี่ยนแปลงที่คุณกำหนดไว้ หลังจากนั้นคุณจะต้องแยกไฟล์เหล่านั้นออกเป็นgh-pages
สาขาของคุณและบังคับให้พวกเขาทริกเกอร์บิวด์อื่นแม้ว่าไฟล์จะไม่เปลี่ยนแปลงเลยก็ตาม ส่วนที่เหลือของโค้ดร้องเพียงแค่ลบคอมมิตสำหรับpublic
โฟลเดอร์เพื่อความสะดวกและลบออกจากระบบไฟล์ในเครื่อง
git add public
git commit -am ":bug: triggering another jekyll build"
git push origin $(git subtree split --prefix public master):gh-pages --force
git reset HEAD~1
rm -rf public
หากมีการเปลี่ยนแปลงที่ไม่ได้รับคำสั่งซึ่งไม่ได้เป็นส่วนหนึ่งของไซต์สุดท้ายคุณสามารถซ่อนไว้โดยใช้คำสั่งต่อไปนี้
git stash
จากนั้นทำตามคำสั่งด้านบนเพื่อบังคับสร้าง Jekyll ด้วยตนเองและปลดล็อก
git stash pop