2016-06-01 10 views
1

Ich habe zwei Projekte in Gitlab, wo man ein Submodul (nennen wir Repo "Frontend-Templates") der anderen (nennen wir dieses Repo "Main"). Ich habe einen Gitlab CI Build für das "Frontend-Templates" Repo eingerichtet. Die Sache ist, dass ich nicht testen oder bauen muss. Ich muss nur für dieses CI im benötigten Verzeichnis bereitstellen. Also, ich registriert einen Läufer für „Frontend-Templates“ Projekt und hinzugefügt .gitlab-ci.yml in das Stammverzeichnis:Gitlab CI, wie die neueste zu einem bestimmten Verzeichnis bereitstellen

job_main: 
    type: deploy 
    script: echo "Do nothing" 

Als ich in mein Repository schieben, holt sich der Läufer die letzte commit in das folgende Verzeichnis :

/home/gitlab-runner/builds/6231b425/0/Gasimzada/frontend-templates 

und läuft nur echo "Do nothing".

Nun, ich möchte, dass die Läufer die "getestet" zu implementieren, um den Dev-Server verpflichten, die in befindet:

/var/www/myapp/submodules/frontend-templates 

EDIT: Ich änderte das Skript

script: cd /var/www/myapp/submodules/frontend-templates && git pull 

aber ich einen Fehler bekam sagen:

nicht /var/www/myapp/.git/modules/submodules/frontend-templates/FETCH_HEAD öffnen kann: Zugriff verweigert

Dies macht Sinn, weil Gitlab-Läufer Benutzer keinen Zugriff auf ein beliebiges Verzeichnis in/var/www/myapp hat, aber es für mich ein Problem, weil ich will gulp nach deploy laufen, so stellt es notwendig, Skripte, nachdem es zieht aus dem Remote-Repository.

Soll ich dem Stammverzeichnis der Entwicklungsumgebung die Erlaubnis erteilen? Oder gibt es einen anderen Weg, dies zu tun?

Antwort

5

Sie können einfach eine Form der Bereitstellung unter Verwendung des Verzeichnisses durchführen. Sie können das Verzeichnis des aktuell verwendeten Codes umbenennen/löschen und den Kassencode dort kopieren (rm -rf /var/www/myapp/submodules/frontend-templates && cp -r . /var/www/myapp/submodules/frontend-templates) oder Sie können rsync verwenden, um die Synchronisierung durchzuführen.

Dies sind jedoch keine atomaren Operationen - sie werden Ihren implementierten Code in einem unsicheren Zustand lassen, während sie ausgeführt werden, und in einem Chaos, wenn sie fehlschlagen. Ich würde Ihre /var/www/myapp/Submodule/Frontend-Vorlagen ist nur ein symbolischer Link zu einem Verzeichnis vorschlagen, die den Code enthält:

/var/www/myapp/submodules 
    | - 7348110b 
    | - a03ed59a 
    | - frontend-templates -> ./a03ed59a 

Sie können den Code Verzeichnisse Namen nach dem Hash begehen. Der Job selbst dann könnte wie folgt aussehen:

job_main: 
    type: deploy 
    script: 
    - cp -r . /var/www/myapp/submodules/$CI_BUILD_REF 
    - ln -s ./$CI_BUILD_REF /var/www/myapp/submodules/templink 
    - mv -Tf /var/www/myapp/submodules/templink /var/www/myapp/submodules/frontend-templates 

HINWEIS: Offensichtlich wird der Läufer notwendig Dateiberechtigungen müssen die Aufgaben erfüllen.

+0

können Sie mir helfen? mit diesem? http://stackoverflow.com/questions/42775676/gitlab-google-compute-engine-continuous-delivery – Shial