2017-12-24 13 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をlintのしようとすると、私は次のエラーを取得する:

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

エラーはちょうど私が私が持っていると信じてscriptピースの配列を必要とするために見逃さ。 <<: *anchorプラグマを使用すると、エラーも発生します。

私はここで何をしようとしているのですか?ブロックごとにコードを繰り返す必要はありません。

答えて

1

あなたはそれを修正し、さらに乾燥させることもできます。the Auto DevOps template Gitlab createdを見てください。

auto_devops jobのようなテンプレートジョブを使用してbefore_scriptに組み込んでから、multiple functionsをスクリプトブロックに追加して呼び出すことができます。

アンカーは、柔軟性に限りがあります。

(この概念は、それが可能私は20+プロジェクトと集中機能は、私のbefore_scriptでI wgetと負荷をファイルに1つのCIファイルを持っているために作られた。)

+0

素晴らしいです!これは非常に助けになるはずです!ありがとう! – Jim

+1

Np;私はここでより詳細な例を文書化しました:https://stackoverflow.com/questions/47790403/share-gitlab-ci-yml-between-projects/47976087#47976087 –

関連する問題