Bagaimana cara memaksa Pembuatan Halaman GitHub?


109

Setiap repositori GitHub dapat memiliki ( atau menjadi ) situs web GitHub Pages , yang dapat dibangun dengan Jekyll. GitHub membangun situs setiap kali Anda mendorong komit baru.
Apakah ada cara untuk memaksa penyegaran situs web Halaman Github tanpa mendorong komit baru?


Mungkinkah ini sejalan dengan kebijakan cache mereka? ( stackoverflow.com/a/13106972/6309 )
VonC

2
Sebenarnya, Anda dapat menghubungi dukungan GitHub untuk konfirmasi, dan memposting jawaban di sini. Itu bisa membantu orang lain.
VonC

1
Menurut dokumentasi , halaman github memiliki batas 10 build per jam. Menurut pengalaman saya, jika Anda melampaui batas, build baru tidak akan terpicu, bahkan jika Anda mendorong commit baru.
Jakub Kukul

Jawaban:


151

Dari dukungan GitHub, 2014-06-07:

Saat ini tidak mungkin untuk memicu pembangunan kembali secara manual, tanpa mendorong komit ke cabang yang sesuai.


Edit:

Seperti yang ditunjukkan Andy di komentar, Anda dapat mendorong komit kosong dengan perintah:

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

Edit 2:

Berkat GitHub Actions, cukup mudah untuk memicu publikasi harian: https://stackoverflow.com/a/61706020/4548500 .


3
Jika Anda beruntung seperti saya, periksa juga status Github karena mereka mungkin sedang down atau mengalami masalah dengan latar belakang pekerjaan / bangunan.
f01

tl, drgit log
nilon

20

Jika Anda menginginkan solusi skrip cepat, ini dia. Lakukan saja tugas-tugas berikut hanya sekali, dan jalankan skrip kapan pun Anda ingin membangun kembali halaman GitHub Anda.

1. Buat token akses pribadi untuk baris perintah:

  • Ikuti bantuan resmi di sini untuk membuat token akses pribadi. Pada dasarnya, Anda harus login akun GitHub Anda dan pergi ke: Settings > Developer settings > Personal access tokens > Generate new token.
  • Centang reporuang lingkup.
  • Salin tokennya.

2. Buat skrip berikut:

  • Buat file bernama RebuildPage.shdan tambahkan baris:

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

    Sini,

    • Ganti yournamedengan nama pengguna GitHub Anda.
    • Ganti yourtokendengan token akses pribadi yang Anda salin.
    • Ganti yourrepodengan nama repositori Anda.

3. Jalankan skrip:

  • Jika Anda menggunakan Windows 10:

    • Anda perlu mengatur Subsistem Windows untuk Linux , jika belum selesai. Ikuti ini untuk melakukannya.
    • Hapus baris pertama ( #!/bin/bash) dari skrip dan simpan skrip sebagai RebuildPage.bat. (yaitu, ganti .shdengan .batpada nama file skrip)
    • Alternatif untuk poin di atas: Untuk mendapatkan fitur klik dua kali untuk menjalankan .shfile:

      • Tetapkan bash.exesebagai program default untuk .shfile.
      • Buka regedit.exedan edit HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Setel (Default)nilainya menjadi:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Sekarang klik dua kali skrip bahkan jika Anda ingin membangun kembali halaman GitHub Anda. Selesai!

  • Jika Anda menggunakan Linux / Mac, menjalankan skrip sama seperti menjalankan skrip lainnya. Selesai!

Catatan tambahan untuk solusinya:

Solusi ini menggunakan API GitHub REST API v3. Berikut adalah dokumentasi resmi untuk API tersebut.


7

Saya mengalami masalah ini untuk sementara waktu, dan mendorong ke cabang master tidak mengubah apa pun myapp.github.io, karena dua alasan:

1 - Bangun

Tidak peduli berapa kali saya mencoba mendorong pekerjaan saya pada master, build tidak akan dimulai. Saya menemukan solusi dengan memodifikasi file saya di editor online Github (buka index.html Anda dan edit di situs web Github, lalu lakukan)

2 - Masalah cache

Bahkan setelah berhasil membangun, saya masih akan melihat halaman yang sama persis myapp.github.io, dan pemuatan ulang yang sulit Ctrl + Shift + Rtidak akan menyelesaikannya. Sebaliknya, jika menggunakan Chrome, periksa halaman Anda, buka Applicationtab, pilih "Hapus penyimpanan" di menu sebelah kiri, dan klik "Hapus data situs" di bagian bawah menu.


6

Sekarang setelah GitHub Actions tersedia, ini mudah dilakukan:

# 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 }}

Contoh repo yang melakukan ini: https://github.com/SUPERCILEX/personal-website/actions

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


5

Bahkan setelah saya mendorong perubahan saya ke repositori GitHub, saya tidak dapat melihat perubahan hari ini. Kemudian saya memeriksa pengaturan repositori saya untuk informasi lebih lanjut, di sana saya dapat melihat, selama ini build gagal dan itulah alasan saya tidak dapat melihat perubahannya.

masukkan deskripsi gambar di sini

Anda juga mungkin melihat pesan sebagai "Situs Anda mengalami masalah pembuatan: Tidak dapat membangun halaman. Silakan coba lagi nanti."

Kemudian saya memeriksa komitmen terbaru saya dan mencoba mencari tahu apa yang menyebabkan masalah ini. Pada akhirnya saya bisa memperbaiki masalah tersebut.

masukkan deskripsi gambar di sini

Ada koma tambahan di tag (,) dan itu menyebabkan masalah ini .

masukkan deskripsi gambar di sini

Anda tidak akan mendapatkan pesan kesalahan yang relevan jika ada masalah dalam file .md Anda. Saya sarankan Anda untuk memeriksa status build dan membandingkan perubahan jika Anda menghadapi masalah yang sama.


4

Komitmen kosong tidak berhasil untuk saya, tetapi berdasarkan jawaban @benett, ini berhasil untuk saya:

Buka Postman, buat permintaan baru dengan URL ini: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (ganti dengan nama dan repo Anda), dan pilih metode POST.

Sebelum Anda menjalankannya, buka headerstab dan tambahkan kunci baru Acceptdengan nilainyaapplication/vnd.github.mister-fantastic-preview+json

Sekarang Anda dapat menjalankannya dan mengunjungi halaman Anda lagi.


Ini tidak berhasil untuk saya, saya mengerti { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Mungkin karena repo saya bersifat pribadi?
Coburn


0

Solusi alternatif

Anda mungkin telah menerima email dari GitHub yang memberi tahu Anda bahwa Jekyll tidak berhasil membangun situs Anda ketika Anda mendorongnya ke situs Anda gh-pages. Jika ini masalahnya, Anda dapat mencoba memaksa push untuk memicu build lain.

Jika Anda menggunakan folder khusus untuk situs web terakhir, katakanlah publicfolder, Anda dapat mencoba membangun kembali folder Anda dan menambahkan folder tersebut ke perubahan yang Anda lakukan. Setelah itu, Anda harus membagi file tersebut ke dalam gh-pagescabang Anda dan memaksanya untuk memicu build lain meskipun file tersebut tidak berubah sama sekali. Sisa kode di bawah ini hanya menghapus komit untuk publicfolder demi kenyamanan dan menghapusnya dari sistem file lokal.

Kode

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

Tips

Jika ada perubahan yang tidak terikat yang bukan bagian dari situs akhir, Anda dapat menyimpannya dengan perintah berikut.

git stash

Kemudian lakukan perintah di atas untuk memaksa Jekyll build dan unstash secara manual.

git stash pop

Referensi

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.