2016-11-25 7 views
2

나는 잠시 Gitlab을 사용해 왔으며 이제 빌드 서버를 설정했습니다. 내가 기계 (노트북/PC)를 바꿀 때마다 내용이 정기적으로 클라우드에 백업되므로 내 작업을 내 gitlab 서버에 저장하는 일이 종종 있습니다.커밋 메시지에 따라 Gitlab 러너 조건부 실행

빌드 서버는 훌륭하게 작동하지만 모든 프로젝트를 완료 할 때마다 전체 프로젝트가 빌드됩니다. > Gitlab은 커밋의 다른 모든 푸시가 무시

  • 빌드를 트리거 -

    • 푸시 코멘트 "릴리스 1.2.3.4"으로 커밋 : 그 꽤 큰 하나로서,이 같은 일을하고 싶습니다 주자.

    빌드시 헤드 커밋 코멘트 만 확인하면 괜찮습니다.

    .gitlab.yml 문서를 검색했지만 도움이되는 정보가 없습니다.

  • +0

    예를 들어 커밋이 readme 변경 일 경우 git commit 메시지에'[skip ci]'또는'[ci skip]'을 쓸 수 있습니다. 그것을 찾을 수 있습니다. 푸시에이 건너 뛰기 표시가있는 커밋 만 포함되어 있으면 CI 빌드가 건너 뜁니다. –

    +0

    또한 프로젝트를 여러 개의 git repos와 여러 개의 CI 타겟 (build_x, build_y, build_z)으로 나눠서 생각해 볼 필요가 있습니다. 여기서 x와 y는 별도로 만들어지며 파이프 라인을 병렬 처리 할 수 ​​있습니다. 또한 증분 빌드가 가능해질 수 있도록 캐싱을 사용하려고 생각할 수도 있습니다. 캐싱은 C/C++, Java 및 기타 컴파일 된 언어 빌드에서 많은 시간을 절약 할 수 있습니다. 증분 빌드로 시간을 절약 할 수 있습니다. –

    답변

    2

    예제 메시지 "release 1.2.3.4"에 따라 가장 좋은 방법은 태그가있는 커밋으로 만 빌드를 제한하는 것입니다.

    gitlab-ci.yml exilinging 파일에서 제한하려는 단계 끝에 "유일한"특성을 추가하십시오. 이제

    job1: 
        stage: build 
    script: 
    - echo "building..." 
    # - Your commands here 
    only: 
    - tags 
    

    , 당신이 그것을 구축해야 할 때마다, 그냥 사용하여 커밋 태그 : 당신은 정말 모든 당신이 CI Variables에 보여야 커밋 메시지를 참조해야하는 경우

    git tag "release 1.2.3.4" 
    

    하는 방법이 현재 커밋 해시 참조를 가져옵니다.

    +1

    거북이를 사용하면 그물을 얻고 달릴 수 있습니다. 내가 커밋하고, 태그를 붙이고 푸시하지만 아무 일도 일어나지 않으며, 새로운 파이프 라인이 시작되지 않습니다. – MichaSchumann

    +1

    그러나 팁을 기반으로 "only : - master"를 사용하려고했습니다. 따라서 지점에서 개발하고 릴리스시에만 마스터에 병합합니다. 태그 거북이가 거북이가 명령을 감싸는 방식 때문에 작동하지 않는 것 같습니다. 그러나 해결책을 찾는데 도움이되었으므로 대답을 수락합니다. – MichaSchumann

    +1

    git push origin - tag를 사용하여 커밋 한 후에도 태그를 밀어 넣었습니까? Repository -> Tags에서 Gitlab에서 체크 아웃 할 수 있습니다. 웹 인터페이스의이 섹션에서 태그를 만들 수도 있습니다. 그러나 어쨌든, 기꺼이 도와 드리겠습니다. –

    관련 문제