我正在嘗試創建一個正確的.gitlab-ci.yml文件。這是針對在線 gitlab.com不適用於自行託管的Gitlab。大多數(如果不是全部)文檔都是關於一個自託管的gitlab實例的。Gitlab Mocha測試和Docker標記問題
我想要的是在構建的容器上運行我的Mocha-Chai測試,當測試通過時,我想構建一個圖像並將其存儲在Gitlab註冊表中,並使用與最新的git標籤匹配的標記。
測試部分
我無法運行測試,無論我嘗試,我總是得到摩卡沒有找到。
以下是我的.yml文件。構建部分正在工作。 問題出在版本映像的測試部分和docker標籤部分。我從官方gitlab文檔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
我也試過
test:
stage: test
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker run $CONTAINER_TEST_IMAGE npm test
和
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
得到了YML文件中的所有相同的結果:
sh: mocha: not found
的測試腳本噸的package.json是
"test": "mocha ./Test",
我都嘗試把摩卡和薛寶釵在devDependencies和依賴性。
"devDependencies": {
"chai": "^4.0.2",
"mocha": "^3.4.2"
}
"dependencies": {
"chai": "^4.0.2",
"mocha": "^3.4.2"
},
標籤部分
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
釋放圖像,如果我離開了標籤的部分工作。 但我真的想讓我的圖像用git標籤標記,而不是最新的或主人。
$ 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
謝謝,這工作。我確實把所有東西都放在我的Docker鏡像中,但是這個回覆讓我朝着正確的方向發展。 @stacktrace感謝您的解釋,很有幫助。但是你的回答是錯誤的,我的基本形象Alpine沒有bash殼,只有sh殼。 –
@EricDelaCruz:很好。考慮到你沒有提到你的基本圖像是什麼,很難真正知道「正確」的答案是什麼。我的觀點是你需要將你的命令封裝在任何可用的shell中,這樣跑步者不會將你的命令分成兩部分。 – Stacktrace
@Stacktrace,是的,這是關鍵。我不確定'mocha'命令是否可以在沒有-g全局安裝的情況下工作。 – Robert