私はちょうど私のアプリを展開するだけでなく、テストを実行するためにGitLab CIを使用したいと思います。私は、アセンブリこれに管理する.yml
ファイル:
image: java:8
stages:
- build
- test
build:
stage: build
script: ./gradlew build
artifacts:
paths:
- build/libs/myApp-4.0.0-SNAPSHOT.jar
unitTests:
stage: test
script:
- ./gradlew test
そしてGitLabパイプラインIに次のエラーが表示されます。
引き起こさar.com.sebasira.myApp.myAppApplicationTests> contextLoads FAILED java.lang.IllegalStateException:org.springframework.beans.factory:によって引き起こさorg.springframework.beans.BeanInstantiationException:org.springframework.beans.factory.BeanCreationExceptionはによって引き起こされます。引き起こさorg.springframework.beans.BeanInstantiationException:によって引き起こさBeanCreationException org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException
私は右、これはデータベースに関連している可能性が推測していますか?私はランナーが私のサーバーで資格情報を使用してそのデータベースを提供する必要がありますか?
もしそうなら、私はそれをどのようにすればよいですか?I'currently使用してapplication.properties
DBへの接続を定義するファイルを。
そして、1つの以上の質問... .gitlab-ci.yml
私はへのパスを配置する必要があり、ファイル.jar
名は、私は私のアプリのバージョンを更新毎回変更されることはなく。私はそれを手動で変更する必要がありますか?
あなたがこのテストで全体Springコンテキストを開始されると注釈付き(私はそれは春ブーツから生成された標準的なテストだと思います)@RunWith(SpringRunner.class)
と@SpringBootTest
、あなたは、データソースを提供する必要があります。あなたは、次のいずれかを実行できます。
- お使いのデータベース資格情報の指定
application.properties
ではsrc/test/resources
(私はすべてのテストに本番データベースに接続していないだろうと、あなたは、データベース・サーバー上のテスト・データベースを提供することができます) - 組み込みを使用し
H2
、このテストのために - 使用https://www.testcontainers.org/を Springアプリケーションのテストのために本物の、新鮮なデータベースを提供するために、
あなたのGitlabCIの質問について:ちょうど使用すると、*
任意の一致するように.jar
、どのバージョンにかかわらず:- build/libs/myApp-*.jar