2016-08-18 4 views
0

Ich habe die folgende .gitlab-ci.yml DateiGitlab Ci: execute automatisch before_script Aktionen

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 

Das Problem ist, dass wir so viele Projekte haben genau die gleichen before_script Aktionen verwenden und diese Aktionen manchmal ändern, so müssen wir diese aktualisieren Datei für jedes Projekt. Gibt es eine Möglichkeit, um automatisch die Läufer zu konfigurieren Aktionen auszuführen, so dass die .gitlab-ci.yml in diesem Fall wird:

rspec: 
    script: 
    - rake parallel:spec 

Antwort

1

Sie alle before_script Befehle in ein Bash-Skript speichern, speichern Sie es auf dem Server mit dem Läufer Hosting und dann Referenz es nur in allen Projekten:

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

Wenn Sie Docker verwenden, können Sie entweder include die Datei in Ihrem eigenen Bild oder volumes verwenden, um das Host-Verzeichnis in dem Docker Behälter zu montieren.

Es wäre ein bisschen komplizierter, wenn Sie mehrere Läufer auf verschiedenen Servern haben.