Usando Gitea Actions para implantar um site Hugo no AWS S3

Após configurar o Gitea e o Hugo no AWS S3...

Conteúdo da página

O próximo passo é implementar algumas práticas de CI/CD e configurar Gitea Actions para o site Hugo, para enviar o site para o AWS S3 automaticamente quando a branch master for atualizada.

Já configuramos - após instalar, configurar e testar o Gitea Configuração do Servidor Gitea, e Configuração SSL do Gitea, a implantação do site Hugo no AWS S3.

Gitea Runner

OK. Vamos lá

Gerar um novo token para o runner do Gitea

Navegue até https://your-gitea-server/your-user/your-repo/settings/actions/runners

e clique em Criar novo runner

Criar novo runner

copie o token de registro

Iniciar um novo runner do Gitea

faça ssh para o servidor onde o novo runner do Gitea será executado

e inicie o contêiner docker. você pode iniciar como um executável separado, executá-lo como um serviço etc, mas aqui estou usando um contêiner docker.

sudo docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e GITEA_INSTANCE_URL=http://<my-gitea-server>:3000/ \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=<my-registration-token> \
    -e GITEA_RUNNER_NAME=srv-act-runner \
    --name my_runner \
    --restart always \
    -d docker.io/gitea/act_runner:latest

Verifique se o runner foi registrado com sucesso

Navegue até https://your-gitea-server/your-user/your-repo/settings/actions/runners

e você deve ver que ele já está em execução

Crie alguns segredos do AWS

Vá para: https://your-gitea-server/your-user/your-repo/settings/actions/secrets

E crie alguns segredos grandes: AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY. Você sabe o que eles significam, certo?

aws-secrets

Crie um workflow do Gitea para construir e implantar o Hugo no S3

No seu projeto Hugo, na pasta .gitea/workflows crie um arquivo hugo-deploy.yaml

name: Gitea Actions - Hugo Deploy
run-name: ${{ gitea.actor }} está testando Gitea Actions 🚀
on:
  push:
    branches:
      - master
jobs:
  Hugo-Deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 O job foi automaticamente disparado por um evento ${{ gitea.event_name }}."
      - run: echo "🐧 Este job está sendo executado em um servidor ${{ runner.os }} hospedado pelo Gitea!"
      - run: echo "🔎 O nome da sua branch é ${{ gitea.ref }} e seu repositório é ${{ gitea.repository }}."

      - name: Verificar o código do repositório
        uses: actions/checkout@v4
        with:
          submodules: true  # Obter temas do Hugo (true OU recursivo)
          fetch-depth: 0    # Obter toda a história para .GitInfo e .Lastmod

      - run: echo "💡 O repositório ${{ gitea.repository }} foi clonado no runner."

      - name: Configurar Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # ou remova isso para a versão mais recente
          extended: true

      - name: Listar arquivos no repositório
        run: |
          ls          

      - name: Construir
        run: hugo

      - name: Implantar
        run: hugo deploy
        env:
          AWS_REGION: 'ap-southeast-2'
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

      - run: echo "🍏 O status deste job é ${{ job.status }}."

Se por algum motivo você não tem um grande desejo de hospedar seu site em Sydney - mude AWS_REGION para o que preferir mais.

Esta configuração:

on:
  push:
    branches:
      - master

vai cuidar de todas as pushes e merges na branch master.

Commit e push

Após enviar as alterações para o servidor você deve ver na página https://your-gitea-server/your-user/your-repo/actions algo próximo a

hugo-deploy-log-gitea-actions

Tenha um ótimo dia!