一人もくもく会 α verでサービス開始しました。
請求書作成システム α verでサービス開始しました。

Goのglide環境にてWerckerのCI導入

Go3 Advent Calendar 2017 - Qiita

23日目

GoのアプリケーションのリポジトリをBitBucketに作っているので、WerckerでのCIを試した。

シンプルで綺麗なパスでアプリケーションを作っている場合、 多分Werckerにてアプリケーションを登録する際に表示されるサンプルそのままのwercker.ymlでそのまま動くのではないかと思う。

ただ、今回のアプリケーションはパッケージ管理にglideを使っているのでそのままでは動かない。 ちなみにフォルダ構成としては、下記に降りたところにアプリケーションが入ってる。

/src/myapp

Dockerコンテナ内では上記のルートをGOPATHとしている。ちょっと変な構成。

とりあえず動くところまでを調整してみた。 とりあえずなので変な感じになっている。

box: golang
build:
  steps:
    - setup-go-workspace

    - script:
        name: install glide
        code: |
          curl https://glide.sh/get | sh

    # Gets the dependencies
    - script:
        name: glide install
        cwd: src/crawler/
        code: |
          glide install

    # Build the project
    - script:
        name: go build
        cwd: src/crawler/
        code: |
          export GOPATH=/go/src/bitbucket.org/myaccount/myapp
          go build

    # Test the project
    - script:
        name: go test
        cwd: src/crawler/
        code: |
          export GOPATH=/go/src/bitbucket.org/myaccount/myapp
          go test $(glide novendor)

細かいところを補足していくと、まずglideのドキュメント通りにインストール

curl https://glide.sh/get | sh

最初に書いたとおりパスがちょっと違うので合わせる。

cwd: src/crawler/
code: |
  glide install

パッケージの位置がずれて読み込めていなかったので、exportでGOPATHを指定している。 (ymlの設定であるかも?)

プロジェクトの環境変数を設定すると今度はglideのインストールとかがうまくいかなくなるのでここで指定している。

cwd: src/crawler/
code: |
  export GOPATH=/go/src/bitbucket.org/myaccount/myapp
  go build

こんな感じで通った。

あとはパイプラインでデプロイの処理などと繋げれば楽だと思う。