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