2017-04-15 8 views
0

gitlab CIパイプラインでテストを実行する必要があります。これは私のYAML文書の様子です:Gitlab CI:ドッカーとシェルランナーを使ってパイプラインでテストを実行する方法

before_script: 
    - docker info 

build: 
    script: 
    - docker build -t $CI_REGISTRY_IMAGE:$VERSION . 
    - docker push $CI_REGISTRY_IMAGE:$VERSION 

私はシェルランナーを使用しています。そして今、私は正しいeslintをチェックしたい、のように見えることになる:私はパイプラインでこれを行うことができますどのようモカ

meteor test --driver-package practicalmeteor:mocha 

を使用して、いくつかのユニットテストをしたい第2ステップで

eslint . 

既にビルドされたコンテナ/イメージを使用していますか?これをYAMLファイルにどのように実装する必要がありますか?

答えて

0

私が正しく理解している場合は、新しく構築したコンテナにeslintを実行します。あなたは、任意のリンティングエラーが発生した場合、終了コードは、ジョブが(何をしたい、おそらくです)失敗になります非ゼロでなければなりませんあなたの.gitlab-ci.yml

lint: 
    script: 
    # This step is probably optional 
    - docker pull $CI_REGISTRY_IMAGE:$VERSION 
    # This will run eslint inside the container 
    - docker run -it $CI_REGISTRY_IMAGE:$VERSION eslint . 

に以下を追加することによってそれを行うことができます。

+0

これは、「入力デバイスはTTYではありません」というエラーを表示します。どういう意味ですか? '-t'を削除した場合、' starting container process occurred 'というエラーが出ます。exec:\ "eslint \":$ PATHに実行ファイルが見つかりません " – user3142695

+0

eslintはどのようにコンテナにインストールされていますか? eslintのフルパスを指定するか、$ PATHにeslintを追加する必要があるかもしれません(例えば、コンテナを構築する前にDockerfileにあります)。 – Jawad

+0

eslintはdevDependencyです。あなたは正しい:生産的なビルドでは、devDependenciesはありません。だから私はその生産的なビルドのために私のテストを行うべきですか?または、すべてのテストのために2番目のコンテナを作成する必要がありますか? – user3142695

関連する問題