0

我有以下.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
4

1 回答 1

1

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

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

如果您使用的是 Docker,则可以文件包含在自己的映像中,也可以使用将主机目录挂载到 Docker 容器中。

如果您在不同的服务器上有多个跑步者,这会有点复杂。

于 2016-08-18T13:37:55.310 回答