ci: Gitea Actions 러너 설정 추가
CI 워크플로는 저장소에 있지만 실행 주체(러너)가 없어 동작하지 않는 상태였다. 러너가 없으면 워크플로는 "Waiting for a runner" 로 대기만 한다. - ci/docker-compose.runner.yml — act_runner 를 별도 스택으로 분리. 앱 스택은 개발할 때만 띄우지만 러너는 항상 켜져 있어야 하므로 생명주기가 다르다. - ci/.env.example — 등록 토큰은 ci/.env 에만 두며 커밋되지 않는다. - ci/README.md — 설치 절차, 증상별 문제 해결, 잡별 리소스 특성. - 라벨 기본값이 워크플로의 runs-on(ubuntu-latest)과 일치하는지 교차 확인했다. 불일치는 잡이 영원히 대기하는 가장 흔한 원인이다. 러너가 도커 소켓에 접근해 사실상 호스트 관리자 권한을 갖는다는 점도 문서에 명시했다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# Gitea Actions 러너 — CI 를 실제로 실행하는 주체
|
||||
#
|
||||
# 이 파일은 애플리케이션 스택(루트 docker-compose.yml)과 **생명주기가 다르다.**
|
||||
# 앱은 개발할 때만 띄우지만 러너는 항상 켜져 있어야 CI 가 동작한다.
|
||||
#
|
||||
# 사용법은 ci/README.md 참조.
|
||||
|
||||
services:
|
||||
runner:
|
||||
image: gitea/act_runner:latest
|
||||
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
|
||||
Reference in New Issue
Block a user