IT

동일한 Jenkins 작업 공간에 여러 새 저장소를 체크 아웃하십시오.

lottoking 2020. 7. 22. 07:45
반응형

동일한 Jenkins 작업 공간에 여러 새 저장소를 체크 아웃하십시오.


Jenkins 1.501 및 Jenkins Git 1.1.26 사용

여러 프로젝트가있는 3 가지 git repos가 있습니다.

이제 3 git repos의 모든 프로젝트를 Jenkins 슬레이브의 동일한 작업 공간으로 선택해야합니다. 각 git repo를 다음에서 정의했습니다 : 소스 코드 관리 : 다중 SCM . 하지만 리포지토리를 체크 아웃 할 때마다 이전 리포지토리 및 관련 프로젝트가 삭제됩니다.

나는 읽었다.

http://jenkins.361315.n4.nabble.com/multiple-git-repos-in-one-job-td4633300.html

실제로 도움이되지 않습니다. 모든 repos의 repo (선택 사항)에 대해 로컬 하위 디렉토리 에서 동일한 폴더를 지정하려고 시도한 결과를 제공합니다.

Jenkins를 사용하여 불가능한 경우 프로젝트를 올바른 위치로 제도하는 데 사전 빌드 단계 / 스크립팅을 사용할 수 있습니다. 프로젝트의 빌드 구성을 수정하는 옵션이 아닙니다.


Jenkins + Git Plugin을 사용하면 단일 작업 공간에서 한 번에 여러 리포를 체크 아웃 할 수 없습니다.

이 문제를 해결 한 하나의 리포지토리를 추가 체크 아웃 한 다음 여러 프로젝트에서 최종 프로젝트 작업 영역으로 복사하는 여러 업스트림 작업을 수행하거나 (필수 수준에서 문제 발생) 쉘 스크립팅 단계를 설정하여 각 리포지토리를 검사 할 수 있습니다. 빌드시 작업 작업 공간

이전에는 SCM이 더 이상 사용되지 않는 문제를 해결하는 데 도움이됩니다. 다중 SCM 플러그인 페이지에서 : "사용자는 https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin으로 마이그레이션해야합니다 . 파이프 라인은 여러 SCM을 더 나은 체크 아웃하는 방법을 제공하며 Jenkins에서 지원합니다. 핵심 개발 팀. "


다중 SCM 사용 :

  • 체크 아웃해야하는 각 저장소 (주 프로젝트 또는 프로젝트)에 대해 다른 저장소 항목을 작성하십시오.

  • 각 프로젝트에 대해 "고급"메뉴에는 각 저장소에 대해 "고급"이라는 레이블이 붙은 두 개의 단추가 있음)이 있습니다. "repo의 로컬 서브 디렉토리 (선택 사항)"텍스트 필드를 찾으십시오. "작업 공간"디렉토리에 프로젝트를 복사 할 디렉토리를 찾을 수 있습니다. 내 개발 컴퓨터의 파일 시스템을 매핑 할 수 있습니다.

"두 번째 고급 메뉴"는 더 이상 존재하지 않는 "추가"버튼 ( "추가 동작"섹션에 있음)을 사용하고 "하위 디렉토리로 체크 아웃"을 선택하면됩니다.

  • ant를 사용하는 경우, 이제 빌드 대상이있는 build.xml 파일이 작업 공간의 루트 디렉토리가 아닌 디렉토리에있는 빌드 대상으로 "Anvoke Ant"구성에이를해야합니다. 수행 할 "개미 호출"에서 "고급"을 빌드하고 "빌드 파일"입력 텍스트를 채우십시오.

희망이 도움이됩니다.


이후 여러 SCM이 사용되지 않습니다.

Jenkins Pipeline을 사용하면 여러 git repos를 체크 아웃하고 gradle을 사용하여 빌드 한 후 가능

