<div align="center">
<br>
<img src="https://raw.githubusercontent.com/hcavarsan/pipedash/HEAD/app-icon.png" width="102px" alt="Pipedash Logo" />
<h1>Pipedash</h1>
<p>여러 프로바이더(셀프 호스팅, 데스크톱 및 모바일)에서 CI/CD 파이프라인을 관리하세요</p>
<a href="https://apps.apple.com/br/app/pipedash-ci-cd-monitoring/id6757285870?l=en-GB">
<img src="https://developer.apple.com/app-store/marketing/guidelines/images/badge-download-on-the-app-store.svg" alt="App Store에서 다운로드" height="40">
</a>
</div>
<p align="center">
<div align="center">
<img src="https://raw.githubusercontent.com/hcavarsan/pipedash/HEAD/public/pipedashbg.png" alt="Pipedash 스크린샷" style="box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); border-radius: 8px;"/>
</div>
</p>
개요 (About)
Pipedash를 사용하면 모든 CI/CD 파이프라인을 한 곳에서 볼 수 있습니다. GitHub Actions, GitLab CI, Buildkite, Jenkins, Tekton 대시보드 사이를 이동할 필요 없이, 모든 것을 단일 뷰에서 확인할 수 있습니다.
Tauri, Rust, React, TypeScript로 구축되었습니다.
이유 (Why)
대부분의 팀은 여러 개의 CI/CD 플랫폼을 사용하게 됩니다. 오픈 소스 프로젝트는 GitHub Actions에서 실행되고, 내부 서비스는 GitLab CI나 Buildkite를 사용하며, Kubernetes 워크로드는 Tekton을 사용하고, 레거시 작업을 처리하는 Jenkins 서버가 항상 있습니다. 모든 것을 확인하려면 수많은 탭을 열고 새로고침해야 합니다.
Pipedash는 이러한 모든 프로바이더로부터 파이프라인 데이터를 가져와 한 곳에 모아 보여줍니다.
지원되는 프로바이더 (Supported providers)
- GitHub Actions
- GitLab CI
- Bitbucket Pipelines
- Buildkite
- Jenkins
- Tekton CD
- ArgoCD
플러그인 시스템을 통해 쉽게 기능을 추가할 수 있습니다.
기능 (What it does)
Pipedash는 프로바이더를 주기적으로 확인(poll)하여 리포지토리 및 워크플로우별로 정리된 파이프라인을 보여줍니다. 백그라운드에서 새로고침되며(프로바이더별 간격 설정 가능), 파이프라인 상태가 변경되면 즉시 확인할 수 있습니다.
할 수 있는 작업:
- 모든 제공업체(provider)의 파이프라인 상태 확인
- 커밋 정보 및 실행 시간을 포함하여 실행 기록 탐색
- 매개변수와 함께 워크플로우 트리거 (Pipedash는 각 제공업체에서 이를 로드함)
- 동일한 매개변수로 이전 실행 재실행
- 실행 중인 빌드 취소
- 동일한 제공업체의 여러 인스턴스 추가 (예: 두 개의 GitHub org)
워크플로우를 트리거하거나 재실행할 때, Pipedash는 플러그인에서 사용 가능한 매개변수(GitHub Actions의 워크플로우 입력, GitLab CI의 파이프라인 변수, Jenkins/Buildkite의 빌드 매개변수)를 가져와 양식에 표시합니다.
개인 정보 보호 및 보안
모든 것은 사용자의 기기에서 로컬로 실행됩니다. Pipedash는 CI/CD 제공업체에만 연결하며, 분석(analytics), 원격 측정(telemetry) 또는 타사 서비스는 사용하지 않습니다.
토큰 저장 옵션:
- 시스템 키링 (데스크톱) – 운영 체제가 토큰을 암호화합니다 (macOS Keychain, Windows Credential Manager, Linux Secret Service). 데스크톱의 기본값입니다.
- 암호화된 SQLite – Pipedash는 Argon2id에서 파생된 키를 사용하여 AES-256-GCM으로 토큰을 암호화합니다. 모든 플랫폼에서 작동합니다.
- 암호화된 PostgreSQL – 동일한 AES-256-GCM 암호화를 사용하며, PostgreSQL에 저장됩니다. PostgreSQL 백엔드와 함께 사용하십시오.
데스크톱과 웹 모두에서 SQLite 또는 PostgreSQL에 파이프라인 데이터를 저장할 수 있습니다. 설정 마법사를 통해 언제든지 백엔드를 전환할 수 있습니다.
API 인증 (웹 배포)
PIPEDASH_VAULT_PASSWORD가 설정되면, Pipedash는 API 요청에 대한 인증을 요구합니다. 볼트 비밀번호는 제공업체 토큰 암호화와 API 접근 보안이라는 두 가지 목적을 수행합니다. 모든 요청에는 Authorization: Bearer <vault_password> 헤더가 포함되어야 합니다. 환경 변수가 설정되지 않은 경우, API는 열려 있습니다 (로컬 사용 또는 VPN 뒤에 적합합니다).
배포 옵션
Pipedash를 세 가지 방식으로 실행할 수 있습니다:
데스크톱 앱 (Tauri)
Pipedash를 사용하는 주요 방법입니다. macOS, Windows 및 Linux용 네이티브 데스크톱 앱입니다. 기본적으로 토큰은 시스템 키링에 저장됩니다. 암호화된 SQLite 또는 PostgreSQL을 사용할 수도 있습니다.
GitHub releases 페이지(releases page)에서 다운로드하세요.
Docker 배포 (Docker deployment)
examples/ 디렉토리에는 사용 가능한 샘플 설정이 포함된 준비된 환경(setups)이 있습니다. compose 파일을 수정하여 토큰을 추가한 다음, 다음 명령어를 실행합니다:
mise run examples:sqlite:up
mise run examples:sqlite:down
...
API 서버는 프런트엔드를 직접 제공합니다(바이너리에 내장되어 있습니다). Pipedash는 AES-256-GCM을 사용하여 토큰을 암호화합니다. 데이터는 Docker 볼륨에 영구적으로 저장됩니다. 자세한 내용은 Docker 설정을 참조하세요.
설치 (Installation)
데스크톱 (Desktop): releases page에서 사용 중인 플랫폼의 최신 릴리스를 다운로드하세요. macOS, Windows, Linux에서 작동합니다.
iOS: App Store에서 다운로드하세요.
설정 (Setup)
앱을 실행하고 사이드바를 통해 프로바이더(provider)를 추가합니다. 각 프로바이더는 API 토큰이 필요합니다:
GitHub Actions: repo 및 workflow 스코프가 포함된 개인 액세스 토큰(Personal Access Token).
GitHub Enterprise의 경우 사용자 지정 기본 URL을 설정할 수 있습니다.
GitLab CI: api 스코프가 포함된 개인 액세스 토큰. GitLab.com과 자체 호스팅 환경에서 작동합니다.
Buildkite: 읽기 권한이 있는 API 액세스 토큰(API Access Token) 및 조직 슬러그(org slug).
Jenkins: API 토큰, 사용자 이름, 서버 URL.
Tekton CD: Kubernetes 설정 파일 경로와 컨텍스트. Pipedash는 Tekton 파이프라인을 사용하여 네임스페이스를 자동으로 감지합니다(auto-detects).
ArgoCD: 서버 URL 및 인증 토큰(auth token). Git 조직별로 필터링할 수 있습니다. Pipedash는 동기화 상태, 상태(health), 배포 이력을 모니터링합니다.
Bitbucket Pipelines: repository 및 pipeline 읽기 권한이 있는 앱 비밀번호(App password). Bitbucket Cloud와 자체 호스팅 환경에서 작동합니다.
프로바이더를 추가하면 Pipedash가 자격 증명(credentials)을 검증하고 사용 가능한 리포지토리(repos)를 가져옵니다. 모니터링할 항목을 선택하고 저장하세요. 파이프라인은 메인 뷰에 표시되며 자동으로 새로고침됩니다.
초기 설정 (Initial setup)
최초 실행 시(또는 설정을 통해), 설정 마법사(setup wizard)가 구성 과정을 안내합니다. 데스크톱과 웹 모두에서 작동합니다.
스토리지 백엔드
- SQLite (기본값) – 로컬 파일 기반 스토리지.
- PostgreSQL – 팀 배포를 위한 중앙 집중식 데이터베이스.
토큰 저장소
- 시스템 키링(System keyring) (데스크톱 전용) – 운영체제가 암호화를 처리합니다. 비밀번호가 필요하지 않습니다.
- 암호화된 SQLite – Pipedash는 AES-256-GCM + Argon2id 키 파생을 사용하여 암호화합니다.
- 암호화된 PostgreSQL – 동일한 암호화 방식을 사용하며, PostgreSQL에 저장됩니다 (PostgreSQL 백엔드 필요).
데이터 마이그레이션
스토리지 백엔드는 언제든지 전환할 수 있습니다. 위자드(wizard)는 기존 데이터(프로바이더, 자격 증명, 파이프라인 기록)를 마이그레이션하거나 새로 시작할지 여부를 제공합니다.
작동 방식
아키텍처
애플리케이션은 세 개의 크레이트(crates)로 분할되어 있습니다:
pipedash-desktop – 시스템 키링 통합 기능을 갖춘 Tauri 데스크톱 앱
pipedash-core – 모든 비즈니스 로직을 포함하는 핵심 라이브러리 (프레임워크 독립적)
pipedash-web – 헤드리스 배포를 위한 REST API 서버
이를 통해 동일한 핵심 코드를 다양한 환경(데스크톱 앱, API 서버 또는 다른 앱에 임베딩)에서 실행할 수 있습니다.
스토리지
Pipedash는 프로바이더 설정과 파이프라인 데이터를 SQLite (기본값) 또는 PostgreSQL에 저장합니다. 둘 다 데스크톱과 웹에서 작동합니다.
토큰 저장소 옵션:
- 시스템 키링 (데스크톱) – macOS Keychain, Windows Credential Manager, Linux Secret Service
- 암호화된 SQLite – Argon2id 키 파생을 사용한 AES-256-GCM 암호화
- 암호화된 PostgreSQL –
encrypted_tokens 테이블에 저장되는 AES-256-GCM 암호화
암호화된 스토리지를 위해 Pipedash는 첫 실행 시 자동으로 비밀번호를 생성합니다. 재현 가능한 배포가 필요한 경우 PIPEDASH_VAULT_PASSWORD를 설정하세요.
각 프로바이더는 자체 새로 고침 간격(기본값: 30초)을 가집니다. API 속도 제한에 따라 조정하십시오.
플러그인 시스템
각 CI/CD 프로바이더는 공통 인터페이스를 가진 플러그인입니다. 핵심 앱은 GitHub Actions, GitLab CI, Bitbucket Pipelines, Buildkite, Jenkins, Tekton 또는 ArgoCD의 구체적인 세부 사항을 알지 못합니다. 단지 fetch_pipelines()나 trigger_pipeline()과 같은 메서드를 호출하고 플러그인이 세부 사항을 처리할 뿐입니다.
우리는 빌드 시점에 플러그인을 앱에 컴파일합니다(런타임에 동적으로 로드되지 않음). 이렇게 하면 구조가 더 간단해지고 런타임 플러그인 로딩과 관련된 보안 문제를 피할 수 있습니다.
앱을 시작하면 Pipedash는 즉시 SQLite에서 캐시된 파이프라인 데이터를 불러옵니다. 백그라운드에서는 새로고침 루프(refresh loop)가 각 제공업체의 API를 폴링하고 변경 사항을 감지하면 캐시를 업데이트합니다. 프론트엔드는 이벤트를 수신하고 새 데이터가 도착할 때 다시 렌더링됩니다.
제공업체 추가하기 (Adding providers)
새로운 CI/CD 플랫폼을 추가하고 싶으신가요? crates/pipedash-plugin-{name}/에 크레이트(crate)를 생성하고 pipedash-plugin-api의 Plugin 트레이트를 구현하세요. 이 트레이트는 파이프라인 가져오기, 자격 증명 검증, 빌드 트리거, 실행 기록 가져오기 등의 메서드를 정의합니다.
각 플러그인은 다음 구조를 따릅니다:
schema.rs - 제공업체용 테이블 및 컬럼 정의
metadata.rs - 플러그인 메타데이터, 설정 스키마, 기능(capabilities)
plugin.rs - 주요 플러그인 트레이트 구현
client.rs - 제공업체 API 클라이언트
mapper.rs - 제공업체 API와 도메인 모델 간의 데이터 변환
types.rs - 제공업체별 타입
config.rs - 설정 파싱 유틸리티
플러그인을 구현한 후, 메인 앱의 플러그인 레지스트리(plugin registry)에 등록하고 프론트엔드에 제공업체별 UI를 추가합니다.
기존 플러그인들(GitHub Actions, GitLab CI, Bitbucket Pipelines, Buildkite, Jenkins, Tekton CD, ArgoCD)을 참고 구현 사례로 확인해 보세요.
개발 (Development)
저희는 개발 환경 및 작업 관리를 위해 mise를 사용합니다.
curl https://mise.run | sh
git clone https://github.com/hcavarsan/pipedash.git
...
개발 워크플로우 (Development workflow)
초기 설정 (최초 1회만):
사용 가능한 명령어:
mise run dev
mise run dev:front
...
Docker 설정
Docker Compose를 통해 웹 앱으로 Pipedash 실행하기:
docker-compose up -d
docker-compose logs -f
docker-compose down
...
브라우저에서 http://localhost:8080을 엽니다.
API 서버는 프론트엔드를 직접 제공합니다 (바이너리에 내장되어 있습니다). 단일 컨테이너가 둘 다 실행합니다.
토큰 저장: 웹 UI를 통해 공급자(providers)를 추가합니다. Pipedash는 AES-256-GCM을 사용하여 토큰을 암호화하고 데이터베이스에 저장합니다. 암호화 키는 첫 실행 시 자동 생성되며 Docker 볼륨에 유지됩니다.
사용자 지정 포트: 환경 변수 또는 .env 파일에서 PIPEDASH_PORT를 설정합니다:
PIPEDASH_PORT=3000 docker-compose up -d
설정 (Config)
환경 변수 (Environment variables)
| 변수 | 기본값 | 설명 |
|---|
PIPEDASH_DATA_DIR | 플랫폼 기본값 | Pipedash가 데이터 파일을 저장하는 위치 |
| ... | | |
| 설정 파일 (Configuration file) | | |
TOML을 통해 Pipedash를 구성할 수도 있습니다. PIPEDASH_CONFIG_PATH를 설정하여 위치를 지정하거나, Pipedash가 플랫폼별 경로에서 자동으로 검색합니다.
[general]
metrics_enabled = true
default_refresh_interval = 30
...
설정 값에 환경 변수를 참조하려면 ${VAR} 구문을 사용하세요.
Cargo 기능 (Cargo features)
| 기능 | 역할 |
|---|
postgres | PostgreSQL 백엔드 지원 추가 (기본 활성화) |
| ... | |
로드맵 (Roadmap)
핵심 기능 (Core features)
CI/CD 프로바이더 (CI/CD providers)
플랫폼 (Platforms)