Usando Gitea Actions para implantar um site Hugo no AWS S3

Depois de definir upd o Gitea e o Hugo no AWS S3...

Conteúdo da página

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

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

Este guia faz parte da nossa documentação de infraestrutura web cobrindo estratégias de implantação AWS. Para configurar a distribuição do CloudFront, veja criando CloudFront por uso pago em vez do gratuito. Você também pode explorar implantando Hugo com AWS CLI para abordagens alternativas de implantação.

Gitea Runner

Tudo bem. Vamos lá

Gerar novo token para o runner do Gitea

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

e clique em Create New Runner

Create New Runner

Copie o Registration Token

Iniciar novo Gitea Runner

Faça ssh para o servidor onde seu novo gitea runner estará rodando

e inicie o container docker. Você pode iniciá-lo como um executável separado, executá-lo como um serviço, etc., mas aqui estou usando um container 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

Verificar se o runner foi registrado corretamente

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

e você deve ver que ele já está rodando

Criar alguns segredos do AWS

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

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

aws-secrets

Criar Workflow Gitea para compilar e implantar Hugo para s3

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

name: Gitea Actions - Hugo Deploy
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on:
  push:
    branches:
      - master
jobs:
  Hugo-Deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
      - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
      - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."

      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # or remove this for the latest
          extended: true

      - name: List files in the repository
        run: |
          ls

      - name: Build
        run: hugo

      - name: Deploy
        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 "🍏 This job's status is ${{ job.status }}."

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

Este trecho de configuração:

on:
  push:
    branches:
      - master

cuidará de todos os pushes e merges para a branch master.

Commitar 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 de

hugo-deploy-log-gitea-actions

Tenha um ótimo dia! Depois que seu runner do Gitea Actions estiver implantado e compilando seu site, não se esqueça de que a instância que o executa ainda precisa da sua própria rede de segurança - veja Backup e Restore do servidor Gitea para o fluxo de trabalho gitea dump.

Subscrever

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.