GitHubページのビルドを強制する方法は?


109

すべてのGitHubリポジトリができる持っているまたは可能GitHubのページのジキルで構築することができるウェブサイトを、。GitHubは、新しいコミットをプッシュするたびにサイトを構築します。
新しいコミットをプッシュせずにGithubページのWebサイトを強制的に更新する方法はありますか?


多分これは彼らのキャッシュポリシーと一致していますか?(stackoverflow.com/a/13106972/6309
VonC

2
実際、確認のためにGitHubサポートに連絡し、ここに回答を投稿することができます。それは他の人を助けることができます。
VonC、2014年

1
ドキュメントによると、githubページには1時間あたり10ビルドの制限があります。私の経験では、制限を超えると、新しいコミットをプッシュしても、新しいビルドはトリガーされません。
Jakub Kukul

回答:


151

GitHubサポートより、2014年6月7日:

現在のところ、適切なブランチにコミットをプッシュせずに手動で再構築をトリガーすることはできません。


編集:

Andyがコメントで指摘したように、次のコマンドで空のコミットをプッシュできます。

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

編集2:

GitHubアクションのおかげで、毎日の発行をトリガーするのはかなり簡単です:https : //stackoverflow.com/a/61706020/4548500


3
私のように運が良ければ、Githubのステータスも確認してください。Githubがダウンしているか、バックグラウンドのジョブやビルドに問題がある可能性があるためです。
f01 '08 / 08/28

tl、drgit log
nilon

20

簡単なスクリプトソリューションが必要な場合は、こちらをご覧ください。次のタスクを1回だけ実行し、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、2つの理由で。

1-ビルド

何度もマスターにプッシュしようとしても、ビルドは開始されません。Githubオンラインエディターでファイルを変更することで回避策を見つけました(index.htmlを開いてGithub Webサイトで編集してからコミットします)

2-キャッシュの問題

ビルドが成功した後でも、まったく同じページが表示されます myapp.github.io、ハードリロードしてCtrl + Shift + Rも解決しません。代わりに、Chromeを使用している場合は、ページを調べてApplicationタブに移動し、左側のメニューで[ストレージを消去]を選択して、メニューの下部にある[サイトデータを消去]をクリックします。


6

GitHubアクションが利用できるようになったので、これは簡単です。

# 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

Pages 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(自分の名前とレポと交換)、および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" }。たぶん私のレポがプライベートだからですか?
コバーン


0

代替ソリューション

GitHubから、Jekyllがにプッシュしたときにサイトの構築に成功しなかったというメールを受け取った可能性がありますgh-pages。この場合は、プッシュを強制して別のビルドをトリガーしてみてください。

最終的なWebサイト専用のフォルダーを使用している場合(たとえば、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.