Revert "에임에서의 기록 백업"

This reverts commit 4bafee36ee.
This commit is contained in:
2026-04-09 09:54:39 +09:00
parent fcfad44d51
commit 6a9544e8d7
5 changed files with 253 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
- **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 서버를 구성해보자
@@ -0,0 +1,58 @@
확보중인 개인용 서버가 없기 때문에 서버부터 확보해야 함.
> [!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 가입을 시도해 보시겠어요?** 가입 후 서버 생성 화면까지 가시면 다음 가이드를 드릴게요.
+60
View File
@@ -0,0 +1,60 @@
를 시도했지만 실패함.
아마 우분투 최신버전 (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 안탈거같다
+117
View File
@@ -0,0 +1,117 @@
## 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 네트워크 방화벽 규칙 추가로 해결.
+2
View File
@@ -0,0 +1,2 @@
이 서비스의 핵심 기능을 해줄 weaver 서비스를 구현해야 함.
( 실제 blur 처리를 진행해줄 서비스 )