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

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



답변

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 .


답변

빠른 스크립트 솔루션을 원한다면 여기에 있습니다. 다음 작업을 한 번만 수행하고 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에 대한 공식 문서입니다.


답변

나는 잠시 동안이 문제가 있었고 마스터 브랜치로 푸시해도 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 }}

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

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


답변

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

여기에 이미지 설명 입력

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

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

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력

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


답변

빈 커밋은 나를 위해 작동하지 않았지만 @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

이제 실행하고 페이지를 다시 방문 할 수 있습니다.


답변

이것은 현재 미리보기
https://developer.github.com/v3/repos/pages/#request-a-page-build 에 있지만 GitHub API v3부터 가능합니다.

POST /repos/:owner/:repo/pages/builds