GitHub Sayfaları oluşturmaya nasıl zorlanır?


109

Her GitHub depo edebilir olması ( veya bir) GitHub Sayfalar Jekyll ile inşa edilebilir web sitesi. GitHub, her yeni kaydetme işleminde siteyi oluşturur.
Github Pages web sitesini yeni bir taahhütte bulunmadan yenilenmeye zorlamanın bir yolu var mı?


Belki bu önbellek politikalarına uygundur? ( stackoverflow.com/a/13106972/6309 )
VonC

2
Aslında, bir onay için GitHub desteğiyle iletişime geçebilir ve burada bir cevap gönderebilirsiniz. Bu başkalarına yardımcı olabilir.
VonC

1
Belgelere göre , github sayfalarının saatte 10 derleme sınırı vardır. Tecrübelerime göre, sınırı aşarsanız, yeni bir commit zorlasanız bile yeni bir yapı tetiklenmez.
Jakub Kukul

Yanıtlar:


151

GitHub desteğinden, 2014-06-07:

Şu anda, uygun dala bir kaydetme göndermeden yeniden oluşturmayı manuel olarak tetiklemek mümkün değildir.


Düzenle:

Andy'nin yorumlarda belirttiği gibi, şu komutla boş bir işlem gerçekleştirebilirsiniz:

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

Düzenleme 2:

GitHub Eylemleri sayesinde, günlük bir yayını tetiklemek oldukça kolaydır: https://stackoverflow.com/a/61706020/4548500 .


3
Benim gibi şanslıysanız, Github durumunu da kontrol edin çünkü bunlar çalışmıyor olabilir veya arka plan işleri / derlemeleri ile ilgili sorunlar yaşıyor olabilirler.
f01

tl, drgit log
nilon

20

Hızlı bir komut dosyası çözümü istiyorsanız, işte burada. Aşağıdaki görevleri yalnızca bir kez yapın ve GitHub sayfanızı yeniden oluşturmak istediğinizde komut dosyasını çalıştırın.

1. Komut satırı için kişisel bir erişim belirteci oluşturun:

  • Kişisel bir erişim belirteci oluşturmak için buradaki resmi yardımı izleyin . Temel olarak, GitHub hesabına giriş yapmak zorunda ve gidin: Settings > Developer settings > Personal access tokens > Generate new token.
  • Kene repokapsamı.
  • Jetonu kopyalayın.

2. Aşağıdaki komut dosyasını oluşturun:

  • Adlı bir dosya oluşturun RebuildPage.shve satırları ekleyin:

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

    Buraya,

    • yournameGitHub kullanıcı adınızla değiştirin .
    • Değiştir yourtokenKopyalanan kişisel erişim belirteci ile.
    • yourrepoDepo adınızla değiştirin .

3. Komut dosyasını çalıştırın:

  • Windows 10 kullanıyorsanız:

    • Henüz yapılmadıysa, Linux için Windows Alt Sistemini kurmanız gerekir . Takip Bu bunu yapmak için.
    • #!/bin/bashKomut dosyasından ilk satırı ( ) kaldırın ve komut dosyasını olarak kaydedin RebuildPage.bat. (yani değiştirin .shile .batkomut dosyası adında)
    • Yukarıdaki noktaya alternatif: Dosyayı çalıştırmak için çift tıklama özelliğini almak için .sh:

      • Dosyalar bash.exeiçin varsayılan program olarak ayarlayın .sh.
      • Açın regedit.exeve düzenleyin HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. (Default)Değeri şu şekilde ayarlayın :

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Şimdi GitHub sayfanızı yeniden oluşturmak istediğinizde bile betiğe çift tıklayın. Bitti!

  • Linux / Mac kullanıyorsanız, komut dosyasını çalıştırmak diğer komut dosyalarını çalıştırmakla aynıdır. Bitti!

Çözüm için ek notlar:

Bu çözüm, GitHub REST API v3'ün bir API'sini kullanır. API için resmi belgeler burada .


7

Bir süredir bu problemi yaşadım ve ana şubeye geçmek myapp.github.ioiki nedenden dolayı hiçbir şeyi değiştirmedi :

1 - Oluştur

