2015-04-10 5 views
6

Ich habe einen GitLab CI-Runner, der jedes Mal ausgeführt wird, wenn ich Code in meinem Zweig pushe. Das Problem ist: Ich benutze Npm + Bower, um alle Abhängigkeiten, die ich brauche, aber ich möchte nicht alle Abhängigkeiten für jeden Test herunterladen: es ist eine Verschwendung von Netzwerk und Zeit.Angularjs + Grunt + Laube + Gitlab CI. Setup zum Testen

Also ich kam mit diesem Skript. Macht es irgendeinen Sinn?

touch ~/.bash_profile 
npm config set prefix ~/npm 
export PATH="~/npm/bin:$PATH" 
source ~/.bash_profile 
npm install 
rm -f ~/bower/bower.json 
cp bower.json ~/bower 
pushd ~/bower 
bower update 
bower install 
popd 
mkdir bower_components 
cp -r ~/bower/bower_components bower_components 
grunt test 

Wie dem auch sei, ein Problem, das ich mit Blick auf bin es geht immer auf Timeout mit Bower:

bower angular-cookies#1.2.16     ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/angular/bower-angular-cookies.git", exit code of #128 fatal: unable to connect to github.com: github.com[0: 192.30.252.128]: errno=Connection timed out 

Auch ist es nicht einmal beendet haben, so dass ich bin mir nicht sicher, aber es scheint, Es lädt jedes Paket jedes Mal neu.

Ich habe versucht, im Internet zu suchen, aber ich habe nichts gefunden. Gibt es eine Möglichkeit, das zu erreichen, was ich erreichen möchte? (Auch mit einer völlig anderen Strategie. Ich habe auch SSH-Zugriff auf den Läufer)

+0

Hey, ich versuche das Gleiche zu tun und benutze auch Bower, Npm und Grunt. Aber für mich läuft "npm install" gar nicht durch. Es bricht nach 30 Minuten ab und sagt mir, dass die Ausführung des Befehls zu lange gedauert hat. Funktioniert "npm install" ohne Unterbrechung für Sie? – error1337

+0

@ error1337 ja, es funktioniert. Am Ende passte ich das Skript an, das ich gerade als Antwort gepostet habe, hoffe, dass dies helfen könnte – rpadovani

Antwort

13

UPDATE 2016

Gitlab Läufer verwenden jetzt .gitlab-ci.yml, die Unterstützung für Cache hat.

Dies ist unser Skript jetzt:

image: *****/frontend 

stages: 
    - test 
    - deploy 

before_script: 
    - npm prune 
    - npm install 
    - bower prune --allow-root 
    - bower install --allow-root 

cache: 
    paths: 
    - node_modules/ 
    - bower_components/ 
    key: "$CI_BUILD_REPO" 

sample_test: 
    stage: test 
    script: 
    - grunt build 
    - grunt test 
    - grunt jscs --force 
    - grunt jshint --force 

sample_deploy: 
    stage: deploy 
    only: 
    - master 
    - development 
    script: 
    - grunt build babel uglify:dist 
    artifacts: 
    paths: 
     - dist/ 

Nun ist die interessante Sache key: "$CI_BUILD_REPO" im Cache-Abschnitt - das den Cache gesetzt im Repo das gleiche für alle gebaut werden. Aus diesem Grunde wir npm prune und bower prune verwenden - sicher sein, nur Module, die wir am Ende in der Build ist

ORIGINAL ANTWORT

Also, am Ende benutze ich dieses Skript wirklich brauchen:

rm -f ~/bower/bower.json 
rm -f ~/bower/package.json 
cp bower.json ~/bower 
cp package.json ~/bower 
pushd ~/bower 
npm install 
bower install 
popd 
cp -r ~/bower/bower_components . 
cp -r ~/bower/node_modules . 
grunt build 
grunt test 

, auch Timeout von github zu vermeiden ich https statt git verwenden Code herunterzuladen, mit dem Befehl

git config --global url."https://".insteadOf git:// 
+0

können Sie das vollständige Skript ('scipt.sh' &' .gitlab-ci.yml') teilen? es ist ein .sh, oder? Ich bin auch neugierig, wie Sie den Runner eingerichtet haben (welche Befehle Sie benutzt haben. –

+0

hi @ el.severo, das ist eine alte Konfiguration für eine alte Version von gitlab, als es noch nicht das '.gitlab- ci.yml' - wir haben diesen Server noch nicht in die neue Version konvertiert – rpadovani

+0

ok Ich war nur neugierig, wie Sie das Skript haben würden –