와이프가 드럼을 배운다.
드럼이 집에는 없다보니, 기분이라도 내라고 간단하게 만든 장난감 드럼 페이지를 GCP에 올려서 서빙하고 싶었다.
GCP에 도메인이 적용되어 있고, Gitea를 프록시하고 있는 Nginx를 이용하면 될 것 같아서 설정을 바꾸고 올리려고 했다.
그런데 어차피 Gitea도 설치되어 있으니 CI/CD 구조를 만들어보자는 마음으로 서칭하며 Gitea의 Actions 기능을 찾아보았다.
https://docs.gitea.com/usage/actions/act-runner
Act Runner | Gitea Documentation
This page will introduce the act runner in detail, which is the runner of Gitea Actions.
docs.gitea.com
내가 얕게 이해한 수준은 아래와 같다.
1. Local
개발자는 개발된 소스를 Git에 올린다. 이 때, 배포를 위해 필요한 내용들을 적시한 workflow를 함께 만들어서 보낸다.
workflow는 작업 내용을 순서대로 지시하는 일종의 배치 지시서이다.
정해진 규격에 따라 문서를 작성하면 Act_Runner가 설정에 따라 배치 작업을 수행한다.
2. Gitea
이를 위해 Gitea에서 Action 플러그인을 활성화하고, Runner를 사용하기 위한 설정을 진행한다.
app.ini 파일에서 아래와 같이 수정한다. 또는 도커 실행 시, 환경 변수로 제공해도 된다.
[actions]
ENABLED=true
...
- GITEA__actions__ENABLED=true
위의 플러그인 사용이 결정되면 Gitea에는 관리자 페이지나 설정 등 메뉴에 Action이 생긴다.
Act_Runner의 등록을 위해 Token이 필요하니, 관리자 페이지에서 Action -> runner로 따라 들어가 Token을 발급받는다.
또한, Action을 사용하길 원하는 프로젝트의 설정에서 관련 설정을 추가로 진행한다.
3. Act_Runner
위에서 받은 토큰과 Lables를 이용해서 실행과 동시에 Gitea에 등록할 수도 있다.
Runner는 연결 후, 트리거가 동작할 때마다 해당 repo에 대해 Action을 수행한다.
version: "3.8"
services:
runner:
image: docker.io/gitea/act_runner:nightly
environment:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
GITEA_RUNNER_NAME: "${RUNNER_NAME}"
GITEA_RUNNER_LABELS: "${RUNNER_LABELS}"
volumes:
- ./config.yaml:/config.yaml
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock
Act_Runner는 별도의 프로세스를 갖고 동작하고, Gitea에서 발급한 토큰을 통해 Gitea에 접근하는 권한을 얻는 것 같다.
Gitea 페이지에는 Action이 활성화되면, Runner를 등록하는 페이지가 존재한다.
Runner 등록을 위해서는 생성된 토큰을 Runner를 실행시키고 Runner 인스턴스에 등록해줘야 한다.
등록해주고 runner가 실행되면, 바로 Gitea와 연결되며 초록색 불이 켜진다.
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
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
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."
나는 Runner를 이용해서 다음의 작업을 수행하려고 하였다.
1. repo로 저장한 최신 소스의 내용 빌드
2. 서빙 중인 웹서버로 방금 빌드된 프로그램 배포
일단 꽤 처참하게 실패...
나중에 로컬에서 다시 해봐야겠다.
GCP 무료티어 서버의 CPU / 메모리는 vCPU 2개와 1GB이다.
이런 환경에서 nginx, vpn, gitea, certbot, cron, postgresql 등등...
이것저것 많이 설치해놓고 CI/CD까지 해보려다가 서버가 죽어버렸다.
최후의 수단인 구글 콘솔에서도 먹통이되어 접속이 안되는 상황이 되어버려서, 눈물을 머금고 강제종료를 시켜버렸다.
일단 잘 되기는 하는지 확인하고자, Gitea Actions에 있는 테스트 파일을 workflows로 올렸는데 이건 다행히 성공...
자신감을 회복해서 다시 시도했다가 또 서버가 죽는걸 확인한 이후 마음을 접었다.
일단 빠르고 성능 좋은 내 개발 PC에서 작업해야지.
오늘은 하루종일 코딩테스트 공부를 하고싶었는데, 괜히 이거 손댓다가 하루종일 씨름했다.
'공부' 카테고리의 다른 글
[매크로] 게임 매크로 만들어보기 (0) | 2025.06.20 |
---|---|
[이미지변환] HEIC To JPG (1) | 2025.06.20 |
[GCP] Nginx SSL 자동갱신 (1) | 2025.06.13 |
[REST] API 요청, 응답 (2) | 2025.06.12 |
[BE] SSE 재연결과 관련된 시간 (0) | 2025.06.12 |