LoginSignup
1
1

More than 5 years have passed since last update.

drone.ioでmaven local repositoryをcacheして爆速する

Last updated at Posted at 2018-02-23

TL;NR

  • drone v0.8を自前のクラウドで使いたい
  • maven3でspring bootの自動テストしたい
  • maven3のrepositoryをdrone v0.8のキャッシュプラグインを利用したい
  • ローカルリポジトリのファイルもキャッシュから使いたい
  • データベース連携したテストケースも実行したい

note

  1. .drone.ymlを書く
  2. drone.io上のrepository設定でtrustedを設定する(具体例はググって欲しい)
  3. 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-filemvn dependency:go-offlineで共に-Dmaven.repo.local=/drone/.m2/repositoryしてから、テストケースの実行をしたほうがいい。というのも、テストケースがsuccessにならない限り、rebuild-cacheが実行されず、キャッシュが保存されない。よって、テストのたびに依存ライブラリのDownloadingが行われてしまう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1