Làm thế nào để buộc xây dựng Trang GitHub?


109

Mỗi kho lưu trữ GitHub có thể ( hoặc là ) một trang web GitHub Pages , có thể được xây dựng bằng Jekyll. GitHub xây dựng trang web mỗi khi bạn đẩy một cam kết mới.
Có cách nào để buộc làm mới trang web Github Pages mà không đẩy một cam kết mới không?


Có thể điều này phù hợp với chính sách bộ nhớ cache của họ? ( stackoverflow.com/a/13106972/6309 )
VonC

2
Trên thực tế, bạn có thể liên hệ với bộ phận hỗ trợ GitHub để được xác nhận và đăng câu trả lời tại đây. Điều đó có thể giúp những người khác.
VonC

1
Theo tài liệu , các trang github có giới hạn 10 bản dựng mỗi giờ. Theo kinh nghiệm của tôi, nếu bạn vượt quá giới hạn, một bản dựng mới sẽ không được kích hoạt, ngay cả khi bạn đẩy một cam kết mới.
Jakub Kukul

Câu trả lời:


151

Từ hỗ trợ GitHub, 2014-06-07:

Hiện tại, không thể kích hoạt xây dựng lại theo cách thủ công mà không đẩy cam kết đến nhánh thích hợp.


Biên tập:

Như Andy đã chỉ ra trong các nhận xét, bạn có thể đẩy một cam kết trống bằng lệnh:

git commit -m 'rebuild pages' --allow-empty
git push origin <branch-name>

Chỉnh sửa 2:

Nhờ GitHub Actions, khá dễ dàng để kích hoạt xuất bản hàng ngày: https://stackoverflow.com/a/61706020/4548500 .


3
Nếu bạn may mắn như tôi, hãy kiểm tra trạng thái Github vì chúng có thể ngừng hoạt động hoặc gặp sự cố với các công việc / bản dựng nền.
f01

tl, drgit log
nilon

20

Nếu bạn muốn có một giải pháp kịch bản nhanh chóng, đây là nó. Chỉ cần thực hiện các tác vụ sau một lần và chạy tập lệnh bất cứ khi nào bạn muốn xây dựng lại trang GitHub của mình.

1. Tạo mã thông báo truy cập cá nhân cho dòng lệnh:

  • Làm theo trợ giúp chính thức tại đây để tạo mã thông báo truy cập cá nhân. Về cơ bản, bạn phải đăng nhập vào tài khoản GitHub của bạn và đi đến: Settings > Developer settings > Personal access tokens > Generate new token.
  • Đánh dấu vào repophạm vi.
  • Sao chép mã thông báo.

2. Tạo tập lệnh sau:

  • Tạo một tệp có tên RebuildPage.shvà thêm các dòng:

    #!/bin/bash
    curl -u yourname:yourtoken -X POST https://api.github.com/repos/yourname/yourrepo/pages/builds
    

    Đây,

    • Thay thế yournamebằng tên người dùng GitHub của bạn.
    • Thay thế yourtokenbằng mã thông báo truy cập cá nhân đã sao chép của bạn.
    • Thay thế yourrepobằng tên kho lưu trữ của bạn.

3. Chạy tập lệnh:

  • Nếu bạn sử dụng Windows 10:

    • Bạn cần thiết lập Hệ thống con của Windows cho Linux , nếu chưa hoàn tất. Làm theo điều này để làm như vậy.
    • Xóa dòng đầu tiên ( #!/bin/bash) khỏi tập lệnh và lưu tập lệnh dưới dạng RebuildPage.bat. (tức là, thay thế .shbằng .battrong tên tệp script)
    • Thay thế cho điểm trên: Để có được tính năng nhấp đúp để chạy .shtệp:

      • Đặt bash.exelàm chương trình mặc định cho .shtệp.
      • Mở regedit.exevà chỉnh sửa HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Đặt (Default)giá trị thành:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Bây giờ hãy nhấp đúp vào tập lệnh khi bạn muốn xây dựng lại trang GitHub của mình. Làm xong!

  • Nếu bạn sử dụng Linux / Mac, việc chạy script cũng giống như chạy các script khác. Làm xong!

Các lưu ý bổ sung cho giải pháp:

Giải pháp này sử dụng một API của GitHub REST API v3. Đây là tài liệu chính thức cho API.


7

Tôi đã gặp sự cố này trong một thời gian và việc đẩy lên nhánh chính không thay đổi bất kỳ điều gì myapp.github.io, vì hai lý do:

1 - Xây dựng

Bất kể tôi đã cố gắng đẩy công việc của mình lên bậc thầy bao nhiêu lần, quá trình xây dựng sẽ không bắt đầu. Tôi đã tìm thấy cách giải quyết bằng cách sửa đổi tệp của mình trong trình chỉnh sửa trực tuyến Github (mở index.html của bạn và chỉnh sửa nó trên trang web Github, sau đó cam kết)

2 - Các vấn đề về bộ nhớ đệm

Ngay cả sau khi xây dựng thành công, tôi vẫn sẽ thấy cùng một trang trên myapp.github.io và việc tải lại khó Ctrl + Shift + Rsẽ không giải quyết được vấn đề đó. Thay vào đó, nếu sử dụng Chrome, hãy kiểm tra trang của bạn, đi vào Applicationtab, chọn "Xóa bộ nhớ" ở menu bên trái và nhấp vào "Xóa dữ liệu trang web" ở cuối menu.


6

Giờ đây, GitHub Actions đã có sẵn, điều này rất đơn giản để làm:

# 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 mẫu thực hiện việc này: https://github.com/SUPERCILEX/personal-website/actions

API của trang: https://developer.github.com/v3/repos/pages/#request-a-page-build


5

Ngay cả sau khi tôi đã đẩy các thay đổi của mình lên kho lưu trữ GitHub, tôi vẫn không thể thấy các thay đổi ngày hôm nay. Sau đó, tôi kiểm tra cài đặt kho lưu trữ của mình để biết thêm thông tin, ở đó tôi có thể thấy, tất cả những lần xây dựng đều không thành công và đó là lý do tôi không thể thấy các thay đổi.

nhập mô tả hình ảnh ở đây

Bạn cũng có thể thấy một thông báo là "Trang web của bạn đang gặp sự cố khi xây dựng: Không thể tạo trang. Vui lòng thử lại sau."

Sau đó, tôi đang kiểm tra các cam kết gần đây của mình và cố gắng tìm ra nguyên nhân gây ra sự cố này. Cuối cùng, tôi đã có thể khắc phục sự cố.

nhập mô tả hình ảnh ở đây

thêm một dấu phẩy trong các thẻ (,) và điều đó gây ra sự cố này .

nhập mô tả hình ảnh ở đây

Bạn sẽ không nhận được thông báo lỗi liên quan nếu có bất kỳ vấn đề nào trong tệp .md của bạn. Tôi khuyên bạn nên kiểm tra trạng thái xây dựng và so sánh các thay đổi nếu bạn đang gặp phải vấn đề tương tự.


4

Cam kết trống không hoạt động với tôi, nhưng dựa trên câu trả lời @benett, điều này đã hiệu quả với tôi:

Mở Postman, tạo một yêu cầu mới với URL này: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (thay thế bằng tên và repo của bạn) và chọn phương pháp ĐĂNG.

Trước khi bạn chạy nó, hãy chuyển đến headerstab và thêm một khóa mới Acceptvới giá trịapplication/vnd.github.mister-fantastic-preview+json

Bây giờ bạn có thể chạy nó và truy cập lại các trang của mình.


Điều này không hiệu quả với tôi, tôi hiểu { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Có lẽ vì repo của tôi là riêng tư?
Coburn


0

Giải pháp thay thế

Bạn có thể đã nhận được một email từ GitHub cho bạn biết rằng Jekyll đã không thành công trong việc xây dựng trang web của bạn khi bạn đẩy nó cho bạn gh-pages. Nếu trường hợp này xảy ra, bạn có thể cố gắng thực hiện lực đẩy để kích hoạt một bản dựng khác.

Nếu bạn sử dụng một thư mục dành riêng cho trang web cuối cùng, giả sử là một publicthư mục, bạn có thể cố gắng xây dựng lại thư mục của mình và thêm thư mục vào các thay đổi đã cam kết của bạn. Sau đó, bạn sẽ cần chia các tệp đó thành gh-pagesnhánh của mình và buộc chúng kích hoạt một bản dựng khác ngay cả khi các tệp đó không thay đổi gì cả. Phần còn lại của đoạn mã dưới đây chỉ xóa các cam kết chopublic thư mục để thuận tiện và xóa nó khỏi hệ thống tệp cục bộ.

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

Lời khuyên

Nếu có những thay đổi không giới hạn không phải là một phần của trang web cuối cùng, bạn có thể lưu trữ chúng bằng lệnh sau.

git stash

Sau đó, thực hiện lệnh trên để buộc bản dựng Jekyll theo cách thủ công và gỡ bỏ chúng.

git stash pop

Người giới thiệu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.