Files
arasystem/ci/docker-compose.runner.yml
ttipo ec1919e4bf fix(docker): CI 러너 — compose 프로젝트 이름을 러너 이름으로 · 이미지 판 고정
프로젝트 이름이 비어 있으면 폴더 이름 ci 가 되어, 같은 템플릿을 쓰는 다른 프로젝트의 러너와
프로젝트 · 서비스(ci / runner)가 겹친다. 그러면 up 이 그쪽 컨테이너를 지우고 이 러너로 다시 만든다
(같은 PC 의 다른 프로젝트 러너가 project=ci 였다 — 띄우기 전에 찾았다). 이름을 RUNNER_NAME 으로 둔다.

러너 이미지는 latest 대신 같은 digest 인 0.6.1 로 고정한다(이미지 버전 고정 규칙).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:28:12 +09:00

33 lines
2.0 KiB
YAML

# Gitea Actions 러너 — CI 를 실제로 실행하는 주체
#
# 이 파일은 애플리케이션 스택(루트 docker-compose.yml)과 **생명주기가 다르다.**
# 앱은 개발할 때만 띄우지만 러너는 항상 켜져 있어야 CI 가 동작한다.
#
# 사용법은 ci/README.md 참조.
# 프로젝트 이름 — 러너 이름을 그대로 쓴다. 비워 두면 폴더 이름(`ci`)이 되어, 같은 템플릿을 쓰는 다른 프로젝트의 러너와
# 프로젝트 · 서비스가 겹친다(둘 다 ci / runner) — 그러면 `up` 이 그쪽 컨테이너를 지우고 이 러너로 다시 만든다
# (2026-10-28 — 같은 PC 의 다른 프로젝트 러너가 project=ci 였다). 러너 이름은 컨테이너 이름이라 어차피 PC 안에서 겹치면 안 된다
name: ${RUNNER_NAME:-gitea-runner}
services:
runner:
# 판까지 고정한다 (docker 스킬 "이미지 버전 고정" — latest 는 그날의 최신을 받는다). 0.6.1 = 2026-10-28 의 latest 와 같은 digest
image: gitea/act_runner:0.6.1
container_name: ${RUNNER_NAME:-gitea-runner}
restart: always
environment:
GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL}
# ⚠️ 등록 토큰 — ci/.env 에만 두고 절대 커밋하지 않는다
GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN}
GITEA_RUNNER_NAME: ${RUNNER_NAME:-gitea-runner}
# ⚠️ 워크플로의 runs-on 과 일치해야 잡을 집는다.
# .github/workflows/ci.yml 은 모든 잡이 ubuntu-latest 다.
GITEA_RUNNER_LABELS: ${RUNNER_LABELS:-ubuntu-latest:docker://gitea/runner-images:ubuntu-latest}
volumes:
# 잡을 컨테이너로 띄우므로 도커 소켓이 필요하다.
# (Windows Docker Desktop 에서 Git Bash 를 쓰면 경로 변환 때문에 //var/run/... 로 적어야 할 수 있다)
- /var/run/docker.sock:/var/run/docker.sock
# 등록 정보를 보존한다 — 지우면 토큰으로 재등록해야 한다
- ./runner-data:/data