Ich versuche, eine korrekte .gitlab-ci.yml Datei zu erstellen. Dies ist für die online gitlab.com nicht für ein selbst gehostetes Gitlab. Die meisten (wenn nicht alle) Dokumentation handelt von einer selbst gehosteten Gitlab-Instanz.Gitlab Mocha Tests und Docker Tag Probleme
Ich möchte meine Mocha-Chai-Tests auf dem gebauten Container ausführen und wenn die Tests bestanden haben, möchte ich ein Bild erstellen und es in der Gitlab-Registry mit einem Tag speichern, das meinem letzten Git-Tag entspricht.
Test-Teil
Ich kann die Tests zum Laufen bringen, was auch immer ich versuche, erhalte ich immer Mokka nicht gefunden.
Unten ist meine . Datei. Der Build-Abschnitt funktioniert. Das Problem liegt in der Test-Sektion und im Docker-Tag-Teil des Release-Images. Ich habe die yml Datei aus der offiziellen Gitlab Dokumentation the official gitlab documentation
image: docker:latest
services:
- docker:dind
stages:
- build
- test
- release
- deploy
variables:
CONTAINER_TEST_IMAGE: registry.gitlab.com/edelacruz/cloudtrader-microservices:$CI_COMMIT_REF_NAME
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/edelacruz/cloudtrader-microservices:latest
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com/edelacruz/cloudtrader-microservices
build:
stage: build
script:
- docker build --pull -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
test:
stage: test
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker run $CONTAINER_TEST_IMAGE npm install && npm test
Ich habe auch versucht
test:
stage: test
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker run $CONTAINER_TEST_IMAGE npm test
und
test:
stage: test
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker run $CONTAINER_TEST_IMAGE npm install mocha -g
- docker run $CONTAINER_TEST_IMAGE npm install chai -g
- docker run $CONTAINER_TEST_IMAGE npm test
die alle das gleiche Ergebnis:
sh: mocha: not found
die Test Scrip t in package.json ist
"test": "mocha ./Test",
Ich habe versucht, beide setzen Mokka und chai in den devDependencies und in Abhängigkeiten.
"devDependencies": {
"chai": "^4.0.2",
"mocha": "^3.4.2"
}
"dependencies": {
"chai": "^4.0.2",
"mocha": "^3.4.2"
},
Tag Teil
variables:
CONTAINER_TEST_IMAGE: registry.gitlab.com/edelacruz/cloudtrader-microservices:$CI_COMMIT_REF_NAME
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/edelacruz/cloudtrader-microservices:latest
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com/edelacruz/cloudtrader-microservices
release-image:
stage: release
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE:$CI_COMMIT_TAG
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master
Das Release-Bild funktioniert, wenn ich den Tag-Teil auslassen. Aber ich möchte wirklich mein Bild mit dem Git-Tag getaggt haben, nicht mit den Ends oder Master.
$ docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE:$CI_COMMIT_TAG Error parsing reference: "registry.gitlab.com/edelacruz/cloudtrader-microservices:" is not a valid repository/tag: invalid reference format ERROR: Job failed: exit code 1
Danke, das hat funktioniert. Ich habe schließlich alles in mein Docker-Bild gelegt, aber diese Antwort hat mich in die richtige Richtung gebracht. @stacktrace danke für deine Erklärung, hilfreich. Aber deine Antwort war falsch, mein Basisbild Alpine hatte keine Bash Shell, nur die Sh Shell. –
@EricDelaCruz: Das ist in Ordnung. Wenn man bedenkt, dass Sie nicht angegeben haben, was Ihr Basisbild war, ist es schwer zu wissen, was die "richtige" Antwort wäre. Mein Punkt war, dass Sie Ihren Befehl in jede verfügbare Shell einbinden müssen, damit der Runner Ihren Befehl nicht in zwei Teile aufteilt. – Stacktrace
@Stacktrace, ja, das war der Punkt. Ich bin mir nicht sicher, ob der 'Mokka'-Befehl ohne globale Installation funktionieren kann. – Robert