2017-05-01 4 views
1

내 프로젝트에서 배포 스크립트는 빌드 작업의 결과를 사용하지만 배포 작업에서 GitLab CI가 마지막 커밋의 모든 변경 사항을 다시 가져오고 해당 작업에서 생성 된 모든 파일을 제거합니다. 직업을 구하십시오. Shell Executor를 사용하고 있습니다.GitLab 배포 작업에서 git의 변경 사항을 가져옵니다

GitLab CI가 배포 작업에서이 작업을 수행하지 못하게 할 수있는 방법이 있습니까? 그렇다면 내 배포 작업은 제 작업이 중단 된 곳에서 계속 진행될 수 있습니까?

나는 시도했다 : 내 배포 작업에

cache: 
    untracked: true 

하지만 어떤 차이를 만들 것 같지 않았다

내 전체 .gitlab-ci.yml은 다음과 같습니다

before_script: 
    - sudo apt-get -y install default-jdk 
    - sudo add-apt-repository -y ppa:cwchien/gradle 
    - sudo apt-get -y update 
    - sudo apt-get -y install gradle 
    - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 
    - sudo apt-get install -y nodejs 
    - sudo npm install -g pm2 

stages: 
    - build 
    - test 
    - deploy 

after_script: 

jobBuild: 
    stage: build 
    script: 
    - (cd my-lib; gradle build assemble) 
    only: 
    - master 

jobDeploy: 
    before_script: 

    stage: deploy 
    cache: 
    untracked: true 

    script: 
    - <some shell scripts> 
    only: 
    - master 

답변

1

Gitlab CI에 대한 추가 정보 cache

첫째, 원하는 빌드 작업의 파일이므로 캐시하려면 jobBuild에 캐시 규칙을 추가 할 수 있습니다. 작업 외부에서 캐시를 정의하여 전역 적으로 캐시를 정의 할 수도 있습니다.

캐시 메커니즘의 문제점은 캐시가 항상 사용 가능하지 않을 수 있음을 의미하는 최선의 노력 시스템이라는 점입니다.

캐시는 최선의 방식으로 제공되므로 캐시가 항상 존재한다고 생각하지 마십시오. 구현 세부 정보는 GitLab Runner를 확인하십시오. 당신은 시간의 또 다른 100 %까지 하나의 작업에서 건설 한 파일을 전송 무언가를 원하는 경우에

, 당신은 artifcats를 사용해야합니다. 당신이 작업이 끝날 때 유물로 묶어 파일 및/또는 폴더 세트를 정의 할 것이다 artifacts

Gitlab CI를 사용

. 그런 다음이 아티팩트는 첫 번째 작업에 대한 종속성을 지정하면 이후 단계의 작업에서 사용할 수 있습니다.

배포 단계에서 git repo를 가져 오지 않으려면 GIT_STRATEGYnone으로 설정할 수 있습니다. 이 here에 대한 자세한 정보. 내가 필요 정확히 무엇

before_script: 
    - sudo apt-get -y install default-jdk 
    - sudo add-apt-repository -y ppa:cwchien/gradle 
    - sudo apt-get -y update 
    - sudo apt-get -y install gradle 
    - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 
    - sudo apt-get install -y nodejs 
    - sudo npm install -g pm2 

stages: 
    - build 
    - test 
    - deploy 

after_script: 

jobBuild: 
    stage: build 
    script: 
    - (cd my-lib; gradle build assemble) 
    only: 
    - master 
    artifacts: 
    paths: 
     - path/to/folder/containing/build/files # for example my-lib 

jobDeploy: 
    before_script: 
    stage: deploy 
    variables: 
    GIT_STRATEGY: none 
    dependencies: 
    - jobBuild 
    script: 
    - cd path/to/folder/containing/build/files # for example my-lib 
    - <some shell scripts> 
    only: 
    - master 

+0

감사 : 여기

는 모든 것을 할 수있는 당신의 .gitlab-ci.yml 파일의 수정이다 – zakum1