Development Tip

Jenkins가 BitBucket git 저장소로 푸시를 빌드하도록하려면 어떻게해야합니까?

yourdevel 2020. 12. 14. 20:57
반응형

Jenkins가 BitBucket git 저장소로 푸시를 빌드하도록하려면 어떻게해야합니까?


BitBucket에서 호스팅되는 git 저장소가 있고 저장소와 Jenkins 서버간에 SSH 인증을 설정했습니다. Jenkins를 수동으로 빌드 할 수 있지만 빌드를 트리거하기 위해 BitBucket의 Jenkins 서비스를 가져올 수 없습니다.

Jenkins configuration:  
- Project Name: [my_jenkins_job]  
- Build Triggers:  
--Trigger Builds Remotely:  
---Token: [token]

BitBucket configuration:  
- Endpoint: http://[my_jenkins_address]/job/[my_jenkins_job]/build (I've also tried build?token=[token])  
- Project Name: [my_jenkins_job]  
- Module Name: [blank]  
- Token: [token]

http : // {my_jenkins_address}/ job / {my_jenkins_job}/ build? token =을{token} 방문 하면 빌드가 제대로 시작됩니다.

BitBucket에 대한 변경 사항을 푸시하지 않으면 Jenkins가 빌드를 시작하지 않는 이유는 무엇입니까?


매분마다 저장소를 폴링하도록 Jenkins 인스턴스를 설정했습니다. 그것은 당신의 필요에 충분히 빈번하지 않습니까?

Jenkins 구성 :

빌드 트리거> 폴 SCM = 선택됨

빌드 트리거> 폴 SCM> 일정 =

# every 1 minute
*/1 * * * *

Bitbucket의 Jenkins Hook이 전혀 작동하지 않기 때문에 다른 지점에 대해 다른 Jenkins 프로젝트가 있습니다.

  • Jenkins에 Bitbucket 플러그인 설치
  • Bitbucket 저장소 ( Settings-> Hooks )에 일반 Post as Hook을 추가하고 다음 URL을 사용하세요.

https : // YOUR.JENKINS.SERVER : PORT / bitbucket-hook /

젠킨스에 인증을 설정했다면 URL은 다음과 같아야합니다.

https : // 사용자 이름 : PASSWORD@YOUR.JENKINS.SERVER : PORT / bitbucket-hook /

  • 다음과 같이 Jenkins 프로젝트를 구성합니다.
  • 아래 빌드 트리거 수 있도록 변경이의 Bitbucket에 푸시 할 때 빌드
  • 아래의 소스 코드 관리 를 선택 GIT를 ; 자격 증명을 입력 하고 빌드분기를 정의합니다 (예 : ** feature / * ).

이런 식으로 세 개의 빌드 프로젝트가 있습니다. 하나는 모든 기능, 하나는 개발 용, 다른 하나는 릴리스 브랜치입니다. URL 끝에 슬래시 ( '/')를 포함해야합니다. 그렇지 않으면 후크가 작동하지 않습니다.

그리고 그것의 가장 좋은 점은 새로운 Jenkins 프로젝트를 위해 새로운 후크를 광고 할 필요가 없다는 것입니다.


실제로 Bitbucket 서비스를 사용하여 Jenkins에서 작동하도록 할 수 있지만 작동하려면 약간의 작업이 필요했습니다.

인증을 사용하는 경우 빌드를 생성 할 수있는 사용자 중 한 명으로부터 API 토큰을 가져올 수 있습니다. Bitbucket 전용 계정을 만들었습니다. API 토큰을 사용하려면 최소한 Jenkins 1.426 이 필요합니다 . 그런 다음 API 토큰과 함께 HTTP 인증을 Bitbucket 서비스의 암호로 사용할 수 있습니다.

이것이 내 설정 방법입니다.

끝점 : http : // [bitbucket] : [APITOKEN] @ [www.example.com/jenkins/]

