From 524937317509d758520ae66c5c7fb7f34d25dff8 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Wed, 11 Mar 2026 21:27:09 +0900 Subject: [PATCH] docs: update runner evidence for 24 auto deploy incident --- ...ฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ณต๊ตฌ_๊ณ„ํš.md | 33 ++++++----- ...ˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_๋ฆฌ์„œ์น˜.md | 57 +++++++++++++------ ...0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_์ด์Šˆ.md | 32 +++++++++-- 3 files changed, 86 insertions(+), 36 deletions(-) diff --git a/journey/plans/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ณต๊ตฌ_๊ณ„ํš.md b/journey/plans/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ณต๊ตฌ_๊ณ„ํš.md index 60d9e8a..a3c385c 100644 --- a/journey/plans/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ณต๊ตฌ_๊ณ„ํš.md +++ b/journey/plans/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ณต๊ตฌ_๊ณ„ํš.md @@ -14,33 +14,38 @@ tags: [infra, gitea-actions, deploy, 24-server, runtime, plans] - [24์„œ๋ฒ„ robeing runtime workspace-config ๋‹จ์ผํ™”](../worklog/260310_24์„œ๋ฒ„_robeing_runtime_workspace_config_๋‹จ์ผํ™”.md) ## ๊ฒฐ์ • -- ์ด๋ฒˆ ๋ฌธ์ œ๋Š” `rb8001` ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ `๋ฐฐํฌ ์ธํ”„๋ผ ๊ฒฝ๋กœ` ๋ฌธ์ œ๋กœ ๋‹ค๋ฃฌ๋‹ค. -- ๋”ฐ๋ผ์„œ ์ˆ˜์ • ์šฐ์„ ์ˆœ์œ„๋Š” `workflow๊ฐ€ ์ฝ๋Š” .env.deploy ๋ณต๊ตฌ -> ๊ตฌ์ฃผ์†Œ ์˜ˆ์‹œ ์ œ๊ฑฐ -> ํ•„์š” ์‹œ secret/variableํ™” -> SSH ๊ฒ€์ฆ -> task ๋กœ๊ทธ` ์ˆœ์„œ๋‹ค. +- ์ด๋ฒˆ ๋ฌธ์ œ๋Š” `rb8001` ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ `๋ฐฐํฌ ์ธํ”„๋ผ ๊ฒฝ๋กœ + 51123 runner ์‹คํ–‰์ธต` ๋ฌธ์ œ๋กœ ๋‹ค๋ฃฌ๋‹ค. +- `c7bca94`๋กœ `.env.deploy`์™€ ์˜ˆ์‹œ ํŒŒ์ผ์€ ์ด๋ฏธ SSOT์— ๋งž์ถฐ์กŒ์œผ๋ฏ€๋กœ, ์ด์ œ ์ˆ˜์ • ์šฐ์„ ์ˆœ์œ„๋Š” `runner ์‹คํ–‰ ๋ณต๊ตฌ -> dispatch/task ๋กœ๊ทธ ํ™•์ธ -> workflow ๋ณธ๋ฌธ ์žฌ์ง„์ž… ๊ฒ€์ฆ -> ํ•„์š” ์‹œ secret/variableํ™”` ์ˆœ์„œ๋‹ค. ## ๋ฒ”์œ„ - ํฌํ•จ: - - `rb8001/.env.deploy` ์‹คํŒŒ์ผ ๋ณต๊ตฌ ๋˜๋Š” ๋Œ€์ฒด ์ฃผ์ž… ๊ฒฝ๋กœ ํ™•์ • - - `.env.deploy.example`์˜ ๊ตฌ์ฃผ์†Œ/๊ตฌํฌํŠธ ์ œ๊ฑฐ + - 51123 self-hosted runner ๊ธฐ๋™ ์ƒํƒœ ๋ณต๊ตฌ + - runner ์‹œ์ž‘ ๋ฐฉ์‹๊ณผ ์šด์˜ ๊ธฐ์ค€(systemd vs script) ์ •๋ฆฌ + - ์ตœ์‹  `#677`๊ณผ ๊ฐ™์€ `0s` ์ข…๋ฃŒ run์˜ dispatch/task fetch ๊ฒฝ๋กœ ํ™•์ธ - 24 ๋ฐฐํฌ ๋Œ€์ƒ host/port/path SSOT ํ™•์ธ - - Gitea Actions secret/variable ๊ต์ • - - `cicd.yml` ํ•˜๋“œ์ฝ”๋”ฉ ๊ฒฝ๋กœ ์ œ๊ฑฐ ๋˜๋Š” SSOT ๊ธฐ์ค€ ๊ต์ • + - ํ•„์š” ์‹œ Gitea Actions secret/variable ๊ต์ • - ์‹ค์ œ push ๊ธฐ๋ฐ˜ ์ž๋™ ๋ฐฐํฌ ์žฌ๊ฒ€์ฆ - ์ œ์™ธ: - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ ์ˆ˜์ • - 24 runtime.env/secrets.env ๊ตฌ์กฐ ์žฌ์„ค๊ณ„ ## ์‹คํ–‰ ๋‹จ๊ณ„ -1. `rb8001/.gitea/workflows/cicd.yml`์˜ deploy host/port/path ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•œ๋‹ค. -2. `rb8001/.env.deploy`๋ฅผ ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ณต๊ตฌํ•˜๊ณ  `192.168.0.106:51124` ๊ธฐ์ค€์œผ๋กœ ๋งž์ถ˜๋‹ค. -3. `.env.deploy.example`์˜ ๊ตฌ์ฃผ์†Œ `192.168.219.45:51123`๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. -4. ํ•„์š” ์‹œ Gitea Actions secret/variable ๊ธฐ๋ฐ˜์œผ๋กœ ์ „ํ™˜ํ•˜๋˜, ๊ฐ’ ๊ธฐ์ค€์€ ์—ฌ์ „ํžˆ `192.168.0.106`, `51124`, ์‹ค์ œ ๋ฐฐํฌ ๊ฒฝ๋กœ๋กœ ๊ณ ์ •ํ•œ๋‹ค. -5. 23 ์ œ์–ด๋ฉด์—์„œ ๊ฐ™์€ ๊ฐ’์œผ๋กœ 24 ์‹คํ–‰๋ฉด SSH ์ ‘์†์ด ์‹ค์ œ ๋˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค. -6. ํ…Œ์ŠคํŠธ ์ปค๋ฐ‹ ๋˜๋Š” ์žฌ์‹คํ–‰์œผ๋กœ Actions task๊ฐ€ ์‹ค์ œ ์‹คํ–‰๋˜๊ณ , 24 ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค. +1. 51123์—์„œ runner ํ”„๋กœ์„ธ์Šค, ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ, ๋“ฑ๋ก ์ •๋ณด(`/etc/act_runner/.runner`)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹ค์ œ ๊ธฐ๋™ ๊ฒฝ๋กœ๋ฅผ ํ™•์ •ํ•œ๋‹ค. +2. `/home/admin/scripts/start-act-runner.sh` ๊ธฐ๋ฐ˜ ์žฌ๊ธฐ๋™ ๊ตฌ์กฐ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ runner๋ฅผ ์žฌ๊ธฐ๋™ํ•ด `ps -ef`, `act_runner.log`, Gitea DB `action_runner.last_online`์ด ํ˜„์žฌ ์‹œ๊ฐ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š”์ง€ ๋ณธ๋‹ค. +3. backlog๊ฐ€ ๋‹ค์‹œ ํ๋ฅด๊ธฐ ์‹œ์ž‘ํ•˜๋Š”์ง€ `action_task` ์‹ ๊ทœ row ์ƒ์„ฑ๊ณผ pending queue ๊ฐ์†Œ๋กœ ํ™•์ธํ•œ๋‹ค. +4. `rb8001 #677`์ด backlog๋ฅผ ํ†ต๊ณผํ•˜๋ฉด `action_run_job.task_id`๊ฐ€ `0`์—์„œ ์‹ค์ œ task id๋กœ ๋ฐ”๋€Œ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. +5. `rb8001/.gitea/workflows/cicd.yml`, `.env.deploy`, `.env.deploy.example`๊ฐ€ ํ˜„์žฌ SSOT(`192.168.0.106:51124`, `/home/admin/robeing/rb8001`)๋ฅผ ์œ ์ง€ํ•˜๋Š”์ง€ ์žฌํ™•์ธํ•œ๋‹ค. +6. workflow๊ฐ€ ๋ณธ๋ฌธ์— ์ง„์ž…ํ•˜๋ฉด SSH ์ ‘์†, `git pull`, `docker compose down && docker compose up -d --build`, health check๊นŒ์ง€ ์‹ค์ œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•œ๋‹ค. +7. backlog๋ฅผ ์ง€๋‚˜๋„ `rb8001`๋งŒ `task_id=0`์ด๋ฉด `#677` ์žฌ์‹คํ–‰ ๋˜๋Š” ์ƒˆ push ์žฌํŠธ๋ฆฌ๊ฑฐ๋กœ ๊ฐœ๋ณ„ run ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌ ์ง„๋‹จํ•œ๋‹ค. +8. runner ์žฌ๊ธฐ๋™ ํ›„์—๋„ `0s` ์ข…๋ฃŒ๊ฐ€ ๊ณ„์†๋˜๋ฉด Gitea์˜ runner online ์ƒํƒœ, dispatch/task ์ €์žฅ ๊ฒฝ๋กœ, repo-level Actions ์„ค์ •์„ ์ถ”๊ฐ€๋กœ ์ ๊ฒ€ํ•œ๋‹ค. +9. ๋ณต๊ตฌ ํ›„ runner ์šด์˜ ๋ฐฉ์‹์„ systemd ์œ ๋‹› ๋˜๋Š” ๋™๋“ฑํ•œ ์ž๋™๋ณต๊ตฌ ๊ฒฝ๋กœ๋กœ ์ •๋ฆฌํ•ด, ์ˆ˜๋™ ์Šคํฌ๋ฆฝํŠธ๋งŒ ๋‚จ๋Š” ๋‹จ์ผ ์žฅ์• ์ ์„ ์ œ๊ฑฐํ•œ๋‹ค. ## ์™„๋ฃŒ ๊ธฐ์ค€ -- `cicd.yml` task๊ฐ€ `0s` ์ข…๋ฃŒ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ ์‹คํ–‰ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธด๋‹ค. +- `cicd.yml` task๊ฐ€ `0s` ์ข…๋ฃŒ๊ฐ€ ์•„๋‹ˆ๋ผ checkout ์ดํ›„ ์‹ค์ œ ์‹คํ–‰ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธด๋‹ค. +- Gitea DB ๊ธฐ์ค€ `action_run_job.task_id != 0`, `action_task` ์‹ ๊ทœ row ์ƒ์„ฑ, `action_runner.last_online` ํ˜„์žฌ ์‹œ๊ฐ ๊ฐฑ์‹ ์ด ํ™•์ธ๋œ๋‹ค. +- backlog๊ฐ€ ์‹ค์ œ๋กœ ๊ฐ์†Œํ•˜๊ณ , `rb8001 #677`๋„ queue ๋Œ€๊ธฐ์—์„œ task ์‹คํ–‰ ์ƒํƒœ๋กœ ์ „์ด๋œ๋‹ค. - `git push origin main` ํ›„ 24 ์„œ๋ฒ„ `rb8001` ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™ ์žฌ์‹œ์ž‘๋œ๋‹ค. - ์ˆ˜๋™ ๋ฐฐํฌ ์—†์ด๋„ `docker ps`, ํ—ฌ์Šค์ฒดํฌ, ์ตœ์‹  ์ปค๋ฐ‹ ๋ฐ˜์˜์ด ํ™•์ธ๋œ๋‹ค. ## ํ•œ ์ค„ ๊ฒฐ๋ก  -- ๋ชฉํ‘œ๋Š” `24=192.168.0.106` SSOT๋ฅผ Actions ๋ฐฐํฌ ๊ฒฝ๋กœ๊นŒ์ง€ ์ผ์น˜์‹œ์ผœ ์ž๋™ ๋ฐฐํฌ๋ฅผ ๋‹ค์‹œ ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. +- ๋ชฉํ‘œ๋Š” `24=192.168.0.106` SSOT๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ 51123 self-hosted runner๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ ๊ฒฝ๋กœ์— ์˜ฌ๋ ค `git push -> workflow ๋ณธ๋ฌธ ์‹คํ–‰ -> 24 ์ž๋™ ๋ฐฐํฌ`๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. diff --git a/journey/research/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_๋ฆฌ์„œ์น˜.md b/journey/research/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_๋ฆฌ์„œ์น˜.md index cf228b2..1003a85 100644 --- a/journey/research/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_๋ฆฌ์„œ์น˜.md +++ b/journey/research/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_๋ฆฌ์„œ์น˜.md @@ -11,7 +11,7 @@ tags: [infra, gitea-actions, deploy, 24-server, runtime, research] - [23์ž„์‹œ๋ฐฐํฌ env.deploy SSOT ๋ฐ ๋ฐฐํฌ์‹คํŒจ ๊ทผ๋ณธ์›์ธ ํ•ด๊ฒฐ](../troubleshooting/260305_23์ž„์‹œ๋ฐฐํฌ_envdeploy_ssot_๋ฐ_๋ฐฐํฌ์‹คํŒจ_๊ทผ๋ณธ์›์ธ_ํ•ด๊ฒฐ.md) ## ๋ชฉ์  -- ์ด๋ฒˆ ์ž๋™ ๋ฐฐํฌ `0s` ์ข…๋ฃŒ๋ฅผ `์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌธ์ œ`๊ฐ€ ์•„๋‹ˆ๋ผ `์ธํ”„๋ผ ๋ฐฐํฌ ๊ฒฝ๋กœ SSOT ๋ถˆ์ผ์น˜` ๊ด€์ ์—์„œ ๋‹ซ๊ธฐ ์œ„ํ•œ ํ™•์ธ ํฌ์ธํŠธ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. +- ์ด๋ฒˆ ์ž๋™ ๋ฐฐํฌ `0s` ์ข…๋ฃŒ๋ฅผ `์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌธ์ œ`๊ฐ€ ์•„๋‹ˆ๋ผ `์ธํ”„๋ผ ๋ฐฐํฌ ๊ฒฝ๋กœ SSOT ๋ถˆ์ผ์น˜ -> 51123 runner ์‹คํ–‰์ธต` ์ˆœ์„œ๋กœ ์ขํ˜€ ๋‹ซ๊ธฐ ์œ„ํ•œ ํ™•์ธ ํฌ์ธํŠธ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ## ํ™•์ธ๋œ SSOT - 24 ์‹คํ–‰ ์„œ๋ฒ„ ๊ธฐ์ค€ ์ฃผ์†Œ: `192.168.0.106` @@ -19,23 +19,46 @@ tags: [infra, gitea-actions, deploy, 24-server, runtime, research] - 24 ์‹คํ–‰๋ฉด ๊ณตํ†ต ๋Ÿฐํƒ€์ž„ ๊ฐ’ ๊ธฐ์ค€: `/home/admin/workspace-config/runtime.env`, `/home/admin/workspace-config/secrets.env` - ๋ฐฐํฌ ๊ฒฝ๋กœ ๊ธฐ์ค€: ์„œ๋น„์Šค๋ณ„ ํ•˜๋“œ์ฝ”๋”ฉ์ด ์•„๋‹ˆ๋ผ workflow ๋ณ€์ˆ˜/secret์˜ ๋‹จ์ผ ๊ธฐ์ค€ ์‚ฌ์šฉ -## ์ด๋ฒˆ ๋ฌธ์ œ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์›์ธ ํ›„๋ณด -1. `rb8001` ์ €์žฅ์†Œ์— `.env.deploy` ์‹คํŒŒ์ผ์ด ์—†์–ด workflow๊ฐ€ ์‹œ์ž‘ ์งํ›„ ํ•„์ˆ˜ ํŒŒ์ผ ๊ฒ€์ฆ์—์„œ ์‹คํŒจํ•œ๋‹ค. -2. `.env.deploy.example`๊ฐ€ ์•„์ง `192.168.219.45:51123`๋ฅผ ๊ฐ€๋ฆฌ์ผœ ๋ณต์›ํ•˜๋”๋ผ๋„ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ฃผ์ž…ํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค. -3. repo-level Actions secrets/variables๊ฐ€ ๋น„์–ด ์žˆ์–ด, ํ˜„์žฌ workflow๋ฅผ ๋Œ€์ฒดํ•  ๋‹ค๋ฅธ ๋ฐฐํฌ๊ฐ’ ์ฃผ์ž… ๊ฒฝ๋กœ๋„ ์—†๋‹ค. -4. workflow๊ฐ€ `DEPLOY_PROJECT_DIR` ๋Œ€์‹  ์˜ค๋ž˜๋œ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. +## Facts +- 2026-03-11 `git -C /home/admin/robeing/rb8001 pull` ๊ฒฐ๊ณผ `0313313..c7bca94`๋กœ fast-forward ๋๋‹ค. +- ํ˜„์žฌ `rb8001/.env.deploy`, `.env.deploy.example`๋Š” ๋ชจ๋‘ `192.168.0.106:51124`, `DEPLOY_PROJECT_DIR=/home/admin/robeing/rb8001` ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋ผ ์žˆ๋‹ค. +- `rb8001/.gitea/workflows/cicd.yml`์€ ์—ฌ์ „ํžˆ ์ €์žฅ์†Œ ๋ฃจํŠธ `.env.deploy`๋ฅผ ์ง์ ‘ ์ฝ๋Š” ๊ตฌ์กฐ๋‹ค. +- ์ตœ์‹  run `#677`์€ ์—ฌ์ „ํžˆ `0s` ์ข…๋ฃŒ๋กœ ๋ณด์ด๋ฉฐ, workflow ๋ณธ๋ฌธ ๋‹จ๊ณ„ ๋กœ๊ทธ๊ฐ€ ํ™•์ธ๋˜์ง€ ์•Š์•˜๋‹ค. +- 2026-03-11 51123์—์„œ `ps -ef | rg 'act_runner|start-act-runner'` ๊ธฐ์ค€ ์‹คํ–‰ ์ค‘์ธ runner ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋‹ค. +- ๊ฐ™์€ ์‹œ๊ฐ `systemctl is-active act_runner`๋Š” `inactive`, `systemctl status act_runner`๋Š” `Unit act_runner.service could not be found.`๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค. +- `/etc/act_runner/.runner`์—๋Š” `org-shared-runner`, `http://localhost:3000`, `self-hosted:host`๊ฐ€ ๋“ฑ๋ก๋ผ ์žˆ๋‹ค. +- `/mnt/hdd/logs/act_runner/act_runner.log`์˜ ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต ์‹คํ–‰์€ 2026-03-05 `robeing-monitor` ๋ฐฐํฌ์˜€๊ณ , ๋งˆ์ง€๋ง‰ ์˜ค๋ฅ˜๋Š” 2026-03-06 `failed to fetch task ... dial tcp 127.0.0.1:5432: connect: connection refused`๋‹ค. +- 2026-03-11 ํ˜„์žฌ `curl http://localhost:3000/api/healthz`๋Š” pass์ด๊ณ , `ss -tlnp` ๊ธฐ์ค€ `3000`, `5432`๋Š” ๋ชจ๋‘ listen ์ƒํƒœ๋‹ค. +- Gitea DB `action_runner` ๊ธฐ์ค€ runner id `4`์˜ `last_online`์€ `2026-03-06 08:11:27+09`, `last_active`๋Š” `2026-03-05 16:38:37+09`๋‹ค. +- Gitea DB `action_run` ๊ธฐ์ค€ `rb8001` ์ตœ์‹  run `#677`์€ `status=5`, `started=0`, `stopped=0` ์ƒํƒœ๋‹ค. +- Gitea DB `action_run_job` ๊ธฐ์ค€ `#677`์˜ `deploy` job์€ `task_id=0`์ด๋‹ค. +- Gitea DB `action_task` ๊ธฐ์ค€ `rb8001`์˜ ๋งˆ์ง€๋ง‰ task ์ƒ์„ฑ์€ `2026-03-05 16:23:25+09`๋‹ค. +- 2026-03-11 21:24 KST `sudo /home/admin/scripts/start-act-runner.sh` ์‹คํ–‰ ํ›„ `act_runner daemon --config .runner` ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋๋‹ค. +- ์žฌ๊ธฐ๋™ ์งํ›„ `act_runner.log`์—๋Š” `Starting runner daemon`, `runner ... declare successfully`, ์‹ ๊ทœ task `2109`, `2110` ์‹œ์ž‘ ๋กœ๊ทธ๊ฐ€ ๋‚จ์•˜๋‹ค. +- Gitea DB `action_runner` ๊ธฐ์ค€ runner id `4`์˜ `last_online`, `last_active`๋Š” `2026-03-11 21:25:15+09`๋กœ ๊ฐฑ์‹ ๋๋‹ค. +- 2026-03-11 21:25 KST ๊ธฐ์ค€ pending run์€ ์ด 8๊ฑด์ด๋ฉฐ, `rb8001 #677` ์•ž์— ๋” ์ด๋ฅธ ์‹œ๊ฐ์˜ pending run 6๊ฑด์ด ๋‚จ์•„ ์žˆ๋‹ค. -## ์ด๋ฒˆ ์ด์Šˆ์—์„œ ์ค‘์š”ํ•œ ํ•ด์„ -- ์ˆ˜๋™ ๋ฐฐํฌ๊ฐ€ ๊ฐ™์€ ์„œ๋ฒ„์—์„œ ์ •์ƒ ์„ฑ๊ณตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— `rb8001` ์ฝ”๋“œ, Dockerfile, compose ์ž์ฒด๊ฐ€ ์ฃผ์›์ธ์ผ ๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ๋‹ค. -- ๋”ฐ๋ผ์„œ ์šฐ์„ ์ˆœ์œ„๋Š” `workflow๊ฐ€ ์ฝ๋Š” ์‹ค์ œ ๋ฐฐํฌ๊ฐ’ ํŒŒ์ผ(.env.deploy)`, `์˜ˆ์‹œ ํŒŒ์ผ์˜ ๊ตฌ์ฃผ์†Œ`, `๋ณด์™„์šฉ secret/variable ๋ถ€์žฌ` ํ™•์ธ์ด๋‹ค. -- ๊ธฐ์กด ์ธํ”„๋ผ ๋ฌธ์„œ์™€๋„ ์ผ์น˜ํ•˜๊ฒŒ, ์ด๋Ÿฐ ๋ฐฐํฌ ์‹คํŒจ๋Š” ๋Œ€๊ฐœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค `๊ฒฝ๋กœ/๊ถŒํ•œ/๋Ÿฐํƒ€์ž„ ๊ฐ’`์˜ ๋‹จ์ผ ๊ธฐ์ค€ ๋ถ•๊ดด์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. +## Interpretation +- ์ˆ˜๋™ ๋ฐฐํฌ๊ฐ€ ์ •์ƒ ์„ฑ๊ณตํ•˜๊ณ , `.env.deploy` ๊ณ„์—ด๋„ `c7bca94` ์ดํ›„ SSOT์— ๋งž์ถฐ์กŒ๊ธฐ ๋•Œ๋ฌธ์— `rb8001` ์ฝ”๋“œ๋‚˜ ํ˜„์žฌ ์ €์žฅ์†Œ ํŒŒ์ผ ์ƒํƒœ๋งŒ์œผ๋กœ ์ตœ์‹  `0s` ์ข…๋ฃŒ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. +- ๋”ฐ๋ผ์„œ ์›์ธ ํ›„๋ณด ์šฐ์„ ์ˆœ์œ„๋Š” `๋ฐฐํฌ ํŒŒ์ผ ๋ถ€์žฌ`์—์„œ `51123 self-hosted runner ์‹คํ–‰์ธต ์ค‘๋‹จ`์œผ๋กœ ์ด๋™ํ•œ๋‹ค. +- ํŠนํžˆ runner ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์—†๊ณ  ๋กœ๊ทธ๋„ 2026-03-06 ์ดํ›„ ๋ฉˆ์ถฐ ์žˆ์œผ๋ฏ€๋กœ, ์ตœ์‹  `#677`์€ workflow ๋ณธ๋ฌธ ์‹คํ–‰ ์ „ dispatch/task fetch ๋‹จ๊ณ„์—์„œ ์ข…๋ฃŒ๋์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. +- `action_run_job.task_id=0`์™€ `action_task` ์‹ ๊ทœ ์ƒ์„ฑ ๋ถ€์žฌ๊ฐ€ ํ•จ๊ป˜ ๋ณด์—ฌ์„œ, ์ตœ์‹  ์ด์Šˆ๋Š” `job ์ƒ์„ฑ ํ›„ task ํ• ๋‹น์ด ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ`๋กœ ๋ณด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ทผ๊ฑฐ๊ฐ€ ๊ฐ•ํ•˜๋‹ค. +- ๋‹ค๋งŒ ์žฌ๊ธฐ๋™ ๋’ค ์‹ ๊ทœ task๊ฐ€ ์‹ค์ œ๋กœ ๋‹ค์‹œ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ํ™•์ธ๋์œผ๋ฏ€๋กœ, ์ง€๊ธˆ ๋‚จ์€ ์ƒํƒœ๋ฅผ `runner fetch ๊ฒฝ๋กœ ์™„์ „ ๋ถˆ๋Šฅ`์œผ๋กœ ๋ณด๊ธฐ๋Š” ์–ด๋ ต๊ณ  `backlog ๋ณต๊ตฌ ์ง„ํ–‰ ์ค‘`์œผ๋กœ ๋ณด๋Š” ํŽธ์ด ์ •ํ™•ํ•˜๋‹ค. +- ๋‹ค๋งŒ 2026-03-06์˜ `127.0.0.1:5432 connection refused`๊ฐ€ ๋‹จ๋ฐœ์„ฑ์ธ์ง€, runner ์ค‘๋‹จ์˜ ์ง์ ‘ ์›์ธ์ธ์ง€, ํ˜„์žฌ ์žฌ์‹œ์ž‘ ๋ถˆ๊ฐ€์™€ ์—ฐ๊ฒฐ๋˜๋Š”์ง€๋Š” ์•„์ง ํ™•์ •ํ•  ์ˆ˜ ์—†๋‹ค. -## ๋‹ซํž˜์— ํ•„์š”ํ•œ ์ตœ์†Œ ํ™•์ธ -- `cicd.yml`์˜ ์‹ค์ œ deploy host/port/path ์ฐธ์กฐ๊ฐ’ -- `rb8001/.env.deploy` ์‹คํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€ -- `.env.deploy.example`์˜ ๊ตฌ์ฃผ์†Œ ์ œ๊ฑฐ ์—ฌ๋ถ€ -- Gitea Actions secret/variable ๋ถ€์žฌ๋ฅผ ์œ ์ง€ํ• ์ง€, ๋ณ€์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ”๊ฟ€์ง€ ๊ฒฐ์ • -- task๊ฐ€ ์™œ `0s`๋กœ ๋๋‚ฌ๋Š”์ง€ runner/task ๋กœ๊ทธ ํ™•์ธ +## Unresolved +- Gitea UI์—์„œ runner๊ฐ€ ํ˜„์žฌ `online/offline` ์ค‘ ์–ด๋–ค ์ƒํƒœ๋กœ ํ‘œ์‹œ๋˜๋Š”์ง€ +- `start-act-runner.sh`๊ฐ€ systemd ์—†์ด ์ˆ˜๋™ ์‹คํ–‰๋งŒ ์ „์ œํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ์˜๋„๋œ ์šด์˜ ๊ธฐ์ค€์ธ์ง€ +- `start-act-runner.sh`์˜ `act_runner daemon --config .runner`๊ฐ€ ์‹ค์ œ ์žฌ๊ธฐ๋™ ์‹คํŒจ์™€ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ +- ์ตœ์‹  `#677` dispatch/task๊ฐ€ Gitea DB์—๋Š” ๋‚จ์•˜์ง€๋งŒ runner๊ฐ€ fetchํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์ธ์ง€ +- runner ์žฌ๊ธฐ๋™ ์งํ›„ `action_runner.last_online`์ด ํ˜„์žฌ ์‹œ๊ฐ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š”์ง€ +- runner ์žฌ๊ธฐ๋™ ํ›„ `#677`์ด ๊ธฐ์กด pending ์ƒํƒœ์—์„œ ์ˆœ์ฐจ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์ƒˆ run์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”์ง€ +- runner ์žฌ๊ธฐ๋™ ํ›„ ๋™์ผ ์ปค๋ฐ‹ ์žฌ์‹คํ–‰ ์‹œ workflow ๋ณธ๋ฌธ ๋กœ๊ทธ๊ฐ€ ์‹ค์ œ๋กœ ์ƒ๊ธฐ๋Š”์ง€ ## ๊ฒฐ๋ก  -- ํ˜„์žฌ๋Š” ๊ฐ€์„ค ์ˆ˜์ค€์„ ๋„˜์–ด์„œ, `rb8001` ์ž๋™ ๋ฐฐํฌ ๊ฒฝ๋กœ๊ฐ€ `.env.deploy` ๋ถ€์žฌ์™€ ๊ตฌ์ฃผ์†Œ ์˜ˆ์‹œ ํŒŒ์ผ ๋•Œ๋ฌธ์— ์‹ค์ œ SSOT์— ์ˆ˜๋ ดํ•˜์ง€ ์•Š์•˜์Œ`์ด ์‹ค์ฆ๋œ ์ƒํƒœ๋‹ค. +- ํ˜„์žฌ๋Š” `rb8001 deploy SSOT ๋ถˆ์ผ์น˜`๊ฐ€ 1์ฐจ ์›์ธ์ด์—ˆ์Œ์€ ํ™•์ธ๋์ง€๋งŒ, 2026-03-11 ๊ธฐ์ค€ ๋‚จ์•„ ์žˆ๋Š” ์ตœ์‹  `0s` ์ข…๋ฃŒ๋Š” `51123 self-hosted runner ์‹คํ–‰์ธต ์ค‘๋‹จ`์ด ๋” ๊ฐ€๊นŒ์šด ์›์ธ ํ›„๋ณด๋‹ค. + +## ๊ถŒ์žฅ +- 1์ˆœ์œ„: `/home/admin/scripts/start-act-runner.sh`๋กœ runner๋ฅผ ์žฌ๊ธฐ๋™ํ•˜๊ณ  `ps -ef`, `act_runner.log`, `action_runner.last_online` ๊ฐฑ์‹  ์—ฌ๋ถ€๋ฅผ ๋™์‹œ์— ํ™•์ธํ•œ๋‹ค. +- 2์ˆœ์œ„: backlog๊ฐ€ ์‹ค์ œ๋กœ ์ค„์–ด๋“œ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , `rb8001 #677`์ด ๋Œ€๊ธฐ์—ด์„ ์ง€๋‚˜๋„ `task_id=0`์ด๋ฉด ๊ทธ๋•Œ `#677` ์žฌ์‹คํ–‰ ๋˜๋Š” ์ƒˆ push๋กœ ์žฌํŠธ๋ฆฌ๊ฑฐํ•œ๋‹ค. +- 3์ˆœ์œ„: runner ๋ณต๊ตฌ๊ฐ€ ํ™•์ธ๋˜๋ฉด ์ˆ˜๋™ ์Šคํฌ๋ฆฝํŠธ ์˜์กด์„ ์ค„์ด๊ธฐ ์œ„ํ•ด systemd ์œ ๋‹›ํ™” ๋˜๋Š” ๋™๋“ฑํ•œ ๋ถ€ํŒ… ์ž๋™๋ณต๊ตฌ ๊ฒฝ๋กœ๋ฅผ ๋ณ„๋„ ๊ณ„ํš์œผ๋กœ ์Šน๊ฒฉํ•œ๋‹ค. diff --git a/journey/troubleshooting/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_์ด์Šˆ.md b/journey/troubleshooting/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_์ด์Šˆ.md index 137c5ea..9f4ee9b 100644 --- a/journey/troubleshooting/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_์ด์Šˆ.md +++ b/journey/troubleshooting/260311_24์ž๋™๋ฐฐํฌ_0์ดˆ์ข…๋ฃŒ_runtime_ssot๋ถˆ์ผ์น˜_์ด์Šˆ.md @@ -12,6 +12,7 @@ tags: [infra, gitea-actions, deploy, 24-server, runtime, troubleshooting] ## ๋ฌธ์ œ - `rb8001` ์ตœ์‹  ์ปค๋ฐ‹ ํ‘ธ์‹œ ํ›„ Gitea Actions `cicd.yml`์ด `0s`๋กœ ์ข…๋ฃŒ๋˜๊ณ  ์ž๋™ ๋ฐฐํฌ๊ฐ€ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜๋‹ค. - ๊ฐ™์€ ์‹œ์ ์— 24 ์‹คํ–‰ ์„œ๋ฒ„ `rb8001` ์ปจํ…Œ์ด๋„ˆ๋Š” ์žฌ์‹œ์ž‘๋˜์ง€ ์•Š์•˜๊ณ , ์ˆ˜๋™ `docker compose down && docker compose up -d --build` ํ›„์—๋งŒ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜์˜๋๋‹ค. +- 2026-03-11 `c7bca94 fix: restore deploy ssot for rb8001` ๋ฐ˜์˜ ๋’ค์—๋„ ์ตœ์‹  run `#677`์€ ์—ฌ์ „ํžˆ `0s`๋กœ ๋๋‚˜ workflow ๋ณธ๋ฌธ ์‹คํ–‰ ์ฆ๊ฑฐ๊ฐ€ ์—†๋‹ค. ## ํ™•์ธ๋œ ์‚ฌ์‹ค - ํ˜„์žฌ 24 ์‹คํ–‰ ์„œ๋ฒ„์˜ runtime SSOT๋Š” `192.168.0.106`์ด๋‹ค. @@ -20,18 +21,39 @@ tags: [infra, gitea-actions, deploy, 24-server, runtime, troubleshooting] - ๊ธฐ์กด ์ธํ”„๋ผ ๋ฌธ์„œ์ƒ ๋ฐฐํฌ ์‹คํŒจ์˜ ๋Œ€ํ‘œ ์›์ธ์€ `DEPLOY_PROJECT_DIR` ๊ฐ™์€ ๋‹จ์ผ ๊ธฐ์ค€์„ ์•ˆ ์“ฐ๊ณ  ์„œ๋น„์Šค๋ณ„ ํ•˜๋“œ์ฝ”๋”ฉ ๊ฒฝ๋กœ/๊ฐ’์„ ๋‚จ๊ธด ๊ฒฝ์šฐ์˜€๋‹ค. - ์ด๋ฒˆ ๊ฑด์€ ์ž๋™ ๋ฐฐํฌ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์•˜์ง€๋งŒ, ๊ฐ™์€ ์„œ๋ฒ„์—์„œ ์ˆ˜๋™ ๋ฐฐํฌ๋Š” ์ •์ƒ ์„ฑ๊ณตํ–ˆ๋‹ค. - `rb8001/.gitea/workflows/cicd.yml`์€ `secrets.*`๋‚˜ `vars.*`๊ฐ€ ์•„๋‹ˆ๋ผ ์ €์žฅ์†Œ ๋ฃจํŠธ `.env.deploy`๋ฅผ ์ง์ ‘ ์ฝ๋„๋ก ์ž‘์„ฑ๋ผ ์žˆ๋‹ค. -- ํ˜„์žฌ `rb8001` ์ €์žฅ์†Œ์—๋Š” `.env.deploy`๊ฐ€ ์—†๊ณ  `.env.deploy.example`๋งŒ ์กด์žฌํ•œ๋‹ค. -- `rb8001/.env.deploy.example`์—๋Š” ์•„์ง `DEPLOY_SSH_HOST=192.168.219.45`, `DEPLOY_SSH_PORT=51123`๊ฐ€ ๋‚จ์•„ ์žˆ๋‹ค. +- 2026-03-11 `git -C /home/admin/robeing/rb8001 pull` ๊ฒฐ๊ณผ `0313313..c7bca94`๋กœ ๊ฐฑ์‹ ๋๊ณ , ํ˜„์žฌ ์ €์žฅ์†Œ์—๋Š” `.env.deploy` ์‹คํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค. +- ํ˜„์žฌ `rb8001/.env.deploy`, `.env.deploy.example` ๋ชจ๋‘ `DEPLOY_SSH_HOST=192.168.0.106`, `DEPLOY_SSH_PORT=51124`, `DEPLOY_PROJECT_DIR=/home/admin/robeing/rb8001`๋กœ ์ •๋ ฌ๋ผ ์žˆ๋‹ค. - ๋ฐ˜๋ฉด `skill_email`, `robeing-monitor`, `skill-rag-file`์˜ ์‹ค์ œ `.env.deploy`๋Š” ๋ชจ๋‘ `DEPLOY_SSH_HOST=192.168.0.106`, `DEPLOY_SSH_PORT=51124`๋กœ ๋งž์ถฐ์ ธ ์žˆ๋‹ค. - Gitea API ๊ธฐ์ค€ `rb8001` ์ €์žฅ์†Œ์˜ Actions secrets/variables ๋ชฉ๋ก์€ ํ˜„์žฌ ๋นˆ ๋ฐฐ์—ด(`[]`)์ด๋‹ค. +- 2026-03-11 51123 ์„œ๋ฒ„์—์„œ `ps -ef | rg 'act_runner|start-act-runner'` ๊ธฐ์ค€ ์‹คํ–‰ ์ค‘์ธ runner ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์—ˆ๋‹ค. +- 2026-03-11 51123 ์„œ๋ฒ„์—์„œ `systemctl is-active act_runner`๋Š” `inactive`, `systemctl status act_runner`๋Š” `Unit act_runner.service could not be found.`๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค. +- `/home/admin/scripts/start-act-runner.sh`๋Š” systemd ์œ ๋‹›์ด ์•„๋‹ˆ๋ผ `cd /etc/act_runner && nohup act_runner daemon --config .runner > /mnt/hdd/logs/act_runner/act_runner.log 2>&1 &` ๋ฐฉ์‹์œผ๋กœ runner๋ฅผ ๋„์šฐ๋„๋ก ์ž‘์„ฑ๋ผ ์žˆ๋‹ค. +- `/etc/act_runner/.runner`์—๋Š” runner id `4`, name `org-shared-runner`, address `http://localhost:3000`, label `self-hosted:host`๊ฐ€ ๋“ฑ๋ก๋ผ ์žˆ๋‹ค. +- `/mnt/hdd/logs/act_runner/act_runner.log`์˜ ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต ์‹คํ–‰ ํ”์ ์€ 2026-03-05 `robeing-monitor` ๋ฐฐํฌ์ด๊ณ , ๋งˆ์ง€๋ง‰ ์˜ค๋ฅ˜๋Š” 2026-03-06 `failed to fetch task ... dial tcp 127.0.0.1:5432: connect: connection refused`๋‹ค. +- ๋ฐ˜๋ฉด 2026-03-11 ํ˜„์žฌ 51123์—์„œ `curl http://localhost:3000/api/healthz`๋Š” `status: pass`, `ss -tlnp` ๊ธฐ์ค€ `3000`, `5432`๋Š” ๋ชจ๋‘ listen ์ƒํƒœ๋‹ค. +- Gitea DB `action_runner` ๊ธฐ์ค€ runner id `4`์˜ `last_online`์€ `2026-03-06 08:11:27+09`, `last_active`๋Š” `2026-03-05 16:38:37+09`์—์„œ ๋ฉˆ์ถฐ ์žˆ๋‹ค. +- Gitea DB `action_run` ๊ธฐ์ค€ `rb8001` ์ตœ์‹  run `#677`์€ `status=5`, `started=0`, `stopped=0` ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ๋‹ค. +- Gitea DB `action_run_job` ๊ธฐ์ค€ `#677`์˜ `deploy` job์€ `task_id=0`, `started=0`, `stopped=0`์ด๋ผ runner์— task๊ฐ€ ํ• ๋‹น๋˜๊ธฐ ์ „ ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ท„๋‹ค. +- Gitea DB `action_task` ๊ธฐ์ค€ `rb8001`์˜ ๋งˆ์ง€๋ง‰ task ์ƒ์„ฑ ์‹œ๊ฐ์€ `2026-03-05 16:23:25+09`์ด๊ณ , 2026-03-06 ์ดํ›„ ์ƒˆ task๋Š” ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค. +- 2026-03-11 21:24 KST `sudo /home/admin/scripts/start-act-runner.sh` ์‹คํ–‰ ํ›„ `act_runner daemon --config .runner` ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋๋‹ค. +- ์žฌ๊ธฐ๋™ ์งํ›„ `/mnt/hdd/logs/act_runner/act_runner.log`์—๋Š” `Starting runner daemon`, `runner: org-shared-runner ... declare successfully`๊ฐ€ ๊ธฐ๋ก๋๊ณ , ์ด์–ด์„œ ์ƒˆ task `2109`, `2110`์ด ์‹ค์ œ๋กœ ์ƒ์„ฑยท์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. +- Gitea DB `action_runner` ๊ธฐ์ค€ runner id `4`์˜ `last_online`, `last_active`๋Š” `2026-03-11 21:25:15+09`๋กœ ๊ฐฑ์‹ ๋๋‹ค. +- 2026-03-11 21:25 KST ๊ธฐ์ค€ pending run/job์€ ์ด 8๊ฑด์ด๋ฉฐ, `skill-slack`, `skill-email`, `auth-server`, `skill-calendar`, `robeing-monitor`, `admin-dashboard`, `rb8001`, `nginx-infra` ์ˆœ์œผ๋กœ backlog๊ฐ€ ๋‚จ์•„ ์žˆ๋‹ค. +- ๋”ฐ๋ผ์„œ ํ˜„์žฌ `rb8001 #677`์€ `runner๊ฐ€ ์ฃฝ์–ด์„œ ์˜๊ตฌ ์ •์ง€` ์ƒํƒœ๋Š” ๋ฒ—์–ด๋‚ฌ์ง€๋งŒ, ์•„์ง ์ž๊ธฐ ์ฐจ๋ก€ task๋ฅผ ๋ฐ›๊ธฐ ์ „์ธ queue ๋Œ€๊ธฐ ์ƒํƒœ๋‹ค. ## ํ˜„์žฌ ํ•ด์„ -- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ์ž์ฒด ๋ฌธ์ œ๋ณด๋‹ค๋Š” `Gitea Actions -> 24 ๋ฐฐํฌ ๊ฒฝ๋กœ`์˜ SSOT ๋ถˆ์ผ์น˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. -- ํŠนํžˆ `rb8001`์€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ๋‹ฌ๋ฆฌ `.env.deploy` ์‹คํŒŒ์ผ์ด ์—†๊ณ , ์˜ˆ์‹œ ํŒŒ์ผ๋„ ๊ตฌ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌ์ผœ ์ž๋™ ๋ฐฐํฌ ๊ฒฝ๋กœ๊ฐ€ SSOT์— ์ˆ˜๋ ดํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋‹ค. +- `rb8001` ์ €์žฅ์†Œ์˜ deploy SSOT ๋ถˆ์ผ์น˜ ์ž์ฒด๋Š” `c7bca94`๋กœ ์ƒ๋‹น ๋ถ€๋ถ„ ํ•ด์†Œ๋๊ณ , ์ด ์‚ฌ์‹ค๋งŒ์œผ๋กœ๋Š” ์ตœ์‹  `0s` ์ข…๋ฃŒ๋ฅผ ๋” ์ด์ƒ ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. +- ํ˜„์žฌ ์šฐ์„  ์›์ธ ํ›„๋ณด๋Š” `rb8001 ์•ฑ`๋ณด๋‹ค `51123 Gitea Actions self-hosted runner ์‹คํ–‰์ธต`์ด๋‹ค. +- ํŠนํžˆ runner ํ”„๋กœ์„ธ์Šค ๋ถ€์žฌ, systemd ์œ ๋‹› ๋ถ€์žฌ, ๋กœ๊ทธ ์ •์ง€ ์‹œ์ (2026-03-06)์ด ํ•จ๊ป˜ ๋ณด์—ฌ์„œ ์ตœ์‹  `#677`์€ workflow ๋ณธ๋ฌธ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ข…๋ฃŒ๋์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. +- DB ๊ธฐ์ค€์œผ๋กœ๋„ `#677`์€ task ๋ฏธ์ƒ์„ฑ ๋Œ€๊ธฐ ์ƒํƒœ๋ผ, `0s ์ข…๋ฃŒ`๋Š” workflow ๋‚ด๋ถ€ ์Šคํ… ์‹คํŒจ๋ณด๋‹ค `runner fetch/ํ• ๋‹น ๊ฒฝ๋กœ ๋ฏธ์ž‘๋™` ํ•ด์„์ด ๋” ๋งž๋‹ค. +- ์žฌ๊ธฐ๋™ ์ดํ›„ ์ƒˆ task๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์‹ค์ฆ๋์œผ๋ฏ€๋กœ, `runner fetch ๊ฒฝ๋กœ ์ž์ฒด๋Š” ๋ณต๊ตฌ ๊ฐ€๋Šฅ`ํ•จ์ด ํ™•์ธ๋๋‹ค. +- ๋‚จ์€ ๋ฏธํ•ด๊ฒฐ ๋ฒ”์œ„๋Š” `rb8001 #677` ๊ฐœ๋ณ„ run์ด backlog๋ฅผ ํ†ต๊ณผํ•ด ์‹ค์ œ task๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  24 ์ž๋™๋ฐฐํฌ๊นŒ์ง€ ๋‹ซํžˆ๋Š”์ง€ ์—ฌ๋ถ€๋‹ค. +- ๋‹ค๋งŒ `start-act-runner.sh`์˜ `--config .runner` ์‚ฌ์šฉ์ด ์‹ค์ œ ์žฌ๊ธฐ๋™ ์‹คํŒจ์™€ ์—ฐ๊ฒฐ๋˜๋Š”์ง€๋Š” ์•„์ง ๋ฏธํ™•์ •์ด๋ฏ€๋กœ, ๊ด€์ธก ์‚ฌ์‹ค๊ณผ ์ถ”์ • ์›์ธ์„ ๋ถ„๋ฆฌํ•ด์„œ ๋‹ค๋ค„์•ผ ํ•œ๋‹ค. ## ์ง์ ‘ ์˜ํ–ฅ - `git push origin main`์ด ๋ฐฐํฌ ์™„๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. - ์šด์˜์ž๊ฐ€ ์ˆ˜๋™ ๋ฐฐํฌ๋กœ ๊ฐœ์ž…ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฐฐํฌ ์žฌํ˜„์„ฑ๊ณผ ์ถ”์ ์„ฑ์ด ๊นจ์ง„๋‹ค. +- runner๊ฐ€ ์‹ค์ œ๋กœ ์ฃฝ์–ด ์žˆ์œผ๋ฉด `rb8001`๋ฟ ์•„๋‹ˆ๋ผ ๊ฐ™์€ self-hosted runner๋ฅผ ์“ฐ๋Š” ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋„ dispatch๋ฅผ ๋ฐ›์•„๋„ ์‹คํ–‰์ธต์—์„œ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋‹ค. ## ํ•œ ์ค„ ๊ฒฐ๋ก  -- ์ด๋ฒˆ ์ž๋™ ๋ฐฐํฌ ์‹คํŒจ๋Š” `24 ์‹คํ–‰๋ฉด runtime SSOT`์™€ `Gitea Actions ๋ฐฐํฌ ๊ฒฝ๋กœ`๊ฐ€ ๋‹ค์‹œ ์–ด๊ธ‹๋‚ฌ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์ƒํƒœ๋‹ค. +- ์ด๋ฒˆ ์ž๋™ ๋ฐฐํฌ ์‹คํŒจ๋Š” `rb8001 deploy SSOT ๋ถˆ์ผ์น˜`์—์„œ ์‹œ์ž‘๋์ง€๋งŒ, 2026-03-11 ๊ธฐ์ค€ ๋‚จ์•„ ์žˆ๋Š” `0s` ์ข…๋ฃŒ์˜ ๋” ์œ ๋ ฅํ•œ ์›์ธ์€ `51123 self-hosted runner ์‹คํ–‰์ธต ์ค‘๋‹จ`์ด๋‹ค.