Jenkins에서 프로젝트를 특정 디렉터리로 체크 아웃하는 방법 (GIT 사용)
'svn'스타일에 대해 죄송합니다. SVN에서 GIT (CI Jenkins 환경 포함)로 마이그레이션하는 중입니다.
우리에게 필요한 것은 Jenkins가 GIT 프로젝트 (저장소?)를 특정 디렉터리로 체크 아웃 (또는 복제라고 말해야합니까?) 할 수 있도록하는 것입니다. 우리는 몇 가지 refspecs 마술을 시도했지만 성공적으로 이해하고 사용하는 것이 너무 분명하지 않았습니다.
또한 동일한 Jenkins 프로젝트에서 여러 비공개 GitHub 저장소를 프로젝트 루트 아래의 여러 개별 디렉토리로 체크 아웃해야하는 경우 어떻게 할 수 있습니까?
GitHub 플러그인이 설치되어 있습니다. 우리가 상황을 올바르게 표현하기를 바랍니다.
Jenkins 의 기본 git 플러그인 은 작업을 아주 잘 수행합니다.
프로젝트에 새 git 저장소 (프로젝트 구성> 소스 코드 관리 > GIT 옵션 확인)를 추가 한 후 저장소 브라우저 영역 바로 위의 플러그인 설정 하단으로 이동합니다 . 고급 버튼 이 있어야 합니다. 클릭하면 새 양식이 나타나고 값은 저장소에 대한 로컬 하위 디렉토리 (선택 사항) 로 설명됩니다 . 이것을로 설정 folder
하면 플러그인이 저장소를 작업 공간에 상대적인 폴더로 체크 아웃하도록합니다. 이렇게하면 프로젝트에 필요한만큼 리포지토리를 모두 별도의 위치에 둘 수 있습니다.
또는 사용중인 프로젝트에서이를 허용하는 경우 SVN의 외부 경로와 유사한 GIT 하위 모듈을 사용할 수 있습니다. 에서 GIT 예약 바로 그 주제에 대한 섹션이 있습니다. 이것이 일부 정책에 위배되지 않는 경우 하위 모듈은 사용하기 매우 간단하여 가져올 위치, 버전 / 태그 / 분기를 제어하는 강력한 방법을 제공하고 로컬 저장소에서 사용할 수있을뿐만 아니라 더 나은 이식성을 제공합니다.
분명히 GIT 플러그인은 하위 모듈 체크 아웃을 지원하므로 Jenkins는이를 매우 효과적으로 사용할 수 있습니다.
@ Łukasz Rżanek에 동의하여 git 플러그인을 사용할 수 있습니다.
다음과 같이 수 있도록 무엇 하위 방향 체크 아웃 :하지만,이 옵션을 사용
에서 소스 코드 관리 , 힘내 틱
, 클릭 추가 버튼을 선택 하위 디렉토리에 체크 아웃을
새로운 Jenkins 2.0 파이프 라인 (이전 이름은 Workflow Plugin)에서는 다음과 같이 다르게 수행됩니다.
- 메인 저장소
- 기타 추가 저장소
여기에서는 Multibranch Pipeline 버전 2.9를 구체적으로 언급합니다.
메인 저장소
이는 Jenkinsfile
.
파이프 라인 프로젝트 의 구성 화면에서 리포지토리 이름 등을 입력합니다.
Additional Behaviors> Check out to a sub-directory를 사용하지 마십시오 . 그러면 Jenkins가 찾을 수없는Jenkinsfile
하위 디렉토리 에 귀하가 저장 됩니다 .
에서는 Jenkinsfile
사용하여 하위 디렉토리의 주요 저장소를 체크 아웃 dir()
:
dir('subDir') {
checkout scm
}
추가 저장소
더 많은 리포지토리를 확인하려면 파이프 라인 구문 생성기를 사용하여 자동으로 Groovy 코드 조각을 생성합니다.
파이프 라인 프로젝트 의 구성 화면에서 :
- 파이프 라인 구문을 선택합니다 . 에서 샘플 단계의 드롭 다운 메뉴를 선택 일반 SCM : 체크 아웃 .
- Git 과 같은 SCM 시스템을 선택하십시오 . 저장소 또는 저장소에 대한 일반적인 정보를 입력하십시오.
- Multibranch Pipeline에서 환경 변수
env.BRANCH_NAME
에는 기본 저장소의 분기 이름이 포함됩니다. - 에서 추가 동작이 메뉴 드롭 다운 선택 하위 디렉토리 확인
- Groovy 생성을 클릭합니다 . Jenkins는 지정한 SCM 체크 아웃에 해당하는 Groovy 코드 조각을 표시합니다.
- 이 코드를 파이프 라인 스크립트 또는
Jenkinsfile
.
Pipeline 플러그인을 조사해 볼 가치가 있습니다. 플러그인을 사용하면 여러 VCS 프로젝트를 상대 디렉토리 경로로 체크 아웃 할 수 있습니다. VCS 체크 아웃별로 디렉토리를 미리 생성합니다. 그런 다음 새로 체크 아웃 된 VCS 작업 공간에 명령을 실행하십시오. 제 경우에는 git을 사용하고 있습니다. 그러나 당신은 아이디어를 얻어야합니다.
node{
def exists = fileExists 'foo'
if (!exists){
new File('foo').mkdir()
}
dir ('foo') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
def exists = fileExists 'bar'
if (!exists){
new File('bar').mkdir()
}
dir ('bar') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
def exists = fileExists 'baz'
if (!exists){
new File('baz').mkdir()
}
dir ('baz') {
git branch: "<ref spec>", changelog: false, poll: false, url: '<clone url>'
......
}
}
또한 동일한 Jenkins 프로젝트에서 여러 개인 GitHub 저장소를 프로젝트 루트 아래의 여러 개별 디렉토리로 체크 아웃해야합니다. 어떻게하면 좋을까요?
The Jenkin's Multiple SCMs Plugin has solved the several repositories problem for me very nicely. I have just got working a project build that checks out four different git repos under a common folder. (I'm a bit reluctant to use git super-projects as suggested previously by Łukasz Rżanek, as git is complex enough without submodules.)
In the new Pipeline flow, following image may help ..
I do not use github plugin, but from the introduction page, it is more or less like gerrit-trigger plugin.
You can install git plugin, which can help you checkout your projects, if you want to include multi-projects in one jenkins job, just add Repository into your job.
'IT Share you' 카테고리의 다른 글
32 비트 정수에 대해 왼쪽 비트 시프트 "<<"가 32 회 이상 사용될 때 예상대로 작동하지 않는 이유는 무엇입니까? (0) | 2020.12.10 |
---|---|
if 조건과 중괄호가없는 변수를 선언 할 때 컴파일러 오류 (0) | 2020.12.10 |
파이썬 문자열에서 쉼표를 제거하는 방법 (0) | 2020.12.10 |
node.js에서 지원하는 AWS Lambda 함수를 사용하여 SNS 주제에 메시지를 게시 할 수 있습니까? (0) | 2020.12.10 |
Docker에서 여러 터미널을 여는 방법은 무엇입니까? (0) | 2020.12.10 |