정확히 무엇입니까? Continuous Delivery 영역에서 왜 중요한가?
맥락 : 나는 정말 재현 가능한 빌드는 여전히 연구 중 기술이며 만들기가 매우 어렵다는 (reddit)의 의견 중 하나에서 보았습니다.
그래서 왜 그렇게 만들기가 어려운지 알고 싶었습니다.
make possible
:) qn도 편집합니다!
정확히 무엇입니까? Continuous Delivery 영역에서 왜 중요한가?
맥락 : 나는 정말 재현 가능한 빌드는 여전히 연구 중 기술이며 만들기가 매우 어렵다는 (reddit)의 의견 중 하나에서 보았습니다.
그래서 왜 그렇게 만들기가 어려운지 알고 싶었습니다.
make possible
:) qn도 편집합니다!
답변:
다음은 reproducible-builds.org 의 인용문입니다 .
재현 가능한 빌드는 사람이 읽을 수있는 소스 코드에서 컴퓨터가 사용하는 이진 코드에 이르기까지 검증 가능한 경로를 만드는 소프트웨어 개발 사례입니다.
IMO의 중요성을 설명하는 가장 쉬운 방법은 IMO를 백업 절차의 변형으로 간주하는 것입니다.
예로서:
일부 소프트웨어 공급 업체로부터 라이센스가 부여 된 일부 소프트웨어 패키지를 사용하는 사업체를 가정합니다. 비즈니스는 실행 파일을 얻는 데 사용되는 소스 등이 아닌 실행 파일 만 가져옵니다.
모든 것이 잘 진행되지만 소프트웨어 공급 업체에 문제가있는 경우가 있습니다 (예 : 파산 등).
이로 인해 장기적으로 비즈니스에 위험이 노출 될 수 있습니다. 즉, 비즈니스가 실행 파일을 사용할 때 사용 된 소프트웨어 공급 업체 (이전의 시대)와 관련된 모든 필수 소스, 문서, 빌드 절차 등에 액세스 할 수있는 절차 / 계약이없는 경우 비즈니스)가 생성되어 비즈니스로 배송되었습니다.
" 소프트웨어 에스크로 "가 구출되었습니다. 그러한 합의가 이루어지면 제 3자를 통해 기업이 여전히 " 사용 된 모든 것 "을 재현 할 수 있다고 생각할 것입니다. 그 이후부터는 비즈니스에서 해당 소프트웨어를 계속 사용할 수있는 기회가있을 수 있으며 적절한 경우 자체적으로 비즈니스를 운영하기 시작합니다.
그러나 이전 글 머리 기호에서 " 사용 된 내용 "은이 작업을 수행하는 데 가장 어려운 부분입니다. 타사가 적절한 사전 검증을 수행해야합니다. 링크 날짜를 제외하고 소프트웨어 공급 업체가 소프트웨어 에이전트에 제공하는 내용과 완벽하게 일치한다는 것을 증명할 수있는 실행 파일을 다시 만들려면 시간이 걸립니다.
위의 샘플이 여전히 명확하지 않은 경우, 귀하가 내 소프트웨어 에스크로 에이전트라고 상상해보십시오. 고객이 라이센스 한 소프트웨어의 사본을 재생성하기 위해 입력으로 필요한 것을 알려주십시오. 알 겠어요? 내 컴파일러, 내 OS, 컴파일 / 링크 옵션, 재사용 가능한 구성 요소 (포함) 버전, 라이브러리 등의 버전을 확인하는 것을 잊지 않았습니까?
실제로 반복 가능한 빌드를 작성하려는 실제 사례를 제공하려면 다음을 고려하십시오.
사용자가 히스토리를 다시 쓰거나 병합되지 않은 분기를 삭제할 수없는 git 저장소로 시작하는 빌드 파이프 라인입니다.
소스 코드를 체크 아웃 한 후 첫 번째 "빌드"단계는 모든 빌드 시간 의존성을 포함하는 컨테이너를 가동시키는 것입니다.
실행중인 빌드 시간 컨테이너의 출력은 컴파일 된 바이너리를 포함하는 컨테이너입니다.
빌드의 반복성에 더 중요한 다음 컨테이너가 최종 컨테이너에 추가됩니다.
이 메타 데이터를 모두 추가함으로써 미래에 언제든지 빌드 컨테이너를 통해 정확한 빌드 종속성 세트를 꺼내고 빌드 컨테이너에서 정확하게 알려진 단계 세트로 바이너리를 컴파일 할 수 있습니다. ) 및 모든 런타임 의존성 (기본 이미지 태그 사용)이있는 다른 알려진 기본 이미지로 패키지하십시오. 이는 모두 컨테이너의 태그를 기반으로 한 정확한 소스 코드 버전을 기반으로 할 수 있습니다.
이론적으로 이것은 빌드 버전을 정확하게 재현 할 수있는 능력을 제공해야합니다.
이것의 중요성은 우리가 프로덕션 환경에서 실행중인 것을 볼 수있게하고 모든 것이 버전이 크게 발전하더라도 다시 돌아가서 원래 사용 된 코드 버전, 기본 이미지 및 빌드 컨테이너를 가져 와서 예를 들어 이전과 정확히 다시 빌드하기 전에 해당 버전에 핫픽스를 적용하여 핫픽스가 유일한 델타와 정확히 동일한 아티팩트임을 알 수 있습니다.