2016-08-18 51 views
0

我有以下.gitlab-ci.yml文件Gitlab詞:自動執行before_script行動

before_script: 
    - 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 
    - eval $(ssh-agent -s) 
    - ssh-add /root/gitlab-runner/.ssh/id_rsa 
    - mkdir -p ~/.ssh 
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' 
    - apt-get update -qq && apt-get install -y -qq apt-utils sqlite3 libsqlite3-dev nodejs tree 
    - gem install bundler --no-ri --no-rdoc 
    - bundle install --jobs $(nproc) "${FLAGS[@]}" 
    - cp /root/gitlab-runner/.database.gitlab-ci.yml config/database.yml 
    - RAILS_ENV=test rake parallel:setup 

rspec: 
    script: 
    - rake parallel:spec 

的問題是,我們必須使用完全相同的before_script行動這麼多的項目,這些行動有時會改變,所以我們要更新這個文件爲每個項目。有沒有一種方法來自動配置亞軍所以,在這種情況下,.gitlab-ci.yml成爲執行操作:

rspec: 
    script: 
    - rake parallel:spec 

回答

1

可以將所有before_script命令保存到一個bash腳本,它存儲在服務器上託管的亞軍,然後只是引用它在所有的項目:如果您使用的碼頭工人

before_script: 
    - /[path on the host]/script.sh 

,您可以include在你自己的圖像文件或使用volumes安裝在泊塢容器主機目錄。

如果你在不同的服務器上有多個跑步者,情況會稍微複雜一些。