2016-08-18 199 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安装在泊坞容器主机目录。

如果你在不同的服务器上有多个跑步者,情况会稍微复杂一些。