TL;NR
- drone v0.8を自前のクラウドで使いたい
- maven3でspring bootの自動テストしたい
- maven3のrepositoryをdrone v0.8のキャッシュプラグインを利用したい
- ローカルリポジトリのファイルもキャッシュから使いたい
- データベース連携したテストケースも実行したい
note
-
.drone.yml
を書く - drone.io上のrepository設定でtrustedを設定する(具体例はググって欲しい)
- drone.ioでbuildする
.drone.yml
pipeline:
restore-cache:
image: drillster/drone-volume-cache
restore: true
mount:
- /drone/.m2
volumes:
- /tmp/cache:/cache
ttl: 7
when:
event: push
test:
image: maven:3.5.2-jdk-8
commands:
- mvn install:install-file -Dfile=./legacyLibraries/kuromoji-0.7.7.jar -DgroupId=org.atilika.kuromoji -DartifactId=kuromoji -Dversion=0.7.7 -Dpackaging=jar -DgeneratePom=true -Dmaven.repo.local=/drone/.m2/repository
- sleep 10
- export SPRING_PROFILES_ACTIVE=ci-test
- mvn dependency:go-offline -Dmaven.repo.local=/drone/.m2/repository clean test
rebuild-cache:
image: drillster/drone-volume-cache
rebuild: true
mount:
- /drone/.m2
volumes:
- /tmp/cache:/cache
ttl: 7
when:
event: push
services:
database:
image: mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --explicit_defaults_for_timestamp=true --skip-character-set-client-handshake --character-set-filesystem=utf8
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=foo2018
- MYSQL_USER=root
あとがき
drillster/drone-volume-cache
のmountでマウントされるディレクトリ位置やmavenのデフォルトリポジトリパスの指定方法などが分からず四苦八苦したが、なんとか今の設定でキャッシュを使ってのビルドは出来ている。
コツは、1回目は具体的なテストは実行せず、mvn install:install-file
とmvn dependency:go-offline
で共に-Dmaven.repo.local=/drone/.m2/repository
してから、テストケースの実行をしたほうがいい。というのも、テストケースがsuccessにならない限り、rebuild-cacheが実行されず、キャッシュが保存されない。よって、テストのたびに依存ライブラリのDownloadingが行われてしまう。