Flutter (Dart) SDK
deplite 패키지는 Flutter 앱, Dart 서버, Dart CLI에서 Deplite를 호출하거나, 내 앱을 Deplite의 작업 노드로 만드는 공식 SDK예요.
설치
# pubspec.yaml
dependencies:
deplite: ^0.1.0dart pub get # 또는 flutter pub getDart 3.0+ 환경에서만 사용 가능해요.
모든 API는 Future 또는 Stream을 반환하므로 await로 호출해주세요.
어떤 모드로 시작할까
| 모드 | 언제 쓰나 | 시작 |
|---|---|---|
| External | 내 앱·서버·CI가 Deplite를 호출 | API 토큰 발급 → Deplite(apiToken: ...) |
| Embedded | 내 앱·기기가 Deplite의 작업 노드 | 1회용 설치 코드 → Deplite.enroll(...) |
두 모드의 자세한 비교는 인증 모드를 참고해주세요.
External — Deplite 호출하기
import 'dart:io';
import 'package:deplite/deplite.dart';
final deplite = Deplite(apiToken: const String.fromEnvironment('DEPLITE_API_TOKEN'));
final job = await deplite.triggers.run(
triggerId: triggerId,
params: {'ref': 'main'},
);
final uploaded = await deplite.files.upload(
file: File('/tmp/app.apk'),
);토큰은 발급 직후 1회만 노출되므로 별도의 저장 처리가 필요해요.
Embedded — 내 앱이 작업 노드 되기
대시보드에서 1회용 설치 코드를 발급한 뒤, 첫 실행에서 enroll → 결과를 안전 저장소에 보관 → 이후 실행에서는 그 자격으로 Agent 부팅이에요.
// 1) 1회만 — enroll 후 결과를 영구 저장
final enrollment = await Deplite.enroll(
installCode: installCode,
name: 'kiosk-seoul-01',
);
await secureStore.save(enrollment); // identity + privateKey
// 2) 매 실행마다 — 저장된 자격으로 부팅
final stored = await secureStore.load();
final agent = DepliteAgent(
identity: stored.identity,
privateKey: stored.privateKey,
);
await for (final ev in agent.events()) {
if (ev is DeployEvent) {
await runJob(ev.payload);
await agent.jobs.reportResult(jobId: ev.payload.jobId, result: JobResult.success());
}
}enroll()이 반환하는 privateKey(raw 32바이트)는 SDK가 저장하지 않으므로 암호화 후 저장하는 것을 추천드려요.
분실하면 재등록만이 답이에요.
관련 문서
최종 수정 일자: