Bitbucket使ってますか?
Githubでもprivate repositoryが無限に作れるようになったので最近は使わなくなってしまったのですが、それでもまだ使ってる方は多いかと思います。
今回はBitbucketの便利機能の紹介をします。
Bitbucket Pipelines
Bitbucket Pipelinesとは、Bitbucketに統合されているCI/CDツールです。
便利なところ
- 無課金でも使える
- bitbucket-pipelines.ymlを書くだけで使える
- CI/CD入門にちょうどよい
- Slack通知ができる
つらいところ
- bitbucket-pipelines.ymlを変更しないと動かない
- 導入時に虚無のコミットが生まれやすい
動かしてみる
Go言語で書かれたコードを想定しています。
Go modulesが有効になっているプロジェクトで、go test
するまでです。
コード
bitbucket-pipelines.yml
各言語用にテンプレートが存在しているため、好きな言語で始めることができます。
# This is a sample build configuration for Go. # Check our guides at https://confluence.atlassian.com/x/5Q4SMw for more examples. # Only use spaces to indent your .yml configuration. # ----- # You can specify a custom docker image from Docker Hub as your build environment. image: golang:1.11 pipelines: default: - step: script: # Modify the commands below to build your repository. - PACKAGE_PATH="\${GOPATH}/src/bitbucket.org/\${BITBUCKET_REPO_OWNER}/\${BITBUCKET_REPO_SLUG}" - mkdir -pv "\${PACKAGE_PATH}" - tar -cO --exclude-vcs --exclude=bitbucket-pipelines.yml . | tar -xv -C "\${PACKAGE_PATH}" - cd "\${PACKAGE_PATH}" - go test -v
やっていることは簡単で、リポジトリからコードを落としてきて、go test -v
するだけ
LT.go
package LT func greeting() string { return "Hello." }
LT_test.go
package LT import "testing" func TestGreeting(t *testing.T) { result := greeting() expected := "Hello, World." if result != expected { t.Errorf("greeting() failed. expect:%v, actual: %v", expected, result) } t.Logf("result is %v", result) }
go.mod
Modulesで使用するファイルです。
今回ライブラリを使用していないため一行のみになっています。
module LT
注意
Settings/Pipelines settings
からBitbucket Pipelines
をon
にします。
また、Settings/Repository Variables
からGOMODULE111
をon
にしましょう。
動かしてみる
先程のファイルをbitbucketにpushするとPipelinesが動き出します。
greeting()がHello, World.
でなく、Hello.
を返しているためテスト失敗しています。
以下のように変更しましょう。
package LT func greeting() string { return "Hello, World." }
commit
してpush
するとまたPipelinesが動き出します。
Yay! :tada:
PS
この話は以前のLTをベースにしています!