2016-05-31 6 views
8

Travis-CI 및 Github을 사용하는 지점을 기반으로 설치를 설정하고 싶습니다.트래비스 : 다른 지점에 대해 다른`script`?

e.e. - 우리가 develop에서 빌드했다면, DEV 호스트 명으로 /deploy.rb을 실행하십시오. master- 다음으로 PROD 호스트 이름을 가진 ./deploy.rb 등등. - 내가 찾은

하나 개의 아이디어는 같은 스크립트를 $TRAVIS_BRANC 변수를 확인하고 실행하는 것입니다

language: php 
install: 
    - true 
script: 
    - test $TRAVIS_BRANCH = "develop" && ./ci/deploy.rb envdev.tld 
    - test $TRAVIS_BRANCH = "master" && ./ci/deploy.rb envprod.tld 

그러나이 솔루션은 나에게로 조금 이상한 보인다. 그것을 실현할 수있는 다른 가능성은?

유용한 정보/링크.

답변

10

Travis-CI는 푸시하는 분기에서 .travis.yml을 기반으로 빌드를 생성합니다. 해결책으로 다른 분기에 다른 .travis.yml 파일을 유지할 수 있습니다.

분기간에 정기적으로 병합을 수행하면 분기간에 부주의 한 변경이 발생할 수 있습니다 (한 분기의 .travis.yml의 변경 사항을 다른 분기로 병합하는 경우). 이것이 우려된다면 당신의 솔루션은 아마도 더 안전 할 것입니다.

당신은 당신의 .travis.yml에 가지를 whitelist 수, 특정 지점 (예를 들어, developmaster)이 내장되어 있는지 확인합니다.

기존 솔루션을 사용하는 경우 travis.yml 스크립트를 단순화 할 수 있습니다. 올바른 배포 대상을 선택하는 논리를 ci/deploy.rb 스크립트로 이동하거나 .travis.yml에서 호출하는 별도의 래퍼 스크립트를 추가하는 것이 좋습니다. 이렇게하면 .travis.yml에 하나의 script 행만 있으며 배포 대상을 변경하는 경우 변경하지 않아도됩니다.

script: 
    - if [ "$TRAVIS_BRANCH" = "develop" ]; then ./ci/deploy.rb envdev.tld; fi 
    - if [ "$TRAVIS_BRANCH" = "master" ]; then ./ci/deploy.rb envprod.tld; fi 
:

또는

, 기존 구조에는 실패 테스트가 없는지 확인하기 위해, 당신도 같은 것을 사용할 수 있습니다

관련 문제