2013-10-10 5 views
3

단일 저장소에서 후크를 지정하는 방법이 있지만 "/ etc/mercurial/hgrc"파일에서 후크를 지정했지만 두 번 빌드 할 때마다 각 저장소의 각 커밋마다.젠킨스가 수은 커밋에서 프로젝트를 만들도록하자

그래서 repo마다 빌드를 지정하고 싶습니다. 우분투 - 서버에

[hooks] 
changegroup = curl --silent http://jenkins:8080/job/ourProject/build 

그것 :

우리가 훅을 구현하는 방법이다.

+0

많은 프로젝트가있는 경우보다 쉬운 젠킨스 관리를 허용하는 웹 인터페이스 (RhodeCode)의 커뮤니티 버전을 사용하는 것이 더 쉽습니다. 여기를 참조하십시오 : http : // stackoverflow.com/questions/41035844/build-jenkins-job-after-commit-to-repository – marcinkuzminski

답변

2

당신은 당신의 젠킨스 프로젝트는

  • 당신이 당신의 수은 후크에 대한 적절한 notifyCommit URL을 사용 폴링하지 않도록

    1. 있는지 확인한다 : https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin

  • +1

    젠킨스가 폴링하지 않습니다. 플러그인이 설치되어 있습니다. 브라우저에서 URL을 열었을 때 작동하지만 푸시에서는 작동하지 않습니다. . – MemLeak

    5

    1.select 빌드 트리거 아래의 폴링 SCM 옵션 2. 일정 양식이 비어 있는지 확인하십시오.

    확인
    [hooks] 
    commit.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null 
    incoming.jenkins = wget -q http://localhost:8080/mercurial/notifyCommit?url=file:///home/user/mercurial > /dev/null 
    
    +1

    첫 번째 단계 (투표 SCM에 체크하십시오)가 나를위한 차이를 만든 것입니다! 감사. – Jason

    +0

    @Jason도이 작업을 수행하기 위해 SCM을 폴링해야한다고 말했습니다. 나는 또한 일정을 제거해야했다. 그렇지 않으면 곧바로 방아쇠를 당길 수 없었다. – Luke

    0

    당신이 .hg 디렉토리에 생성해야 /home/user/mercurial/.hg/hgrc 및 추가 후크, 내가가 속 설립 (내가 현상금 해요, 내 경우는 특정 지점 수은이다).

    주/원본 저장소에서 원하는 빌드 스크립트로 후크를 배치하십시오. 사전 그룹화는 들어오는 변경 사항을 유지하는 것입니다. 나는 로데 코드가 메인 저장소에 설치되어 있고 그 자체가 자신의 훅을 가지고있다. 이 방법으로 나는 여전히 Jnekins를 트리거하고 여전히 rhodecode 푸시 알림 및 다른 것들에 대한 트리거를 변경합니다.

    [hooks] 
    pregroupchange = /path/to/script.extention 
    

    스크립트에서 원하는 동작을 배치하고 젠킨스 (Jenkins)의 트리거도 배치하십시오. Jenkins:Job:Configure:Build Triggers:checkbox에서 트리거를 사용 설정하는 것을 잊지 마세요. + 여기에 desired_token을 입력하십시오. (내 경우 : 수은) 특정 분기에만 수은 트리거를 사용할 수 없으므로이 방법으로 분기 이름을 발견했습니다. 또한 원격 스크립트에서 트리거하려면 Jenkins에 익명 전체에 대한 읽기 권한을 부여하거나 자격 증명이있는 특정 사용자를 만들어 트리거 URL에 넣어야합니다.

    배쉬 예 : 원래의 질문에 대한

    #!/bin/bash 
    BRANCH_NAME=`hg tip --template "{branch}"` 
    if [ $BRANCH_NAME = "branch_name" ]; then 
        curl --silent http://jenkins_domain:port/path/to/job?token=desired_token 
    fi 
    

    : 당신은 단지 원하는 지점에 대해 하나의 빌드를 실행 이런 식으로

    . 후크는 다중 복제본, 여러 개발자와 함께 작업하는 경우 기본 저장소에만 사용됩니다. 로컬 훅이있을 수 있지만 로컬에서 Jenkins를 트리거하지는 않습니다. 모든 개발자에 대해 Jenkins는 밀어 넣기 (커밋, 수신, 그룹 변경)가 발생했을 때 메인 저장소에서만 트리거합니다. 로컬 후크는 이메일, 로그, 구성 등과 같은 다른 것들을위한 것입니다.