Çalışmamı usta üzerinde ne kadar zorlamaya çalışsam da inşa başlamayacaktı. Dosyamı Github çevrimiçi düzenleyicisinde değiştirerek bir geçici çözüm buldum (index.html dosyanızı açın ve Github web sitesinde düzenleyin, ardından kesin)

2 - Önbelleğe alma sorunları

Başarılı bir derlemeden sonra bile, yine de aynı sayfayı myapp.github.iogörürdüm ve zor bir şekilde yeniden yüklemek Ctrl + Shift + Rsorunu çözmezdi . Bunun yerine, Chrome kullanıyorsanız sayfanızı inceleyin, Applicationsekmeye gidin, soldaki menüden "Depolamayı temizle" yi seçin ve menünün altındaki "Site verilerini temizle" yi tıklayın.


6

Artık GitHub Eylemleri mevcut olduğuna göre, bunu yapmak önemsizdir:

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

Bunu yapan örnek depo: https://github.com/SUPERCILEX/personal-website/actions

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


5

Değişikliklerimi GitHub deposuna aktardıktan sonra bile, değişiklikleri bugün göremedim. Sonra daha fazla bilgi için depo ayarlarımı kontrol ettim, orada görebiliyordum, tüm bu zamanlar derleme başarısız oluyordu ve değişiklikleri göremememin nedeni buydu.

görüntü açıklamasını buraya girin

Ayrıca, "Siteniz oluşturulmasında sorun yaşıyor: Sayfa oluşturulamıyor. Lütfen daha sonra tekrar deneyin." Şeklinde bir mesaj görebilirsiniz.

Sonra son taahhütlerimi kontrol ediyordum ve bu soruna neyin sebep olduğunu bulmaya çalıştım. Sonunda sorunu çözebildim.

görüntü açıklamasını buraya girin

Orada bir oldu etiketleri (,) ek virgül ve bu sorunun nedeniyle .

görüntü açıklamasını buraya girin

.Md dosyanızda herhangi bir sorun varsa ilgili hata mesajlarını almayacaksınız. Aynı sorunla karşı karşıyaysanız, derleme durumunu kontrol etmenizi ve değişiklikleri karşılaştırmanızı tavsiye ederim.


4

Boş işlem benim için işe yaramadı, ancak @benett cevabına göre bu benim için çalıştı:

Postman'ı açın, şu URL ile yeni bir istek oluşturun: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (adınız ve deponuzla değiştirin) ve POST yöntemini seçin.

Çalıştırmadan önce headerssekmeye gidin ve Acceptdeğeri olan yeni bir anahtar ekleyinapplication/vnd.github.mister-fantastic-preview+json

Şimdi onu çalıştırabilir ve sayfalarınızı tekrar ziyaret edebilirsiniz.


Bu benim için çalışmıyor, anladım { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Belki depom özel olduğu için?
Coburn


0

Alternatif çözüm

GitHub'dan, Jekyll'in sitenizi sitenize ittiğinizde sitenizi oluşturmada başarılı olmadığını söyleyen bir e-posta almış olabilirsiniz gh-pages. Bu durumda, başka bir yapıyı tetiklemek için zorlamayı deneyebilirsiniz.

Son web sitesi için özel bir klasör kullanıyorsanız, diyelim ki public klasör kullanıyorsanız, klasör klasörünüzü yeniden oluşturmayı deneyebilir ve klasörü yaptığınız değişikliklerinize ekleyebilirsiniz. Bundan sonra, bu dosyayı gh-pagesşubenize bölmeniz ve dosyalar hiç değişmemiş olsa bile başka bir derlemeyi tetiklemeye zorlamanız gerekir. Aşağıdaki kodun geri kalanı, publickolaylık sağlamak için klasör için taahhütleri kaldırır ve yerel dosya sisteminden kaldırır.

Kod

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

İpuçları

Son sitenin parçası olmayan beklenmeyen değişiklikler varsa, bunları aşağıdaki komutla saklayabilirsiniz.

git stash

Ardından, Jekyll yapısını manuel olarak zorlamak ve onları saklamak için yukarıdaki komutu yapın.

git stash pop

Referanslar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.