2017-11-14 14 views
1

내가 원격 서버에서 로컬 파일을 가져올 것 gitlab-ci 작업을 실행하고는, 어느 정도는 다음과 같이gitlab-CI : 동적 유물 이름

retrieve_docs: 
    stage: fetch_docs 
    image: debian:jessie 
    script: 
     - ssh [email protected]$SERVER /perform/some/work 
     - INSTFILE=$(ssh [email protected]$SERVER bash -c 'find /root -iname "somepattern*" | tail -n 1 | xargs readlink -f') 
     - echo "Will retrieve locally $INSTFILE" 
     - scp [email protected]$SERVER:$INSTFILE . 
     - BASEFILE=$(basename $INSTFILE) 
     - mv $BASEFILE downloads/ 
    artifacts: 
     name: $BASEFILE 
     paths: 
     - downloads/ 

위의 작업 정의가 있지만 작동하지 않는 것 , BASEFILE 변수는 파일 이름을 제공 할 때 비어있는 것으로 렌더링됩니다.

  • 동적 아티팩트 이름을 사용할 방법이 있습니까?

  • 이 이슈가 내 (비공개/추적 된) downloads 폴더에도 복사되지 않는 이유가 있습니까?

  • 위의 프로세스는 실제로 로컬에서 .zip 파일을 가져옵니다. 각 작업에서 오래된 아티팩트를 삭제하고 최신 아티팩트/zip 파일 만 유지하도록하는 방법이 있습니까 (1 주일 만료가 설정되었지만)? 예를 들어

답변

0

당신은 당신이 작업에 따라 동적 아티팩트 이름을 가질 수 CI_JOB_IDCI_JOB_NAME 같은 것을 사용합니다. https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts-name에 정의 된 가변 배열을 사용하여 스테이지 나 작업 또는 파이프 라인에 대한 동적 아티팩트 이름을 가져올 수 있습니다.

보통 작업에서 git 실험실은 경로에 지정된 항목을 압축하여 러너 관리자에게 업로드하므로 다음 작업이 러너 관리자로부터 이슈를 다운로드 할 수 있습니다. 작업이 실패하면 모든 이슈를 다른 작업에 업로드 할 수 없습니다. find .을 수행하고 필요한 dir이 있는지 확인하십시오. when 옵션을 사용하면 실패하지 않더라도 pipline을 계속 진행할 수 있습니다. https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts-when

예, 타이머로 artifcat을 만료시킬 수 있습니다. https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts-expire_in

보기