Goなプロジェクトで使うCircleCIのcircle.yml

も少し綺麗にしたい(´・ω・`)

  • checkout:cd $HOME && git clone ...しているだろうと思って$HOMEを弄ってみたが撃沈
  • pwd:test:では使えないので撃沈
machine:
  timezone: Asia/Tokyo
  environment:
    GO15VENDOREXPERIMENT: 1
    VCS : "github.com"
    REPO_ROOT: "${HOME}/.go_workspace/src/${VCS}/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"

dependencies:
  pre:
    - go get -u github.com/tools/godep
    - go get -u github.com/golang/lint/golint

checkout:
  post:
    - mkdir -p ${REPO_ROOT}
    - cp -rf ${HOME}/${CIRCLE_PROJECT_REPONAME} ${HOME}/.go_workspace/src/${VCS}/${CIRCLE_PROJECT_USERNAME}/

test:
  pre:
    - cd ${REPO_ROOT} && godep restore
    - cd ${REPO_ROOT} && for package in `go list ./...| grep -v vendor`; do golint ${package}; done
    - cd ${REPO_ROOT} && go vet ./...
  override:
    - cd ${REPO_ROOT} && godep go test -cover -bench -benchmem `go list ./... | grep -v /vendor/` -v

CircleCIを使ってAndroidのテストを実行する

プライベートなリポジトリはdroneioでコンテナ作ってビルドから通知までやっていました。
GitHubのリポジトリは折角なのでCircleCIで回すことにしました。
その時に罠があったので紹介します。

cache_directoriesの罠

以下のように記載してました。

dependencies:
  cache_directories:
    - $ANDROID_HOME/platforms/android-23
    - $ANDROID_HOME/build-tools/23.0.1
    - $ANDROID_HOME/extras/android
    - $ANDROID_HOME/extras/google

$ANDROID_HOME/usr/local/android-sdk-linuxと展開されると期待したら、以下のようなwaringが出ていました。

Warning: circle.yml specified cache directories: /home/ubuntu/android-ci/$ANDROID_HOME/build-tools/23.0.1, /home/ubuntu/android-ci/$ANDROID_HOME/extras/google, /home/ubuntu/android-ci/$ANDROID_HOME/platforms/android-23, /home/ubuntu/android-ci/$ANDROID_HOME/extras/android but they don't exist

/から始まるものでないと絶対パスとして扱われない…?罠過ぎる。
変数展開を期待してダブルクォーテーションで囲ってみたが相対パス扱いのままだったのでベタ書きすることにしました。

またandroid list sdk -u -a -eでupdate sdkに使うパッケージ名を出すことができます。

GitHub android-ci

参考