Skip to main content

목적 및 범위

이 문서는 go-stablenet 코드베이스에서 사용 가능한 개발 도구 전반에 대한 개요를 제공합니다.
여기서 다루는 도구들은 StableNet 노드 및 네트워크를 빌드, 테스트, 디버깅, 운영·유지보수하는 전 과정을 지원합니다.
개발 도구는 네 가지 주요 카테고리로 구성되며, 각 항목은 하위 문서에서 상세히 설명됩니다.
  • Building and CI/CD
    빌드 시스템, 크로스 컴파일, CI/CD 파이프라인에 대한 내용
  • devp2p CLI Tools
    DNS 기반 발견(discovery), P2P 네트워크 진단 및 테스트 도구
  • Data Import and Export Utilities
    블록체인 데이터(체인, 히스토리, 스냅샷) 관리 도구
  • Testing and Debugging
    테스트 프레임워크, 프로토콜 검증, 정적 분석 도구
이 문서는 개별 도구의 사용법보다는 도구 생태계의 전체 구조와 상호 관계를 이해하기 위한 상위 가이드 역할을 합니다.

도구 카테고리

개발 도구는 코드베이스 전반에 분산되어 있으며, 주요 진입점은 다음과 같습니다.

빌드 시스템 아키텍처

빌드 시스템의 중심은 build/ci.go이며, 이는 모든 빌드·테스트·릴리스 작업의 단일 제어 지점 역할을 합니다.

주요 컴포넌트

  • build/ci.go
    빌드·테스트·아카이브·업로드를 담당하는 메인 오케스트레이터
  • build.GoToolchain
    크로스 컴파일을 포함한 Go 컴파일러 설정 관리
  • build.Environment
    CI 또는 로컬 Git 환경에서 커밋, 날짜, 브랜치, 태그 메타데이터 수집
  • build.ChecksumDB
    build/checksums.txt를 기반으로 외부 종속성 무결성 검증
이 빌드 시스템은 -arch, -cc 플래그를 통해 다음을 지원합니다.
  • 아키텍처: amd64, 386, arm, arm64
  • 플랫폼: linux, darwin, windows, freebsd

CI/CD 파이프라인 아키텍처

지속적 통합(CI)은 플랫폼별 특성에 따라 분리되어 운영됩니다.
  • Travis CI: Linux / macOS
  • AppVeyor: Windows
이를 통해 동일한 코드베이스에 대해 멀티 플랫폼 릴리스 품질을 보장합니다.

파이프라인 단계

  1. 코드 푸시 트리거
    master 브랜치 또는 버전 태그 푸시 시 실행
  2. 병렬 빌드
    플랫폼 및 아키텍처별 병렬 작업 수행
  3. 테스트 실행
    모든 빌드에서 기본 테스트 실행, cron 작업에서 레이스 디텍션 수행
  4. 아티팩트 생성
    zip / tar.gz 형식의 서명된 바이너리 아카이브 생성

개발 도구 호출 흐름

다음은 일반적인 개발자가 로컬 및 CI 환경에서 도구를 사용하는 흐름입니다.

빠른 참조: 사용 가능한 도구

빌드 및 릴리스 도구

네트워크 및 발견 도구

체인 관리 도구

테스트 및 검증 도구

빌드 플래그 및 구성

크로스 컴파일 플래그

CI 환경 변수

CI 환경에서는 커밋 정보, 서명 키, 업로드 토큰 등이 환경 변수로 주입됩니다.
  • TRAVIS_COMMIT, APPVEYOR_REPO_COMMIT
  • AZURE_BLOBSTORE_TOKEN
  • LINUX_SIGNING_KEY, OSX_SIGNING_KEY
  • AWS_ACCESS_KEY_ID (DNS 관리용)

도구 종속성 및 버전

모든 외부 도구 종속성은 build/checksums.txt버전과 SHA256 체크섬이 고정되어 있습니다. 필요 시 build.ChecksumDB를 통해 자동 다운로드 및 검증이 수행됩니다.
개별 도구의 실제 사용법과 예제는 다음 하위 문서를 참고하세요.
  • Building and CI/CD
  • devp2p CLI Tools
  • Data Import and Export Utilities
  • Testing and Debugging