GitHub 페이지 빌드를 강제하는 방법은 무엇입니까?


109

모든 GitHub의 저장소는 할 수 있다 ( 또는 수 A) GitHub의 페이지 지킬으로 구축 할 수 있습니다 웹 사이트를. GitHub는 새 커밋을 푸시 할 때마다 사이트를 빌드합니다.
새 커밋을 푸시하지 않고 Github 페이지 웹 사이트를 강제로 새로 고치는 방법이 있습니까?


아마도 이것이 그들의 캐시 정책과 일치할까요? ( stackoverflow.com/a/13106972/6309 )
VonC

2
실제로 GitHub 지원팀에 문의하여 확인을 받고 여기에 답변을 게시 할 수 있습니다. 그것은 다른 사람들을 도울 수 있습니다.
VonC

1
문서 에 따르면 github 페이지는 시간당 10 개의 빌드로 제한됩니다. 내 경험상 한계를 초과하면 새 커밋을 푸시하더라도 새 빌드가 트리거되지 않습니다.
Jakub Kukul

답변:


151

GitHub 지원, 2014-06-07 :

현재 적절한 브랜치에 커밋을 푸시하지 않고는 수동으로 재 빌드를 트리거 할 수 없습니다.


편집하다:

Andy가 주석에서 지적했듯이 다음 명령을 사용하여 빈 커밋을 푸시 할 수 있습니다.

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

편집 2 :

GitHub Actions 덕분에 매일 게시를 트리거하는 것이 매우 쉽습니다 : https://stackoverflow.com/a/61706020/4548500 .


3
저처럼 운이 좋다면 Github 상태도 확인하세요. 다운되었거나 백그라운드 작업 / 빌드에 문제가있을 수 있기 때문입니다.
f01

tl, drgit log
nilon 19

20

빠른 스크립트 솔루션을 원한다면 여기에 있습니다. 다음 작업을 한 번만 수행하고 GitHub 페이지를 다시 빌드 할 때마다 스크립트를 실행하십시오.

1. 명령 줄에 대한 개인 액세스 토큰을 만듭니다.

  • 여기 의 공식 도움말을 따라 개인 액세스 토큰을 만드 십시오 . 기본적으로 GitHub 계정에 로그인하고 다음으로 이동해야 Settings > Developer settings > Personal access tokens > Generate new token합니다.
  • repo범위.
  • 토큰을 복사하십시오.

2. 다음 스크립트를 만듭니다.

  • 라는 파일 RebuildPage.sh을 만들고 다음 줄을 추가합니다.

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

    여기,

    • yournameGitHub 사용자 이름으로 바꿉니다 .
    • yourtoken복사 한 개인 액세스 토큰으로 바꿉니다 .
    • yourrepo저장소 이름으로 바꿉니다 .

3. 스크립트를 실행합니다.

  • Windows 10을 사용하는 경우 :

    • 아직 설정하지 않은 경우 Linux 용 Windows 하위 시스템 을 설정해야합니다 . 그렇게하려면 이것을 따르십시오 .
    • #!/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을 사용하는 경우 스크립트 실행은 다른 스크립트 실행과 동일합니다. 끝난!

솔루션에 대한 추가 참고 사항 :

이 솔루션은 GitHub REST API v3의 API를 사용합니다. 다음 은 API에 대한 공식 문서입니다.


7

나는 잠시 동안이 문제가 있었고 마스터 브랜치로 푸시해도 myapp.github.io두 가지 이유로 아무것도 변경되지 않았습니다 .

1-빌드

아무리 많은 시간을 마스터에 밀어 넣어도 빌드가 시작되지 않았습니다. Github 온라인 편집기에서 내 파일을 수정하여 해결 방법을 찾았습니다 (index.html을 열고 Github 웹 사이트에서 편집 한 다음 커밋).

2-캐싱 문제

성공적으로 빌드 한 후에도에서 똑같은 페이지가 계속 표시 myapp.github.io되며로 하드 다시로드 Ctrl + Shift + R해도 문제가 해결되지 않습니다. 대신 Chrome을 사용하는 경우 페이지를 검사하고 Application탭으로 이동하여 왼쪽 메뉴에서 '저장 용량 삭제'를 선택한 다음 메뉴 하단의 '사이트 데이터 삭제'를 클릭하세요.


6

이제 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 }}

이를 수행하는 샘플 저장소 : https://github.com/SUPERCILEX/personal-website/actions

페이지 API : https://developer.github.com/v3/repos/pages/#request-a-page-build


5

변경 사항을 GitHub 저장소에 푸시 한 후에도 오늘 변경 사항을 볼 수 없었습니다. 그런 다음 저장소 설정을 확인하여 자세한 정보를 확인했습니다.이 모든 시간에 빌드가 실패하고 변경 사항을 볼 수 없었습니다.

여기에 이미지 설명 입력

"사이트 구축에 문제가 있습니다. 페이지를 구축 할 수 없습니다. 나중에 다시 시도하십시오."라는 메시지가 나타날 수도 있습니다.

그런 다음 최근 커밋을 확인 하고이 문제의 원인을 찾으려고 노력했습니다. 결국 문제를 해결할 수있었습니다.

여기에 이미지 설명 입력

거기에 있었다 태그 (,)의 추가 쉼표 것을이 문제가 발생합니다 .

여기에 이미지 설명 입력

.md 파일에 문제가있는 경우 관련 오류 메시지가 표시되지 않습니다. 빌드 상태를 확인하고 동일한 문제가 발생하면 변경 사항을 비교하는 것이 좋습니다.


4

빈 커밋은 나를 위해 작동하지 않았지만 @benett 답변에 따르면 이것은 나를 위해 일했습니다.

Postman을 열고 다음 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" }. 내 저장소가 비공개이기 때문일까요?
Coburn


0

대체 솔루션

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

참고 문헌

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.