프로젝트 이름 : [NameOfMyJenkinsProject]

모듈 이름 : [비어 있음]

토큰 : [Jenkins 프로젝트 설정에서 찾은 토큰]

이렇게 설정 한 후 토큰과 인증을 사용하여 Bitbucket에서 푸시 트리거 빌드를 활성화 할 수있었습니다.


Jenkins에서 인증을 사용하면 토큰 물건은 쓸모가 없습니다.

Git 플러그인을 사용하고 그 안에 POST 후크를 사용 http[s]://your.site.com[/jenkins]/git/notifyCommit?url=git@bitbucket.org:your-username/your-repo.git하십시오. 폴링이 켜져 있고 일정 값이 있는지 확인하십시오. 그렇지 않으면 작동하지 않습니다.


Poll SCM을 사용하는 것은 좋지만 단점도 거의 없습니다. GIT Repository에서 메타 데이터를 가져 오는데, 어쨌든 비트 버킷 서버와 Jenkins 서버에서 대역폭의 일부를 사용합니다.

Bitbucket은 새 업데이트가 도착하면 Jenkins를 트리거 할시기를 알고있는 것이 좋습니다. bitbucket 최신 버전을 사용하는 경우 현재 Bitbucket과 호환되는 플러그인 이름 "Stash webhooks for Jenkins"가 있습니다.

이 플러그인 내에서 Jenkins URL과 JOB 이름을 지정하기 만하면 Jenkins와 Bitbucket 사이에 추가 보안 계층이 제공됩니다. 여기에 이미지 설명 입력

이것은 Atlassian Marketplace에서 다운로드 할 수있는 플러그인 (Jenkins 용 Bitbucket 웹훅이라고 부르지 않는 Jenkins 용 Stash 웹훅)입니다.

여기에 이미지 설명 입력위는 Jenkins URL 및 Repo Clone URL을 지정해야하는 추가 기능 설정입니다. 트리거로 연결 등을 확인할 수도 있습니다.

플러그인 링크 : Jenkins 용 Bitbucket 웹훅

이 플러그인의 작동 방식 :

  1. Install the Git Plugin in Jenkins. Configure your project to use Git for your Source Code Management. You will need to keep the Repository URL you use for configuration in Stash. Enable the Poll SCM option in the Build Triggers. This is required to remotely trigger a build. Since we don’t really need to poll, you can set the poll frequency to poll very infrequently. Save your project configuration.
  2. Enter the URL for your Jenkins instance and the Repository URL that you configured Jenkins to use. You can use the dropdown to get the clone URL for each supported the protocol. Afterwards, feel free to change it to match your Jenkins instance.
  3. That’s it!

With both Jenkins and Stash now configured, if you commit code, a build trigger will automatically occur. What happens is the post-receive hook fires a GET request to Jenkins, which then tells it to poll the repository (why you need to have polling turned on). The poll checks to see if there are actually any changes. Since there are, it triggers the build!


Just install the bitbucket plugin and follow the instructions as can be found on the plugins page:

Configure your BitBucket repository with a POST hook, using URL JENKINS_URL/bitbucket-hook (no need for credentials). On each commit, all jobs with "Build when a change is pushed to BitBucket" option enabled will be triggered.

See here: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin


이 문제로 오랫동안 고생하고 있었고 Jenkins 문서에서 해결책을 찾을 수 없었습니다. 여기 에서 Cloudbees 지원 사이트에서 해결책을 찾았습니다.

이러한 견인 웹훅을 bitbucket 저장소에 추가하기 만하면 매우 잘 작동합니다.

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

그리고 MultiBranch 파이프 라인에서도 모든 파이프 라인에서 작업합니다.

이것이 누군가에게 도움이되기를 바랍니다.)

ADA

참고 URL : https://stackoverflow.com/questions/11231064/how-do-i-get-jenkins-to-build-on-push-to-a-bitbucket-git-repository

반응형