2015-10-04 15 views
24

Wenn ein GitLab-Projekt auf GitLab CI konfiguriert ist, gibt es eine Möglichkeit, den Build lokal auszuführen?Verwenden Sie GitLab CI, um Tests lokal auszuführen?

Ich möchte meinen Laptop nicht in einen Build "Runner" verwandeln, ich möchte nur den Vorteil von Docker und .gitlab-ci.yml nutzen, um Tests lokal auszuführen (d. H. Es ist alles vorkonfiguriert). Ein anderer Vorteil davon ist, dass ich sicher bin, dass ich dieselbe Umgebung lokal und auf CI verwende.

Hier ist ein Beispiel für how to run Travis builds locally using Docker, ich bin auf der Suche nach etwas ähnliches mit GitLab.

+3

sollte in neuesten devel verfügbar sein, siehe [gitlab-ci-multi-runner # 312] (https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/312) – jangorecki

Antwort

16

Seit ein paar Monaten ist dies möglich mit der gitlab-ci-multi-runner:

gitlab-runner exec docker my-job-name 

Beachten Sie, dass beide Docker benötigen und gitlab-ci-multi-runner auf Ihrem Computer installiert diese Funktion zu erhalten.

Sie benötigen auch den in Ihrer Datei .gitlab-ci.yml definierten Schlüssel image. Sonst wird nicht funktionieren.

Hier ist die Linie, die ich zur Zeit für die Prüfung vor Ort verwenden gitlab-runner mit:

gitlab-runner exec docker test --docker-volumes "/home/elboletaire/.ssh/id_rsa:/root/.ssh/id_rsa:ro" 

Edit: wegen der Verwirrung, ich fügen Sie hier die gitlab-runner --help Ergebnis, so können Sie, dass Gitlab-Läufer sehen machen baut lokal:

gitlab-runner --help 
NAME: 
    gitlab-runner - a GitLab Runner 

USAGE: 
    gitlab-runner [global options] command [command options] [arguments...] 

VERSION: 
    1.1.0~beta.135.g24365ee (24365ee) 

AUTHOR(S): 
    Kamil Trzciński <[email protected]> 

COMMANDS: 
    exec   execute a build locally 
    list   List all configured runners 
    run   run multi runner service 
    register  register a new runner 
    install  install service 
    uninstall  uninstall service 
    start  start service 
    stop   stop service 
    restart  restart service 
    status  get status of a service 
    run-single  start single runner 
    unregister  unregister specific runner 
    verify  verify all registered runners 
    artifacts-downloader download and extract build artifacts (internal) 
    artifacts-uploader create and upload build artifacts (internal) 
    cache-archiver create and upload cache artifacts (internal) 
    cache-extractor download and extract cache artifacts (internal) 
    help, h  Shows a list of commands or help for one command 

GLOBAL OPTIONS: 
    --debug   debug mode [$DEBUG] 
    --log-level, -l "info" Log level (options: debug, info, warn, error, fatal, panic) 
    --cpuprofile   write cpu profile to file [$CPU_PROFILE] 
    --help, -h   show help 
    --version, -v  print the version 

Wie Sie execute a build locally sehen können, ist der exec Befehl.

+0

Nun. Ich benutze es nur dafür. BTW, wenn ich Tests lokal ausführen möchte, führe ich die Befehle einzeln aus. Wenn ich das gitlab ci lokal verwenden möchte, ist das nur für gitlab-ci-Probleme. Es sollte nie der Weg sein, Dinge lokal zu testen, nur ein Helfer, um gitlab-ci Probleme zu finden. – elboletaire

+0

"Es sollte nie der Weg sein, Dinge lokal zu testen" Warum? 'gitlab-ci.yml' ist wie ein vorkonfigurierter Docker-Container. Wie ich in meiner Frage darauf hingewiesen habe, ist es mit Travis möglich und es funktioniert gut: https://github.com/jolicode/JoliCi –

+0

IMHO JoliCI sollte auch nur für Travis-Probleme verwendet werden. Aber hey, das ist MHO – elboletaire

0

Wenn Sie Gitlab mit dem Docker-Image dort ausführen: https://hub.docker.com/r/gitlab/gitlab-ce, ist es möglich, Pipelines auszuführen, indem Sie das lokale docker.sock mit einer Volumenoption aussetzen: -v /var/run/docker.sock:/var/run/docker.sock. Durch Hinzufügen dieser Option zum Gitlab-Container können Ihre Mitarbeiter auf die Docker-Instanz auf dem Host zugreifen.

Verwandte Themen