Back
Featured image of post Usando o Github Actions para atualizar o Github Pages

Usando o Github Actions para atualizar o Github Pages

Criando uma pipeline para deploy dos arquivos estaticos do HUGO

Já pensou em ter um blog pessoal, para postar os seus artigos, postar informações sobre você e até criar um portifolio? O Tiago Krebes ensina a você como criar esse blog pessoal, usando o Github Pages e o HUGO. Veja o artigo dele aqui https://tiagokrebs.com/post/github-page/..

No artigo dele tem um script para deploy de sua aplicação, mas já pensou em fazer isso de modo automatico apenas comitando o seu codigo em um repositorio?

Vou te ensinar a criar essa pipeline e configurar o github para isso.

Criando as chaves publica e privada para o deploy

Vamos precisar de uma chave ssh publica e uma privada para permitir que o github actions tenha permissão para realizar o deploy de seu site.

Para gerar uma é muito facil, siga os passos abaixo:

ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""

Você terá uma saida identica a essa abaixo:

rehzende@  /home/rehzende/Estudos/hugo/ssh-key > ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f github-pages -N ""
Generating public/private rsa key pair.
Your identification has been saved in github-pages
Your public key has been saved in github-pages.pub
The key fingerprint is:
SHA256:CBE9WA6ZKZ0p240smHzqr9MsKsHFMnf7bKXSIHWAPmo rehzende@hotmail.com
The key's randomart image is:
+---[RSA 4096]----+
|   .=@.          |
|  o.O=o          |
|.oo*.oo.         |
|o+oB++.o         |
|. O.+ + S        |
|.E . o   .       |
|o.o . = o        |
|.+ o . *         |
|+.=.  o          |
+----[SHA256]-----+

Execute: cat github-pages e cat github-pages.pub para ver os conteudos dos arquivos gerados.

# Conteudo da chave privada, nunca divulgue essa chave.

rehzende@  /home/rehzende/Estudos/hugo/ssh-key > cat github-pages
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAgEAsaUitvcoPUjYnJPUw55Wk/ApEpt5pyYFa+wkAyqklCgX+hDI4OAl
k9EyESK0th5LGJ+Ch1xsfsdfsdfsdfsdfdssdfDfEYO4h10Nhhq2wK1KrWBlvj9iqmzkhl
vwYhMRxjczbm77qIFg8sJVk8Q+hVYt4HkqIwLmFpnRd2Oz2m1ROXKzM+qOwQdUdQd7zUs6
8Py7xcKykefaxGrFv0ILnum7oE1hTGgjZPUBhAaJPcEFuBxN0Amg4oKZcHKXJIi8WSWCps
........................................................
C25E/dWNWtwZLEr1VTb4R/x5+GnBpkXmbgTj4ZO0oECsuHLHFjzTlBhCqZ1V9S6VbV8Luu
yaxfmvSHWQ1IPwTtNOpVnjNkcAVlwmBQlrlO06nhvePLs0tLNXr42GqsFI+wTjD+3W8hPI
rEAupGdFiz+tkLSwAAAQEA0rW7fyUpGqPWmxIXiFy5zjBGphNyBocLMaEB5XZe/I+Dwk3Y
CYXFodxHq2a9NJ5Kx+CGxIMsdfsdfsdfsdfsdMuiOVm/sdfsddrt/pRZiPfPZOK9OK9tFD
6vlVIslozfnl+crK8PzvPiJaGdrsbqrsdfsdfOj7TLIY4gQcXpRc93G2LAn3RYFRvdz2iP
8rQ96RL5603+Tp42U4/cxECprZuSsFMYeFQnR42Xfg2rwzhgE+J1rroidUx6jnLn1jXAlE
L4EYNuUaP+WzUQlNfNmgG9vOVI5k1F0sz8ZD24B/lyCnWsZPOcFhnI/VqYnYE4HOfavf+b
VmFnhWPXWm9xiwAAABRyZWh6ZW5kZUBob3RtYWlsLmNvbQECAwQF
-----END OPENSSH PRIVATE KEY-----

# Conteudo da chave publica

rehzende@  /home/rehzende/Estudos/hugo/ssh-key > cat github-pages.pub
ssh-rsa AAAAB3NzaC1asdfwfwefwefwefqwefewqfwe..............gfjfhgjhfjhgjfhgsdf7qA6QuvsRLFABNP7ENsMspE
gza64CmgYBYP8zWuZ8llupR0I2jsK5mtOG/4q0SZXCrH76eVKeEA+b50G3AuSgtYWmUA1Be6KdOu7gjFgnQsJP8ZBoTf3agrnRD4
LQ9PtvndVtE+8/ZzqMTq2exkkDAv4H4Tcmk1XLbS452mzj9O5Ov1scM6G7t8i0krsV88sHWgyqb4zATvsyvWLcGQjkCH66nu26fg
dgfhgfhRxupxaj0qtH/KyqERVo8uQ== rehzende@hotmail.com

Vamos cadastrar essas chaves nos repositorios onde estão nossos conteudos. No meu caso eu tenho essa estrutura de repositorios:

rehzende.dev > Conteudo estático. hugo-blog > o código fonte do meu blog.

O deploy vai acontercer do repositorio hugo-blog para o rehzende.dev, para isso preciso adicionar uma chave de deploy no repósitorio rehzende.dev e uma chave secreta no hugo-blog.

Criando a chave de Deploy

No github, acesse: ‘https://github.com/{seu_user}/{seu_repo_destino}/settings/keys'.

Adicione o conteudo de github-pages.pub conforme as imagens abaixo:

Você terá esse resultado:

Criando a variavel secreta

No github, acesse: ‘https://github.com/{seu_user}/{seu_repo_origem}/settings/secrets/actions'.

Cole o conteudo do arquivo github-pages

você terá o resultado:

Criando a pipeline

No seu repositório onde contém o codigo fonte do HUGO crie a estrutrura de pastas abaixo:

cd seu-repo-hugo/
# criando estrutura de pasta do github actions
mkdir -p ./.github/workflows

cd ./.github/workflows
# Baixando o exemplo de pipeline
curl https://gist.githubusercontent.com/Rehzende/00e820a7af41ac67cf67bd73d07f3334/raw/dd84a0c4a8d955ee777b598f19f7e591fed4cd2c/gh-pages-action.yml -o main.yml

Altere as linhas abaixo do seu arquivo main.yml

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        if: ${{ github.ref == 'refs/heads/main' }}
        with:
          deploy_key: ${{ secrets.DEPLOY_KEY }}
          external_repository: username/repo-destino # mude aqui
          publish_branch: main  # default: gh-pages
          publish_dir: ./public
         # cname: example.com  - use caso tenha dominio personalizado%

Commite os arquivos para a sua branch main

git commit add main.yml
git commit -m "adicionando a pipeline"
git push

Teste

comments powered by Disqus
Criado com Hugo
Tema Stack desenvolvido por Jimmy