2015-07-30 27 views
5

Ich verstehe immer noch nicht ganz den Prozess für eine gitlab-ci Multi-Runner zu einem Docker starten und interagieren mit dem Code.GitLab-CI Multi-Runner-Start-Docker-Container

Kann ein gitlab-ci-Multi-Runner einen Andock-Container mit dem aktuellen Code in diesem Andock-Container starten und dann Tests mit diesem Code ausführen? (z. B. Code-Linting)

Ich möchte grundsätzlich einen Docker-Container, der verschiedene Linters installiert hat. Der GitLab-CI-Multi-Runner sollte auf dem Host-System laufen und den Andock-Container auf Anforderung starten. Innerhalb des Docker-Containers sollte der Code zum Beispiel gegen phpcs geprüft werden.

Wie bekomme ich den Repo-Code in den Docker-Container?

Danke für die Hilfe

Antwort

1

Zuerst Gitlab-Läufer braucht die Docker Buchse wie in der documentation beschrieben montiert haben:

docker run -d --name gitlab-runner --restart always \ 
-v /var/run/docker.sock:/var/run/docker.sock \ 
-v /srv/gitlab-runner/config:/etc/gitlab-runner \ 
gitlab/gitlab-runner:latest 

Danach müssen Sie den Läufer registrieren:

  1. Docker als Executor.
  2. das Docker-Bild mit dem Linters Sie wollen als Docker Bild.
0

Jeder docker client werden die Befehle an die docker daemon, wird der Docker Daemon auf den lokalen Port wie HTTP, TCP oder Unix-Socket weiterleiten hören.

Wenn Sie Container wie folgt beginnen:

Docker Lauf -d --name Gitlab Starter --restart immer \ -v /var/run/docker.sock:/var/run/docker .sock \ -v/srv/Gitlab Starter/config:/etc/Gitlab Starter \ Gitlab/Gitlab Starter: neueste

Alle docker Befehle an den Host weitergeleitet werden, da die docker war Hören auf unix:///var/run/docker.sock

PS: Du nedd installierst Docker im gitlab-runner Container

0

Ich weiß, diese Frage ist alt, aber ich dachte ich antworte trotzdem, da ich im Moment an ähnlichen Sachen gearbeitet habe und dachte ich würde es gerne machen Beantworten Sie es in einem größeren Maßstab, um eine grundlegende Idee, einen Ausgangspunkt, den Build-Prozess mit GitLab-CI zu verstehen.

Es gibt verschiedene Möglichkeiten, einen Gitlab-Runner auf einem System zu installieren, wie beschrieben here. Es wird immer darauf ankommen, den Runner zu installieren und danach den Runner bei deiner gitlab-Instanz zu registrieren.

Sie werden durch den Registrierungsprozess here geführt. Während des Registrierungsprozesses müssen Sie den Executor auswählen, auf dem die Builds realisiert werden. Diese können ssh, docker + machine, docker-ssh + machine, kubernetes, docker, parallels, virtualbox, docker-ssh und shell: docker sein.

Angenommen, Sie wählen docker als Executor. Sobald ein Build an Ihren Runner übergeben wurde, wird ein Build-Container gestartet, in dem der Build ausgeführt wird. In einigen Projekteinstellungen wird kein Bild als "Basisumgebung" definiert. Während der Runner-Registrierung (Docker Executor) werden Sie aufgefordert, ein Standard-Image zu definieren, das als Build-Container verwendet werden kann, die Umgebung für Ihren Build.

Wenn Sie also ein Projekt haben, das keine 'Basisumgebung' definiert, müssen Sie eines auswählen, das Ihre Buildanforderungen erfüllt. Z.B. Wenn Sie Ihr Build in einem Ant-Skript ausführen, benötigen Sie entweder ein Image, das amt installiert hat, oder Sie müssen ant in Ihrem .gitlab-ci.yml einrichten.

In der .gitlab-ci.yml beschreiben Sie Ihre Build-Pipeline (n) (see more about that here). Dort können Sie auch genauer definieren, wie Sie Ihren Repo in Ihren Build-Container klonen. Aber mit der Standardkonfiguration wird das Klonen immer dann stattfinden, wenn ein Mitwirkender Änderungen an Ihrer Code-Basis an das git (lab) -Repository weitergibt.

Für GitLab müssen Sie das integrierte Git-Repository verwenden. Dadurch kann GitLab die Repos ohne weitere Konfiguration klonen (neben der administrativen Konfiguration müssen Sie GitLab einrichten und warten).

Sie können den Build-Container mit zusätzlichen Containern ("Services") unterstützen, z. Ein Datenbankcontainer für die Tests, die während des Erstellungsprozesses ausgeführt werden.

Für weitere Informationen siehe auch https://docs.gitlab.com/runner/ und https://docs.gitlab.com/ee/README.html