CI 빌드에서 여러 리포지토리 사용

3816 단어 programming
Djinn CI 빌드 매니페스트의 sources 매개변수를 통해 빌드에서 간단하게 여러 리포지토리로 작업할 수 있습니다. 이렇게 하면 빌드 환경에 복제할 여러 Git 리포지토리를 지정할 수 있습니다. 각 소스는 git clone를 통해 복제할 수 있는 URL입니다. 대부분의 CI 플랫폼에서 빌드의 매니페스트는 일반적으로 소스 코드 리포지토리 자체에 연결됩니다. Djinn CI를 사용하면 소스 코드 리포지토리에 빌드 매니페스트가 있을 수 있지만 CI 서버 자체는 실제로 해당 리포지토리를 이해하지 못합니다. 대신 지정된 매니페스트의 소스를 확인하고 각 소스를 빌드 환경에 복제합니다.

매니페스트에서 여러 소스 정의



previous 게시물과 마찬가지로 빌드 매니페스트에서 여러 소스를 사용하는 예로 djinn-ci/imgsrv을 사용하겠습니다. 매니페스트 파일의 상단을 보면 빌드하는 데 세 개의 리포지토리가 필요하다는 것을 알 수 있습니다. 이들은 djinn-ci/imgsrv 자체의 소스 코드, golang/toolsvalyala/quicktemplate 이며, 이렇게 정의됩니다.

sources:
- https://github.com/djinn-ci/imgsrv.git
- https://github.com/golang/tools
- https://github.com/valyala/quicktemplate

매니페스트를 실행하는 동안 위의 모든 소스 리포지토리가 복제됩니다. 빌드 서버를 실행하기 위해 사용자 인터페이스를 통해 이를 제출하는 경우 이들 각각은 고유한 clone.n 작업이 연결됩니다. 여기서 n1에서 위로 세는 숫자입니다.

SSH 키 및 개인 저장소



앞서 언급했듯이 sources 매개변수에 지정된 URL은 빌드 환경에서 복제하기 위해 git clone에 제공됩니다. 즉, 소스 URL을 지정할 때 SSH 형식을 사용할 수 있습니다.

[email protected]:org/private-repo

이것은 개인 저장소에서 복제하려는 경우에 바람직합니다. 그러나 이렇게 하려면 환경에 복제할 때 일종의 배포 키로 사용할 SSH key을 생성해야 합니다.
github.com 에서 복제할 때 위의 예를 살펴보겠습니다. 해당 리포지토리에 대한 deploy key을 생성하고 Djinn CI에 업로드합니다. 그렇게 하면 해당 키와 연결할 일부 사용자 지정 SSH 구성을 지정할 수 있습니다. 이는 빌드에서 복제될 때 키를 사용할 수 있게 해 줍니다.

Host github.com
    User git
    IdentityFile /root/.ssh/id_deploy_private_repo

구성과 함께 키가 있으면 빌드에서 리포지토리org/private-repo를 사용할 수 있습니다. 그러나 여기에서 문제가 발생할 수 있습니다. 다른 개인 리포지토리에서 복제하려는 경우 동일한 배포 키를 거기에 추가할 수 있지만 보안 영향이 우려되는 경우 바람직하지 않을 수 있습니다. 따라서 대신 해당 리포지토리에 대해 다른 키를 생성합니다. 각 리포지토리에 대해 하나씩 두 개의 배포 키가 있는 경우 각 키를 각 리포지토리와 어떻게 연결하시겠습니까?라는 질문이 제기됩니다.

이는 .ssh_config 파일 형식과 Host 일치를 사용하여 수행할 수 있습니다. 두 개인 리포지토리가 private-repoacme-repo 이고 둘 다 orggithub.com 아래에 있다고 가정합니다. 그리고 각각 id_deploy_private_repoid_deploy_acme_repo 라는 배포 키가 있습니다. 그런 다음 각 키에 다음 SSH 구성을 제공할 수 있습니다.

Host private-repo.github.com
    User git
    IdentityFile /root/.ssh/id_deploy_private_repo

Host acme-repo.github.com
    User git
    IdentityFile /root/.ssh/id_deploy_acme_repo

그런 다음 빌드 매니페스트에서 다음 소스를 제공할 수 있습니다.

sources:
- [email protected]:org/private-repo
- [email protected]:org/acme-repo

그것은 약간의 해키 해결 방법이지만 다른 개인 리포지토리에 대해 다른 배포 키를 사용하려는 경우 작동합니다.

추가 정보



Djinn CI에 대해 자세히 알아보려면 플랫폼 기능에 대한 개요를 제공하는 about page을 방문하고 user documentation도 확인하십시오.

좋은 웹페이지 즐겨찾기