我正在尝试创建一个正确的.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