Como forçar a construção de páginas do GitHub?

109

Cada repositório GitHub pode ter ( ou ser ) um site GitHub Pages , que pode ser construído com Jekyll. O GitHub cria o site toda vez que você envia um novo commit.
Existe uma maneira de forçar a atualização do site Github Pages sem enviar um novo commit?

Pierre Prinetti
fonte
Talvez isso esteja de acordo com sua política de cache? ( stackoverflow.com/a/13106972/6309 )
VonC
2
Na verdade, você pode entrar em contato com o suporte do GitHub para obter uma confirmação e postar uma resposta aqui. Isso pode ajudar outras pessoas.
VonC
1
De acordo com a documentação , as páginas do github têm um limite de 10 compilações por hora. Na minha experiência, se você ultrapassar o limite, uma nova compilação não será acionada, mesmo se você enviar um novo commit.
Jakub Kukul 01 de

Respostas:

151

Do suporte do GitHub, 07/06/2014:

Atualmente não é possível acionar manualmente uma reconstrução, sem enviar um commit para o branch apropriado.


Editar:

Como Andy apontou nos comentários, você pode enviar um commit vazio com o comando:

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

Editar 2:

Graças ao GitHub Actions, é bastante fácil acionar uma publicação diária: https://stackoverflow.com/a/61706020/4548500 .

Pierre Prinetti
fonte
3
Se você tiver sorte como eu, verifique também o status do Github porque eles podem estar inativos ou com problemas com trabalhos / compilações em segundo plano.
f01
tl, drgit log
nilon
20

Se você deseja uma solução rápida de script, aqui está. Faça as tarefas a seguir apenas uma vez e execute o script sempre que quiser reconstruir sua página do GitHub.

1. Crie um token de acesso pessoal para a linha de comando:

  • Siga a ajuda oficial aqui para criar um token de acesso pessoal. Basicamente, você deve fazer login em sua conta do GitHub e ir para:Settings > Developer settings > Personal access tokens > Generate new token .
  • Carraça repoEscopo do .
  • Copie o token.

2. Crie o seguinte script:

  • Crie um arquivo chamado RebuildPage.she adicione as linhas:

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

    Aqui,

    • Substituir yourname pelo seu nome de usuário GitHub.
    • Substituir yourtoken pelo token de acesso pessoal copiado.
    • Substitua yourrepopelo nome do seu repositório.

3. Execute o script:

  • Se você usa o Windows 10:

    • Você precisa configurar o subsistema Windows para Linux , se ainda não o fez. Siga isto para fazer isso.
    • Remova a primeira linha ( #!/bin/bash) do script e salve o script como RebuildPage.bat. (ou seja, substitua.sh por .batno nome do arquivo de script)
    • Alternativa ao ponto acima: Para obter o recurso de clique duplo para executar o .sh arquivo:

      • Conjunto bash.exe como o programa padrão para .sharquivos.
      • Abra regedit.exee edite HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Defina o (Default)valor para:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Agora, clique duas vezes no script quando desejar reconstruir sua página GitHub. Feito!

  • Se você usa Linux / Mac, executar o script é o mesmo que executar outros scripts. Feito!

Notas adicionais para a solução:

Esta solução utiliza uma API do GitHub REST API v3. Aqui está a documentação oficial da API.

arnobpl
fonte
7

Eu tive esse problema por um tempo, e empurrar para o branch master não mudou nada myapp.github.io, por dois motivos:

1 - Construir

Não importa quantas vezes eu tentei forçar meu trabalho no master, o build não iniciaria. Eu encontrei uma solução alternativa ao modificar meu arquivo no editor online do Github (abra seu index.html e edite-o no site do Github, em seguida, confirme)

2 - Problemas de cache

Mesmo depois de uma construção bem-sucedida, eu ainda veria exatamente a mesma página myapp.github.ioe recarregar com dificuldade Ctrl + Shift + Rnão resolveria. Em vez disso, se estiver usando o Chrome, inspecione sua página, vá até a Applicationguia, selecione "Limpar armazenamento" no menu à esquerda e clique em "Limpar dados do site" na parte inferior do menu.

Pierre Olivier Tran
fonte
6

Agora que as ações do GitHub estão disponíveis, isso é trivial:

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

Repo de amostra que faz isso: https://github.com/SUPERCILEX/personal-website/actions

API de páginas: https://developer.github.com/v3/repos/pages/#request-a-page-build

SUPERCILEX
fonte
5

Mesmo depois de enviar minhas alterações para o repositório GitHub, não consegui ver as alterações hoje. Então eu verifiquei minhas configurações de repositório para mais informações, lá eu pude ver, todas essas vezes a compilação estava falhando e por isso eu não conseguia ver as mudanças.

insira a descrição da imagem aqui

Você também pode ver uma mensagem como "Seu site está com problemas de construção: Não é possível construir a página. Tente novamente mais tarde."

Então, eu estava verificando meus commits recentes e tentei descobrir o que causa esse problema. No final, consegui resolver o problema.

insira a descrição da imagem aqui

Havia uma vírgula adicional nas tags (,) e isso causava o problema .

insira a descrição da imagem aqui

Você não receberá mensagens de erro relevantes se houver algum problema no arquivo .md. Recomendo que você verifique o status da compilação e compare as alterações se estiver enfrentando o mesmo problema.

Sibeesh Venu
fonte
4

O commit vazio não funcionou para mim, mas com base na resposta de @benett, funcionou para mim:

Abra o Postman, crie uma nova solicitação com este URL: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (substitua pelo seu nome e repo) e selecione o método POST.

Antes de executá-lo, vá para a headersguia e adicione uma nova chave Acceptcom o valorapplication/vnd.github.mister-fantastic-preview+json

Agora você pode executá-lo e visitar suas páginas novamente.

antoni
fonte
Isso não funciona para mim, eu entendo { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Talvez porque meu repo seja privado?
Coburn,
0

Solução alternativa

Você pode ter recebido um e-mail do GitHub informando que Jekyll não teve sucesso na construção do seu site quando você o empurrou para o seu gh-pages. Se for esse o caso, você pode tentar forçar o push para acionar outro build.

Se você usar uma pasta dedicada para o site final, digamos uma publicpasta, você pode tentar reconstruir sua pasta e adicionar a pasta às suas alterações confirmadas. Depois disso, você precisará dividir esses arquivos em seu gh-pagesbranch e forçá-los a acionar outra compilação, mesmo que os arquivos não tenham mudado. O resto do código abaixo apenas remove os commits para a publicpasta por conveniência e remove-os do sistema de arquivos local.

Código

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

Dicas

Se houver alterações não confirmadas que não fazem parte do site final, você pode armazená-las com o seguinte comando.

git stash

Em seguida, execute o comando acima para forçar manualmente a compilação do Jekyll e removê-los do stash.

git stash pop

Referências

Amin NAIRI
fonte