diff --git a/01.Shelf/KUI/01. 아키텍처 흐름.md b/01.Shelf/KUI/01. 아키텍처 흐름.md deleted file mode 100644 index 7c9133a..0000000 --- a/01.Shelf/KUI/01. 아키텍처 흐름.md +++ /dev/null @@ -1,16 +0,0 @@ -- **Obsidian Vault (Private Repo):** 개인용 비공개 저장소에 마스킹되지 않은 원본 노트를 push합니다. - -- **Jenkins Trigger:** 젠킨스가 Webhook을 통해 push 이벤트를 감지하거나 주기적으로 폴링(Polling)합니다. - -- **Validation & Masking (Build Step):** 젠킨스 서버 내에서 Python 스크립트 등을 실행해 변경된 파일의 민감 정보를 검증하고 수정합니다. - -- **Push to Quartz (Post-build):** 정제된 파일을 쿼츠 저장소로 복사한 뒤, 해당 저장소에 커밋 및 push를 수행합니다. - -> [!todo] **필요한것** 📋 -> -> - [x] kui vault repository -> - [x] kui repository -> - [ ] Jenkins 서버 ( 구글에서 제공해주는 클라우드 서버 확보하면 될 듯 ) -> - [ ] blur 처리 용 서버 ( kui veil, veil 이라고 이름 지으면 될 듯 ) - -jenkins 서버를 구성해보자 \ No newline at end of file diff --git a/01.Shelf/KUI/02. Jenkins 서버 구축 계획.md b/01.Shelf/KUI/02. Jenkins 서버 구축 계획.md deleted file mode 100644 index 04508a9..0000000 --- a/01.Shelf/KUI/02. Jenkins 서버 구축 계획.md +++ /dev/null @@ -1,58 +0,0 @@ -확보중인 개인용 서버가 없기 때문에 서버부터 확보해야 함. - -> [!question] -> Q. 클라우드 서버를 확보해야해. 무료여야하고 지금 내가 하려는 블러처리작업용으로 적당한정도면 돼 -> A. 무료이면서 **젠킨스**와 **마스킹 스크립트(Python)**를 돌리기에 가장 적합한 클라우드 서비스 3가지를 추천해 드릴게요. 2026년 현재 기준으로도 가장 안정적인 옵션들입니다. - -|**비교 항목**|**Oracle Cloud**|**Google Cloud**|**AWS**| -|---|---|---|---| -|**성능 (RAM)**|⭐⭐⭐⭐⭐ (24GB)|⭐ (1GB)|⭐⭐ (2GB)| -|**안정성**|⭐⭐⭐|⭐⭐⭐⭐⭐|⭐⭐⭐⭐⭐| -|**추천 이유**|젠킨스 구동에 여유로움|설정이 매우 간편함|글로벌 표준 학습 가능| -이 중 AWS는 일정기간만 무료임 -오라클은 아직 마이너해서 쓰고싶지 않음 -GCP로 가기로 함. -Google Cloud Platform - ---- -구글 클라우드(GCP)에서 **평생 무료**로 쓸 수 있는 사양은 딱 하나 정해져 있습니다. 바로 **e2-micro** 인스턴스입니다. 실시간 응답이 중요하지 않은 **`kui-ink`** 서버용으로는 아주 적절한 선택이에요. - -GCP에서 무료로 구동하기 위한 '필수 조건'을 정리해 드릴게요. 이대로만 설정하면 돈이 나가지 않습니다. - ---- - -### 🖥️ GCP 평생 무료 서버 설정값 (2026 기준) -|**항목**|**설정해야 할 값**|**비고**| -|---|---|---| -|**리전 (Region)**|**us-west1** (오리건)|한국에서 가장 지연시간이 적은 무료 리전| -|**머신 유형**|**e2-micro**|2 vCPU, 1GB RAM (공유 코어)| -|**부팅 디스크**|**Standard** Persistent Disk|'Balanced'나 'SSD'는 유료입니다!| -|**디스크 용량**|**30GB** 이하|무료 한도가 딱 30GB까지입니다.| -### ⚠️ 주의할 점 (젠킨스 구동 관련) - -**e2-micro**는 램이 **1GB**뿐입니다. 젠킨스는 Java 기반이라 기본적으로 메모리를 많이 먹어서, 그냥 실행하면 서버가 멈출 수도 있어요. 이를 해결하기 위한 팁입니다. - -1. **Swap 메모리 설정:** 부족한 램을 보충하기 위해 하드디스크의 일부(약 2GB)를 가상 메모리로 사용하는 설정을 반드시 해줘야 합니다. - -2. **경량화 설정:** 젠킨스 실행 옵션에서 사용할 메모리 최대치(`-Xmx`)를 제한하면 1GB 환경에서도 꾸역꾸역 돌아갑니다. - -3. **오리건 리전:** 앞서 말씀드린 것처럼 한국 리전은 무료가 아니므로 꼭 **us-west1**을 선택하세요. - -### 🚀 다음 단계: 서버 생성하기 - -GCP 콘솔에 접속해서 아래 순서대로 진행해 보세요. - -1. [GCP 콘솔](https://console.cloud.google.com/) 접속 및 프로젝트 생성 - -2. **Compute Engine > VM 인스턴스** 메뉴로 이동 - -3. **인스턴스 만들기** 클릭 - -4. 위에 표에 적힌 **리전, 머신 유형, 디스크**를 정확히 선택 - -5. 하단 **만들기** 버튼 클릭 - - -혹시 가입이나 인스턴스 생성 중에 막히는 부분이 생기면 바로 말씀해 주세요. 서버가 만들어지면 바로 **`kui-ink`**라는 이름을 붙여주고 젠킨스 설치로 넘어가겠습니다! - -**지금 바로 GCP 가입을 시도해 보시겠어요?** 가입 후 서버 생성 화면까지 가시면 다음 가이드를 드릴게요. \ No newline at end of file diff --git a/01.Shelf/KUI/03. Jenkins 설치.md b/01.Shelf/KUI/03. Jenkins 설치.md deleted file mode 100644 index a140f85..0000000 --- a/01.Shelf/KUI/03. Jenkins 설치.md +++ /dev/null @@ -1,60 +0,0 @@ -를 시도했지만 실패함. -아마 우분투 최신버전 (25. 몇이었는데..)과 젠킨스가 잘 안맞는거 같음. - -젠킨스말고 다른 우회방법을 찾아봄 - -> [!question] -> Q. 젠킨스를 대체할만한 프로그램없어? -> A. 젠킨스의 그 복잡한 설정과 인증 오류 때문에 정말 정이 뚝 떨어지셨을 것 같습니다. 180°C의 열정으로 시작했는데 도구 설치부터 막히면 누구라도 다른 길을 찾고 싶어지죠. -> -> **HDI**님이 원하시는 건 **내 서버(GCP) 내에서 직접 돌아가면서**, 젠킨스처럼 UI도 있고, 내 Obsidian 노트를 Quartz로 빌드해 배포해줄 **'설치가 쉽고 가벼운'** 대체 프로그램이겠죠? -> -> 젠킨스의 무거운 Java 기반 엔진 대신, 요즘 개발자들 사이에서 **젠킨스 킬러**로 불리는 가벼운 도구 2가지를 추천해 드립니다. - -### 🛠️ 젠킨스를 대체할 가벼운 CI/CD 도구 TOP 2 - -#### 1. [[Woodpecker]] CI (강력 추천) - -젠킨스가 대형 버스라면, [[Woodpecker]]는 날렵한 전기차 같습니다. **Go 언어**로 만들어져서 메모리를 아주 적게 먹고, 설정이 매우 직관적입니다. - -- **장점:** 젠킨스보다 훨씬 가볍습니다(1GB 램인 `e2-micro`에 최적). 모든 설정을 `.woodpecker.yml` 파일 하나로 끝낼 수 있습니다. - -- **UI:** 젠킨스처럼 깔끔한 웹 대시보드를 제공합니다. - -- **설치:** 도커(Docker)를 이용하면 명령어 한두 줄로 끝납니다. 아까 같은 `GPG` 오류와 싸울 필요가 없습니다. - - -#### 2. Gitea Actions (Gitea를 쓰신다면 최고) - -만약 내 서버에 소스코드를 직접 관리하고 싶다면 **Gitea**를 설치하는 방법이 있습니다. Gitea 안에는 GitHub Actions와 거의 똑같은 방식의 **Actions** 기능이 내장되어 있습니다. - -- **장점:** 소스코드 관리(Git)와 자동 배포(CI/CD)를 한 곳에서 끝낼 수 있습니다. - -- **특징:** GitHub Actions 문법을 그대로 쓸 수 있어 학습 곡선이 낮습니다. - -### 💡 왜 이 도구들이 젠킨스보다 나을까요? - -젠킨스는 20년 전 기술이라 설치 과정부터 수많은 의존성(Java 버전, GPG 키 등)과 싸워야 합니다. 반면 **Woodpecker** 같은 최신 도구들은 **도커(Docker)** 기반으로 돌아가는 것을 기본으로 합니다. - -**도커를 사용하면:** - -1. 내 서버의 우분투 버전이 무엇이든 상관없습니다. - -2. `GPG` 키 에러, `NO_PUBKEY` 에러 같은 지긋지긋한 문제에서 완전히 해방됩니다. - -3. 삭제하고 싶을 때도 명령어 한 줄이면 찌꺼기 없이 사라집니다. - - ---- - -### 🚀 HDI님을 위한 새로운 제안 - -**"도커(Docker)를 먼저 깔고, 그 위에 Woodpecker CI를 올려보는 건 어떠신가요?"** - -도커는 설치가 아주 쉽고, 한 번 깔아두면 나중에 다른 프로그램을 올릴 때도 지금 같은 고생을 안 하게 해주는 마법 같은 도구입니다. 180°C의 집념을 젠킨스와의 싸움이 아닌, **진짜 자동화 시스템 구축**에 쏟으실 수 있게 도와드릴게요. - - -# 그래서 [[Woodpecker]] CI를 사용해보기로 함 -docker 기반으로 구동되는 CI/CD tool -도커 기반이니까 당연히 os 안탈거같다 - diff --git a/01.Shelf/KUI/04. Woodpecker 설치.md b/01.Shelf/KUI/04. Woodpecker 설치.md deleted file mode 100644 index 78f8c54..0000000 --- a/01.Shelf/KUI/04. Woodpecker 설치.md +++ /dev/null @@ -1,117 +0,0 @@ -## 1. 개요 - -기존 젠킨스(Jenkins)는 자바 기반으로 메모리 점유율이 높아 저사양 서버에서 구동이 힘들었음. 이를 해결하기 위해 Go 언어 기반의 초경량 CI 도구인 **Woodpecker**를 도입하고, 도커(Docker) 기반으로 환경을 재구축함. - ---- - -## 2. 환경 정화 및 도커 설치 - -무거운 자바를 삭제하고 현대적인 컨테이너 환경을 준비함. - -```bash -# OpenJDK 삭제 및 정리 -sudo apt purge -y openjdk-17-jre openjdk-17-jre-headless -sudo apt autoremove -y - -# 도커(Docker) 설치 -curl -fsSL https://get.docker.com -o get-docker.sh -sudo sh get-docker.sh - -# 현재 사용자에게 도커 권한 부여 -sudo usermod -aG docker $USER -newgrp docker # 로그아웃 없이 권한 즉시 적용 -``` - -## 3. GitHub OAuth 앱 등록 - -우드패커가 GitHub 저장소에 접근할 수 있도록 통행증을 발급함. - -1. **GitHub Settings > Developer settings > OAuth Apps** 이동 - -2. **New OAuth App** 생성 - - - Homepage URL: `http://34.19.79.94:8000` - - - Authorization callback URL: `http://34.19.79.94:8000/authorize` - -3. **Client ID**와 **Client Secret** 발급 및 보관 - - ---- - -## 4. 우드패커 서버 및 에이전트 배포 - -`docker-compose`를 사용하여 서버(두뇌)와 에이전트(일꾼)를 동시에 띄움. - -**파일 위치:** `~/woodpecker/docker-compose.yaml` - -```bash -services: - woodpecker-server: - image: woodpeckerci/woodpecker-server:latest - ports: - - 8000:8000 - volumes: - - ./woodpecker-server:/var/lib/woodpecker - environment: - - WOODPECKER_OPEN=true - - WOODPECKER_HOST=http://34.19.79.94:8000 - - WOODPECKER_AGENT_SECRET=wp_secure_9827_vpx_qr # 보안을 위해 이니셜 제외 - - WOODPECKER_GITHUB=true - - WOODPECKER_GITHUB_CLIENT=발급받은_ID - - WOODPECKER_GITHUB_SECRET=발급받은_Secret - - woodpecker-agent: - image: woodpeckerci/woodpecker-agent:latest - command: agent - volumes: - - /var/run/docker.sock:/var/run/docker.sock - environment: - - WOODPECKER_SERVER=woodpecker-server:9000 - - WOODPECKER_AGENT_SECRET=wp_secure_9827_vpx_qr -``` - -```bash -# 실행 및 상태 확인 -docker compose up -d -docker ps -``` - -## 5. 파이프라인 설정 (`.woodpecker.yml`) - -저장소 최상단에 작업 지시서를 작성하여 자동화를 테스트함. - -**주요 해결 과제:** - -- **Git 명령 인식:** 기본 `alpine` 이미지에는 git이 없으므로 `alpine/git` 이미지를 사용하여 해결. - -- **이력 확인(HEAD^):** 기본 clone은 depth가 1이라 이전 이력이 없음. `depth: 2` 설정을 통해 최적화된 상태로 이전 커밋과 비교 가능하게 함. - -```bash -kind: pipeline -name: check-updates - -clone: - setup: - image: woodpeckerci/plugin-git - settings: - depth: 2 - -steps: - - name: show-changes - image: alpine/git - commands: - - echo "새로운 업데이트가 감지되었습니다!" - - echo "수정된 파일 목록:" - - git diff --name-only HEAD^ HEAD - - echo "최근 커밋 메시지:" - - git log -1 --pretty=%B -``` - -## 6. 트러블슈팅 기록 - -- **Forge Not Configured:** GitHub OAuth 설정이 누락되어 서버가 실행 직후 종료됨 -> 환경 변수 추가로 해결. - -- **Agent Auth Error:** 서버 데이터베이스와 에이전트의 Secret Key가 꼬임 -> 서버 볼륨 삭제 후 재시작으로 초기화 성공. - -- **GCP 방화벽:** 8000번 포트가 막혀 접속 불가 -> VPC 네트워크 방화벽 규칙 추가로 해결. \ No newline at end of file diff --git a/01.Shelf/KUI/05. kui-veil weaver.md b/01.Shelf/KUI/05. kui-veil weaver.md deleted file mode 100644 index 5f5c41b..0000000 --- a/01.Shelf/KUI/05. kui-veil weaver.md +++ /dev/null @@ -1,2 +0,0 @@ -이 서비스의 핵심 기능을 해줄 weaver 서비스를 구현해야 함. -( 실제 blur 처리를 진행해줄 서비스 ) \ No newline at end of file