すべてのGitHubリポジトリができる持っている(または可能)GitHubのページのジキルで構築することができるウェブサイトを、。GitHubは、新しいコミットをプッシュするたびにサイトを構築します。
新しいコミットをプッシュせずにGithubページのWebサイトを強制的に更新する方法はありますか?
すべてのGitHubリポジトリができる持っている(または可能)GitHubのページのジキルで構築することができるウェブサイトを、。GitHubは、新しいコミットをプッシュするたびにサイトを構築します。
新しいコミットをプッシュせずにGithubページのWebサイトを強制的に更新する方法はありますか?
回答:
GitHubサポートより、2014年6月7日:
現在のところ、適切なブランチにコミットをプッシュせずに手動で再構築をトリガーすることはできません。
Andyがコメントで指摘したように、次のコマンドで空のコミットをプッシュできます。
git commit -m 'rebuild pages' --allow-empty
git push origin <branch-name>
GitHubアクションのおかげで、毎日の発行をトリガーするのはかなり簡単です:https : //stackoverflow.com/a/61706020/4548500。
git log
簡単なスクリプトソリューションが必要な場合は、こちらをご覧ください。次のタスクを1回だけ実行し、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を使用している場合、スクリプトの実行は他のスクリプトの実行と同じです。できた!
このソリューションは、GitHub REST API v3のAPIを利用します。ここでは APIのための公式ドキュメントです。
私はしばらくこの問題を抱えていましたが、マスターブランチにプッシュしても何も変わりませんでした myapp.github.io
、2つの理由で。
1-ビルド
何度もマスターにプッシュしようとしても、ビルドは開始されません。Githubオンラインエディターでファイルを変更することで回避策を見つけました(index.htmlを開いてGithub Webサイトで編集してからコミットします)
2-キャッシュの問題
ビルドが成功した後でも、まったく同じページが表示されます myapp.github.io
、ハードリロードしてCtrl + Shift + R
も解決しません。代わりに、Chromeを使用している場合は、ページを調べてApplication
タブに移動し、左側のメニューで[ストレージを消去]を選択して、メニューの下部にある[サイトデータを消去]をクリックします。
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
変更をGitHubリポジトリにプッシュした後でも、今日の変更を確認できませんでした。その後、リポジトリ設定をチェックして詳細を確認しましたが、ビルドが失敗していたため、変更を確認できませんでした。
「サイトの構築に問題があります:ページを構築できません。しばらくしてからもう一度お試しください。」というメッセージが表示されることもあります。
次に、最近のコミットをチェックして、この問題の原因を突き止めようとしました。最後に、問題を修正することができました。
タグ(、)に追加のカンマがあり、それがこの問題の原因でした。
.mdファイルに問題がある場合、関連するエラーメッセージは表示されません。同じ問題が発生している場合は、ビルドステータスを確認し、変更を比較することをお勧めします。
空のコミットは私にとってはうまくいきませんでしたが、@ 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" }
。たぶん私のレポがプライベートだからですか?
これはGitHub APIのv3で実行可能ですが、現在プレビュー
段階ですhttps://developer.github.com/v3/repos/pages/#request-a-page-build
POST /repos/:owner/:repo/pages/builds
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