Gitlab Ci:自动执行before_script动作

时间:2016-08-18 12:54:13

标签: gitlab docker-compose dockerfile gitlab-ci runner

我有以下.gitlab-ci.yml文件

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 个答案:

答案 0 :(得分:1)

您可以将所有before_script命令保存到Bash脚本中,将其存储在托管转轮的服务器上,然后在所有项目中引用它:

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

如果您使用的是Docker,您可以include自己图像中的文件,或使用volumes将主机目录挂载到Docker容器中。

如果您在不同的服务器上有多个运行程序,那将会有点复杂。