正しい.gitlab-ci.ymlファイルを作成しようとしています。 オンライン gitlab.comは自己ホストGitlabではありません。たいていの場合(すべてではないにしても)ドキュメントは自己ホストgitlabインスタンスに関するものです。Gitlabモカテストとドッカータグの問題
構築したコンテナでMocha-Chaiテストを実行し、テストが合格すると、イメージを作成し、最新のgitタグと一致するタグを付けてGitlabレジストリに保存します。
テスト一部
私はいつもモカがを見つけていない取得してみてください何でも、実行中のテストを取得することはできません。
以下は私の.ymlファイルです。ビルドセクションが機能しています。 問題は、テストセクションとリリースイメージのドッカータグ部分にあります。私はまた、
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
を試してみました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
公式gitlabドキュメントからYMLファイルを持って、すべて同じ結果:
sh: mocha: not found
テストスクリプトpackage.jsonでtは私がdevDependenciesにし、依存関係に入れモカとチャイの両方を試してみました
"test": "mocha ./Test",
です。私は、タグの一部を省略する場合
"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 run $CONTAINER_TEST_IMAGE npm install && npm test
付き)あなたの最初の試みで
$ 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
ありがとうございました。私はすべての後に私のドッカーの画像にすべてを入れましたが、この返信は正しい方向に私を得た。あなたの説明のために@stacktraceに感謝します。しかしあなたの答えは間違っていました。私のベースイメージアルパインにはbashシェルがなく、shシェルだけでした。 –
@EricDelaCruz:これは問題ありません。あなたの基本イメージが何であるかは言及していないことを考慮すると、「正しい」答えが実際に何であるかを実際に知ることは難しいです。私の要点は、ランナーがあなたのコマンドを2つに分割しないように、どんなシェルでもコマンドをラップする必要があるということでした。 – Stacktrace
@Stacktrace、はい、それがポイントでした。 'mocha'コマンドが-gグローバルインストールなしで動作できるかどうかはわかりません。 – Robert