Gitea Actions를 사용해 Hugo 웹사이트를 AWS S3에 배포
AWS S3에서 Gitea와 Hugo를 설정한 후...
다음 단계는 CI/CD를 구현하고 Gitea Actions를 설정하여 Hugo 웹사이트를 AWS S3에 푸시 하도록 하며, master 브랜치가 업데이트될 때 웹사이트를 자동으로 배포하는 것입니다.
Gitea 설치, 구성 및 테스트(Gitea 서버 설정 완료) 및 Gitea SSL 설정 이후, Hugo 웹사이트를 AWS S3에 배포하는 작업을 이미 완료했습니다.
이 가이드는 AWS 배포 전략을 다루는 우리 웹 인프라 문서의 일부입니다. CloudFront 분배 설정에 대해서는 사용량에 따른 과금 모델로 CloudFront 생성을 참고하십시오. 또한 대안적 배포 방법으로서 AWS CLI를 이용한 Hugo 배포도 살펴볼 수 있습니다.

자, 시작해 보겠습니다.
Gitea 러너를 위한 새로운 토큰 생성
https://your-gitea-server/your-user/your-repo/settings/actions/runners 으로 이동하고
Create New Runner 버튼을 클릭합니다.

Registration Token을 복사합니다.
새 Gitea 러너 시작
새 Gitea 러너가 실행될 서버에 ssh 접속합니다.
그리고 docker 컨테이너를 시작합니다. 별도 실행 파일로 실행하거나 서비스로 실행하는 등 여러 방법이 있지만, 여기서는 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
러너가 정상적으로 등록되었는지 확인
https://your-gitea-server/your-user/your-repo/settings/actions/runners 으로 이동하면
이미 실행 중임을 확인할 수 있습니다.
AWS 시크릿 몇 개 생성
다음 주소로 이동합니다: https://your-gitea-server/your-user/your-repo/settings/actions/secrets
그리고 몇 개의 중요한 시크릿을 생성합니다: AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY. 이들이 어떤 의미인지 아시죠?

Hugo 빌드 및 S3 배포를 위한 Gitea 워크플로우 생성
Hugo 프로젝트의 .gitea/workflows 폴더 안에 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 }}."
혹시 시드니(Sydney)에서 사이트를 호스팅할 강한 의향이 없다면, 더 선호하는 지역으로 AWS_REGION을 변경하면 됩니다.
아래 설정 부분:
on:
push:
branches:
- master
은 master 브랜치로의 모든 푸시와 머지를 처리해 줍니다.
커밋 및 푸시
서버로 변경 사항을 푸시한 후 https://your-gitea-server/your-user/your-repo/actions 페이지에서 다음과 유사한 결과를 확인해야 합니다.

좋은 하루 되세요! Gitea Actions 러너가 배포되고 사이트를 빌드하기 시작하면, 해당 인스턴스를 실행 중인 서버 자체도 안전 장치가 필요함을 잊지 마세요 - gitea dump 워크플로우에 대해서는 Gitea 서버 백업 및 복구를 참고하십시오.