Agent Skills: rollback-service

서비스를 이전 버전으로 롤백. Use when (1) 롤백 요청, (2) 이전 버전 복원, (3) /SEMO:rollback 커맨드.

UncategorizedID: semicolon-devteam/semo/rollback-service

Install this agent skill to your local

pnpm dlx add-skill https://github.com/semicolon-devteam/semo/tree/HEAD/semo-system/semo-skills/rollback-service

Skill Files

Browse the full folder contents for rollback-service.

Download Skill

Loading file tree…

semo-system/semo-skills/rollback-service/SKILL.md

Skill Metadata

Name
rollback-service
Description
서비스를 이전 버전으로 롤백. Use when (1) 롤백 요청, (2) 이전 버전 복원, (3) /SEMO:rollback 커맨드.

🔔 시스템 메시지: 이 Skill이 호출되면 [SEMO] Skill: rollback-service 호출 - {환경}/{서비스}/{태그} 시스템 메시지를 첫 줄에 출력하세요.

rollback-service

서비스 롤백 Skill

개요

서비스를 이전 버전으로 롤백합니다.

트리거

  • "롤백해줘"
  • "이전 버전으로 되돌려"
  • /SEMO:rollback

입력 파라미터

| 파라미터 | 필수 | 설명 | 예시 | |----------|------|------|------| | environment | ✅ | 환경 | dev, stg | | service | ✅ | 롤백할 서비스 | cm-land | | target_tag | ❌ | 롤백 대상 태그 | v1.2.2, stg-abc1234-20240115 |

실행 절차

1. 현재 태그 확인

# 환경 파일에서 현재 태그 확인
grep "{SERVICE}_TAG" .env.{env}

2. 이전 태그 조회

# Docker Hub에서 이미지 태그 목록
docker images semicolonmanager/{service} --format "{{.Tag}}"

3. 환경변수 수정

# 태그 변경
sed -i 's/{SERVICE}_TAG=.*/{SERVICE}_TAG={target_tag}/' .env.{env}

4. 서비스 재시작

docker-compose --env-file .env.{env} pull {service}
docker-compose --env-file .env.{env} up -d --no-deps {service}

5. 상태 확인

docker-compose --env-file .env.{env} ps {service}
curl -f http://localhost:{port}/health

출력

성공

[SEMO] rollback-service: 롤백 완료 ✅

**롤백 결과**

환경: `{environment}`
서비스: `{service}`

| 항목 | 값 |
|------|-----|
| 이전 태그 | `{old_tag}` |
| 롤백 태그 | `{target_tag}` |
| 상태 | running |
| 헬스 | healthy |

롤백 시간: {timestamp}

실패

[SEMO] rollback-service: 롤백 실패 ❌

**롤백 결과**

환경: `{environment}`
서비스: `{service}`

### 오류

{error_message}


### 수동 복구
1. 이미지 확인: `docker images semicolonmanager/{service}`
2. 수동 태그 변경
3. 서비스 재시작

롤백 전략

이미지 태그 롤백

# 1. 태그 변경
sed -i 's/CM_LAND_TAG=.*/CM_LAND_TAG=v1.2.2/' .env.stg

# 2. Pull & Restart
docker-compose --env-file .env.stg pull cm-land
docker-compose --env-file .env.stg up -d --no-deps cm-land

Git 기반 롤백

# 1. 이전 커밋의 환경 파일
git checkout HEAD~1 -- .env.stg

# 2. 전체 재배포
docker-compose --env-file .env.stg pull
docker-compose --env-file .env.stg up -d

전체 스택 롤백

# 1. 이전 커밋 체크아웃
git checkout HEAD~1

# 2. 전체 재배포
docker-compose --env-file .env.stg pull
docker-compose --env-file .env.stg up -d

이전 태그 찾기

Docker Hub에서 조회

# 로컬 이미지 태그 목록
docker images semicolonmanager/{service} --format "{{.Tag}}" | head -10

# 또는 Git 로그에서 태그 변경 이력
git log --oneline -p -- .env.stg | grep "_TAG=" | head -10

추천 이전 태그

최근 성공적으로 배포된 태그 기준:

  1. 현재 -1 버전
  2. 가장 최근 v*.*.* 태그
  3. Git 이력 기반 이전 태그

참조