2017-12-23 82 views
0

私は現在アプリケーションのビルド、テスト、パッケージ、およびデプロイを自動化するために.gitlab-ci.ymlファイルを作成していますが、ビルドジョブは成功していますが、 (テスト、展開)が失敗しています。Gitlab-CI:テストジョブが失敗しています

私のアプリはSpringbootのWebアプリケーションで、データを格納するMysqlデータベースがあり、私はプロジェクトをビルドするためにmavenを使用しています。

2017-12-23 10:00:33.854 WARN 65 --- [   main] o.a.tomcat.jdbc.pool.ConnectionPool  : maxIdle is larger than maxActive, setting maxIdle to: 50 
2017-12-23 10:00:34.567 ERROR 65 --- [   main] o.a.tomcat.jdbc.pool.ConnectionPool  : Unable to create initial connections of pool. 

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. 
The driver has not received any packets from the server. 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2189) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2222) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2017) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 

あなたは問題が何であるかを知ってもらえ:以下

は、私が受けてるエラーは以下の通りです私.gitlab-ci.ymlファイル

before_script: 
- echo "Execute scripts which are required to bootstrap the application. !" 

after_script: 
- echo "Clean up activity can be done here !." 

stages: 
- build 
- test 
- package 
- deploy 

variables: 
MAVEN_CLI_OPTS: "--batch-mode" 
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" 

cache: 
paths: 
    - .m2/repository/ 
    - target/ 

build: 
stage: build 
image: maven:latest 
script: 
    - mvn $MAVEN_CLI_OPTS clean compile 

test: 
stage: test 
image: maven:latest 
script: 
    - mvn $MAVEN_CLI_OPTS test 

package: 
stage: package 
image: maven:latest 
script: 
    - mvn $MAVEN_CLI_OPTS package 
artifacts: 
    paths: [target/basecamp-0.0.1.war] 


deploy_test: 
stage: deploy 
script: 
    - echo "######## To be defined ########" 
environment: staging 

deploy_prod: 
stage: deploy 
script: 
    - echo "######## To be defined ########" 
only: 
    - master 
environment: production 

のですか?

おかげで、 G.

+0

がローカルでMVNがtest' '実行することができますたぶん問題?とSpringコンテキスト全体を読み込もうとするSpringBootの自動生成テストと、そのためにアプリケーションがデータベースに接続しようとしています。 CI環境にデータベースがないため、テストは失敗します。 – rieckpil

+0

@rieckpilはい、ローカルですべて正常に動作しています。テストはローカルで正常に実行されています。問題は自動生成されたテストではありません。私は実装した単体テストの束を持っています。それらのすべてがローカルで正常に動作しています。 – yimson

+0

ローカルのmysqlを停止して再度テストを実行しようとしました – rieckpil

答えて

0

(例えば、あなたのパイプラインのためにしてみてください、それをコメントアウトするか、新しいclassforテストでのJUnitの@ignoreを使用したテキストは、のように見えるかもしれあなたのSpringコンテキストのテストを見つけて、それを無効にします。

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class YourApplicationTest { 

    @Test 
    public void contextLoads() { 
    } 

} 

データベースは、あなたのテスト中にアクセスすることはできませんので、あなたの例外がスローされますので、詳細な説明といくつかのトラブルシューティングは、ここで見つけることができます:。com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

+0

私はあなたが私に要求したとおりに無視してテストを更新しました。パイプラインをもう一度試してみましたが、同じ問題が発生しています。以前に投稿したのと同じエラーメッセージです。データベースにアクセスできないため、.gitlab-ci.ymlファイルに別のデータベースインスタンスを指定する方法があるため、この問題が発生していると私は理解しています。 – yimson

+0

あなたはSpringコンテキストを読み込む他のテストをしていますか?あなたが望むなら、GitHubにあなたのプロジェクトを公開することができます。私はそれを見ていきます。 – rieckpil

+0

問題は、mysqlインスタンスを持つドッカーコンテナを作成してからテストを正常に実行することです。私は問題が文脈に関係しているとは思わない。私にはたくさんのテストがあります。テストジョブが正常に動作するように、テストジョブでmavenとmysqlを使用してドッカーイメージを実行/指定する方法を教えてください。 – yimson

関連する問題