주요 개념
Codeflow에서 사용하는 핵심 리소스와 권한 체계를 설명합니다.
리포지토리
리포지토리(Repository)는 소스 코드와 설정 파일을 저장하고 관리하는 기본 단위입니다. 사용자는 리포지토리를 생성하여 프로젝트 단위로 코드를 관리할 수 있으며, 커밋을 통해 코드 변경 이력을 기록할 수 있습니다. 또한, 브랜치를 활용하여 기능 개발, 테스트, 배포 등 다양한 작업을 분리하여 관리할 수 있으며, 안정적인 코드 관리 환경을 제공합니다.
| 용어 | 설명 |
|---|---|
| 커밋(Commit) | 리포지토리에 반영한 코드 변경 사항의 기록입니다. 변경 내용, 작성자, 커밋 일시 등의 정보가 포함됩니다. |
| 브랜치(Branch) | 코드 변경을 독립적으로 작업하고 관리하기 위한 분기 단위입니다. 기존 브랜치의 최신 커밋 또는 특정 커밋을 기준으로 생성할 수 있습니다. |
| 기본 브랜치(Default branch) | 리포지토리의 기준이 되는 브랜치입니다. 콘솔에서 리포지토리를 생성할 때 기본값은 main이며, 워크플로우 파일은 기본 브랜치의 파일을 기준으로 적용됩니다. |
| 태그(Tag) | 특정 커밋을 기준으로 버전이나 배포 시점을 식별하기 위한 기준점입니다. 브랜치와 달리 작업 흐름을 분리하기보다 특정 커밋을 표시하는 용도로 사용합니다. |
리포지토리, 브랜치, 태그 생성 및 관리 방법은 리포지토리 생성 및 관리, 브랜치 생성 및 관리, 태그 생성 및 관리를 참고하세요.
풀 리퀘스트
풀 리퀘스트(Pull Request, PR)는 코드 변경 사항에 대한 검토와 병합을 위한 협업 기능입니다. 사용자는 특정 브랜치에서 작업한 내용을 풀 리퀘스트로 생성하여 팀원에게 공유하고, 리뷰 및 승인 과정을 거쳐 코드를 병합할 수 있습니다. 이를 통해 코드 품질을 유지하고, 협업 과정에서 발생할 수 있는 오류를 사전에 방지할 수 있습니다.
| 용어 | 설명 |
|---|---|
| 기준 브랜치 | 풀 리퀘스트의 변경 사항이 최종적으로 병합될 대상 브랜치입니다. |
| 작업 브랜치 | 병합하려는 변경 사항이 포함된 브랜치입니다. |
| 리뷰어 | 풀 리퀘스트의 변경 사항을 검토하고 승인, 반려 또는 리뷰 취소를 수행하는 사용자입니다. |
| 승인 규칙 | 풀 리퀘스트를 병합하기 위해 충족해야 하는 리뷰어 승인 조건으로 리포지토리에서 단일 승인 또는 전체 합의 규칙을 설정할 수 있습니다. |
| 상태 | 풀 리퀘스트의 진행 여부를 나타냅니다. OPEN, CLOSED 상태로 구분됩니다. |
| 승인 상태 | 리뷰어의 검토 결과를 나타냅니다. Pending, Approved, Merged, Canceled, Rejected 상태로 구분됩니다. |
풀 리퀘스트 생성, 검토, 병합 방법은 풀 리퀘스트 생성 및 관리를 참고하세요.
워크플로우
워크플로우(Workflow)는 빌드, 테스트 등 반복적인 작업을 자동으로 실행하기 위한 작업 정의 단위입니다. 코드 푸시와 같은 이벤트 또는 사용자의 수동 실행을 기준으로 워크플로우를 구성하여 작업을 실행할 수 있습니다. 또한, 실행 결과와 로그, 상태 정보를 통해 작업 이력을 확인할 수 있어 성공 여부를 판단하고 오류 발생 시 빠르게 대응할 수 있습니다. 이를 통해 개발 과정의 반복 작업을 줄이고 운영 가시성을 높일 수 있습니다.
| 용어 | 설명 |
|---|---|
| 워크플로우 파일 | 실행할 작업을 정의하는 YAML 파일입니다. 기본 브랜치의 .codeflow/workflows 경로에 .yml 또는 .yaml 형식으로 저장합니다. |
| 워크플로우 실행 이력 | 워크플로우 실행 결과와 로그를 확인하기 위한 기록입니다. 실행 결과는 Succeeded, Failed, Running, Queued, Canceled 상태로 구분됩니다. |
| 러너(Runner) | 워크플로우를 실제로 실행하는 실행 환경입니다. Codeflow는 Self-hosted runner(자체 호스팅 러너) 구성을 지원합니다. |
워크플로우 실행에 필요한 리포지토리 단위 설정은 콘솔의 액션 설정 탭에서 관리합니다.
| 설정 | 설명 |
|---|---|
| 리포지토리 토큰 | 러너를 리포지토리에 등록하기 위한 인증 키이며, 러너 등록 시 사용됩니다. |
| 리포지토리 변수 | 워크플로우에서 반복적으로 사용하는 값을 미리 정의하여 재사용하는 설정입니다. |
워크플로우 파일 실행, 로그 확인, 이력 관리는 워크플로우 관리에서, 러너 등록 및 리포지토리 변수 관리는 액션 설정에서 확인할 수 있습니다.
IAM 역할 관리
Codeflow는 IAM(Identity and Access Management)의 역할 기반 액세스 제어(Role-Based Access Control, RBAC)를 따릅니다. Codeflow 리소스는 프로젝트 하위에서 관리되며, 프로젝트 역할과 Codeflow 서비스 역할에 따라 접근 권한이 부여됩니다.
- 프로젝트 관리자와 프로젝트 멤버는 프로젝트 내 Codeflow 리소스를 생성, 조회, 수정, 삭제할 수 있습니다.
- 프로젝트 리더는 프로젝트 내 Codeflow 리소스를 조회할 수 있습니다.
- Codeflow 리소스에 대한 권한만 별도로 부여하려면 Codeflow 매니저 또는 Codeflow 뷰어 서비스 역할을 사용할 수 있습니다. Codeflow 매니저는 모든 Codeflow 리소스를 생성, 조회, 수정, 삭제할 수 있으며, Codeflow 뷰어는 모든 Codeflow 리소스를 조회할 수 있습니다.
- Codeflow 매니저 역할만 부여받은 경우, 풀 리퀘스트를 생성할 수는 있지만 리뷰어 지정 시 사용자 목록을 조회할 수 없습니다. 사용자 목록 조회를 위해서는 프로젝트 리더 이상 또는 IAM 프로젝트 관리자 권한이 추가로 필요합니다.
프로젝트 역할의 권한 범위는 프로젝트 역할에서, Codeflow 서비스 역할의 권한 범위는 서비스 역할에서 확인할 수 있습니다. 사용자 또는 그룹에 역할을 할당하는 방법은 역할 할당 및 변경을 참고하세요.
| 권한 | 프로젝트 관리자 (Admin) | 프로젝트 멤버 (Member) | 프로젝트 리더 (Reader) | Codeflow 매니저 (Manager) | Codeflow 뷰어 (Viewer) |
|---|---|---|---|---|---|
| 프로젝트 멤버 관리 | ✓ | ||||
| 리포지토리 생성 | ✓ | ✓ | ✓ | ||
| 리포지토리 삭제 | ✓ | ✓ | ✓ | ||
| 리포지토리 설정 | ✓ | ✓ | ✓ | ||
| 리포지토리 조회 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 풀 리퀘스트 생성 | ✓ | ✓ | ✓ | ||
| 풀 리퀘스트 조회 | ✓ | ✓ | ✓ | ✓ | ✓ |