2017-12-24 3 views
0

에 대한 .script 나는 gitlab-ci를 사용하여 비교적 새로운 해요 다음과 같은 때문에 앵커/참조 내 사용의 ci-lint 실패 할 경우 같은, 내가 문제로 실행했습니다 작업에서 앵커/참조를 사용하는 방법. 건조


image: docker:latest 

services: 
    - docker:dind 

variables: 
    DOCKER_DRIVER: overlay2 
    DOCKER_HOST: tcp://localhost:2375 

.install_thing1: &install_thing1 
    - do things 
    - to install 
    - thing1 

.install_thing2: &install_thing2 
    - do things to 
    - install thing2 

.setup_thing1: &setup_things1 
    variables: 
    VAR: var 
    FOO: bar 
    script: 
    - all 
    - the 
    - things 

before_script: 
... 

stages: 
    - deploy-test 
    - deploy-stage 
    - deploy-prod 

test: 
    stage: deploy-test 
    variables: 
    RUN_ENV: "test" 
... 
    only: 
    - tags 
    - branches 
    script: 
    - *install_thing1 
    - *install_thing2 
    - *setup_thing1 
    - other stuff 
... 

test: 
    stage: deploy-stage 
    variables: 
    RUN_ENV: "stage" 
... 
    only: 
    - master 
    script: 
    - *install_thing1 
    - *install_thing2 
    - *setup_thing1 
    - other stuff 

나는 gitlab-ci.yml을 보풀을 시도하면, 다음과 같은 오류가 발생합니다 :

Status: syntax is incorrect 
Error: jobs:test:script config should be a string or an array of strings 

오류는 단지 내가 가지고 믿는 script 조각에 대한 배열을 필요로하는 회피한다. <<: *anchorpragma를 사용하면 오류가 발생합니다.

그럼 어떻게 모든 블록에서 코드를 반복 할 필요가 없는지 여기서 내가하려는 일을 어떻게 완료 할 수 있습니까?

답변

1

당신은 그것을 고칠 수 있고 더 건조하게 만들 수 있습니다. the Auto DevOps template Gitlab created을보십시오.

auto_devops job과 같은 템플릿 작업을 가지고 before_script에 포함시킨 다음 스크립트 블록에서 multiple functions을 결합하여 호출 할 수 있습니다. 문제를 해결하고 CI 파일을 개선 할 수 있습니다.

앵커는 제한된 유연성만을 제공합니다.

는 (나에게 20 개 이상의 프로젝트에 대한 하나 개의 CI 파일이하는이 개념은 그것을 가능하게하고 중앙 집중화 된 기능 나는 내 before_script에서 wget로드 파일.)

+0

최고! 이것은 대단히 도움이 될 것입니다! 감사! – Jim

+1

Np; 여기에 더 자세한 예제가 나와 있습니다. https://stackoverflow.com/questions/47790403/share-gitlab-ci-yml-between-projects/47976087#47976087 –

관련 문제