node {   
def gradleHome

stage('Prepare/Checkout') { // for display purposes
    git branch: 'develop', url: 'https://github.com/WtfJoke/Any.git'

    dir('a-child-repo') {
       git branch: 'develop', url: 'https://github.com/WtfJoke/AnyChild.git'
    }

    env.JAVA_HOME="${tool 'JDK8'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}" // set java home in jdk environment
    gradleHome = tool '3.4.1' 
}

stage('Build') {
  // Run the gradle build
  if (isUnix()) {
     sh "'${gradleHome}/bin/gradle' clean build"
  } else {
     bat(/"${gradleHome}\bin\gradle" clean build/)
  }
}
}

은 사용을 당신 고려하는 것이 좋습니다 자식 sub-모듈 대신이 같은 user-지정 파이프 라인을.


내가 사용하는 여러 SCM들 플러그인 젠킨스와 성공적으로 힘내 플러그인과 함께.


저장소의 관계에 따라 다른 방법은 다른 저장소 (저장소)를 저장소 중 하나에 git 하위 모듈로 추가 하는 것입니다. git 하위 모듈은 다른 저장소에 대한 참조를 만듭니다. 이러한 하위 모듈 저장소는 "수퍼 프로젝트" (공식 용어)를 --recursive복제 할 때 플래그 를 지정하지 않는 한 복제되지 않습니다 .

현재 프로젝트에 하위 모듈을 추가하는 명령은 다음과 같습니다.

git submodule add <repository URI path to clone>

우리는 Jenkins v1.645를 사용하고 있으며 git SCM은 기본적으로 슈퍼 프로젝트에 대한 재귀 복제를 수행합니다. Voila는 동일한 Jenkins 작업 작업 공간의 각 디렉토리에있는 수퍼 프로젝트 파일과 모든 종속 (하위 모듈) 저장소 파일을 가져옵니다.

이것이 올바른 접근 방식이라는 것을 보증하지 않고 오히려 접근 방식입니다.


Jenkins : Multiple SCM-더 이상 사용되지 않습니다. GIT 플러그인-여러 저장소에서 작동하지 않습니다.

스크립팅 / 코드로서의 파이프 라인-갈 길입니다.


나도이 문제가 있었다. 다른 프로젝트에서 트리거 / 호출 빌드를 사용하여 해결했습니다. 각 저장소에 대해 매개 변수를 사용하여 다운 스트림 프로젝트를 호출합니다.

주요 프로젝트 :

This project is parameterized
String Parameters: PREFIX, MARKETNAME, BRANCH, TAG
Use Custom workspace: ${PREFIX}/${MARKETNAME}
Source code management: None

그런 다음 각 저장소에 대해 다음과 같은 다운 스트림 프로젝트를 호출합니다.

Trigger/call builds on other projects: 
Projects to build: Linux-Tag-Checkout
Current Build Parameters
Predefined Parameters: REPOSITORY=<name>

다운 스트림 프로젝트 : Linux-Tag-Checkout :

This project is parameterized
String Parameters: PREFIX, MARKETNAME, REPOSITORY, BRANCH, TAG
Use Custom workspace:${PREFIX}/${MARKETNAME}/${REPOSITORY}-${BRANCH}
Source code management: Git
git@<host>:${REPOSITORY}
refspec: +refs/tags/${TAG}:refs/remotes/origin/tags/${TAG}
Branch Specifier: */tags/${TAG} 

우리가 사용하는 자식-REPO을 우리의 여러 GIT 저장소를 관리 할 수 있습니다. git-repo가 ​​관리하는 저장소의 전부 또는 일부를 동일한 Jenkins 작업 작업 공간으로 체크 아웃 할 수 있는 Jenkins Repo 플러그인 도 있습니다.


하나의 작업 공간에서 한 번에 두 개 이상의 REPO을 점검 이다 (어쩌면 유일한 최신 버전에?) 젠킨스 + 힘내 플러그인 가능.

"Source-Code-Management"섹션에서 "Git"이 아니라 "Multiple SCMs"를 선택하고 여러 git 저장소를 추가하십시오.

하나를 제외하고 모두 "추가 동작"으로 "하위 디렉토리로 체크 아웃"조치를 추가하고 개별 하위 디렉토리를 지정하십시오.

참고 URL : https://stackoverflow.com/questions/14843696/checkout-multiple-git-repos-into-same-jenkins-workspace

반응형