재현 가능한 빌드(Reproducible Build)는 같은 소스 코드, 빌드 환경, 절차를 사용했을 때 다른 사람도 지정된 결과물을 비트 단위까지 동일하게 만들 수 있는 빌드다. 화면이 비슷하게 보이는지만 비교하지 않으며, 어떤 결과물을 비교 대상으로 삼는지도 명시한다. 보통 암호학적 체크섬으로 일치 여부를 확인한다. (Reproducible Builds의 정의)
-
소스 코드의 판 번호만 같아서는 충분하지 않다. 사용하는 도구와 의존성의 버전, 설정, 환경 변수 가운데 결과에 영향을 주는 조건도 알아야 한다.
-
예를 들어 생성형 웹 작업을 정적 파일로 배포한다면 소스와 입력 자료뿐 아니라 난수 시드, 도구 버전, 파일을 읽는 순서도 검토 대상이 될 수 있다. 시드를 고정하는 한 가지 조치만으로 전체 빌드의 재현성이 보장되지는 않는다.
-
버전 관리는 어떤 소스를 썼는지 찾게 하고, 백업은 보관한 결과를 되찾게 한다. 재현 가능한 빌드는 그 소스로 결과물을 다시 만들 수 있는지 확인한다.
-
빌드 결과가 일치해도 프로그램이 의도대로 작동한다는 검증은 별도로 필요하다. 결과물의 동일성과 기능의 정확성은 확인하는 대상이 다르다.