Bitbucketのコミットメッセージを他のWebサービスに送る

# Bitbucketのコミットメッセージを他のWebサービスに送る
[Bitbucket](https://bitbucket.org)は無料でプライベートリポジトリが使えるので非常に助かっています．
ただ無料だと課題管理が若干弱いので課題の管理は他のサービスで実施してみたくなります．
しかしコミットログを課題に紐づける機能を結構使っている関係でこの機能がなくなるととても不便!になります
ということでWebサービス連携ツールを使ってコミットメッセージを課題の管理しているサービスに送ればよいのでは?と思い実施してみました．

## やりたいこと
Bitbucketのコミットメッセージ/アドレスをAsanaの課題に自動反映したい．
ただし無料で(有料で自動反映するなら機能がそろっているプライベートリポジトリに課金すればよい)

※Bitbucket, Asanaの選定理由は本件とは関係ないため割愛

## Webサービス連携ツール選定
基本ローカルサーバでしか作業をしないのでjenkinsでいいじゃんと思っていたのであまり知りません．
最終的に見つかったのは以下の４つ．今回はIntegromatにしました．

* [IFTTT](https://ifttt.com/)
* [Zapier](https://zapier.com/)
* [MicrosoftFlow](https://flow.microsoft.com/)
* [Integromat](https://www.integromat.com/)

## Integromatで中継する
Integromatのスペック(無料状態)は

* 1000 タスク/月
* 100 MBの転送量/月
* 15 min/interval

とのこと
変わるかもしれないので利用を検討する人は
[Pricing | Integromat](https://www.integromat.com/en/pricing)
で確認してください

今回作ったものは

* Bitbucketで更新されたissueメッセージをAsanaに転記する(3Task)
* Bitbucketの新たなissueをAsanaにも作る(2Task)

なので月に50個issue作って300コミットできる(トリガーを手動にした場合の話なので実際はもうちょっと少ない)．
休日プログラマーには充分ですね．
issueが負担の場合はそれだけ別サービスとかでも無料で行ける気はする．

登録とかScenarioとかの詳しい説明はほかの人が説明しているのでさぼります．

### Bitbucketで更新されたissueメッセージをAsanaに転記する
全体像
![integromat01.png](https://qiita-image-store.s3.amazonaws.com/0/102650/64129caa-8300-1145-9c1d-e79facca2d53.png)

1タスクずつ説明していきます．

まずトリガーとなるタスクを作成します．
![integromat02.png](https://qiita-image-store.s3.amazonaws.com/0/102650/4a946de5-26bc-5e08-d82f-6a9f9eafe557.png)
BitbucketのWatch commentsを使います．設定は流れで実施できます．

次にAsanaのEdit Taskを実施したいのですが，残念なことにBitbucketのissue名とAsanaのTask名を一緒にしても見つけられないのでまずAsanaのTaskIDを探します．ここで若干はまったのが番号が飛んでいる原因．

そのためにまずAsanaの該当プロジェクトのタスク一覧を取得します．これがちょっと通信量が多いのでいや．
![integromat03.png](https://qiita-image-store.s3.amazonaws.com/0/102650/96aaecbc-1f58-c79a-7725-a24f0fd23ac9.png)

次にタスク一覧に対してフィルタをかけます
![integromat04.png](https://qiita-image-store.s3.amazonaws.com/0/102650/f10349d1-89f6-ab05-7004-54520bbbd777.png)
これを通すと次で使うAsana(この図では19番)が絞られて使えるようになります．

最後にAsanaのタスクをアップデートします
![integromat05.png](https://qiita-image-store.s3.amazonaws.com/0/102650/61a72ef8-55bd-a3e5-7d7f-cc11fed4321e.png)
アップデート形式なので追加したいところには以前の状態も入れておかないと消されます．

----
追記部分ここから
実際に使ってみたところリンクが張られませんでした．(気が付かなかった)
ということでリンクの生成をします．非常に見づらいのですが，プログラマならまあわかるでしょうということでご容赦ください．
14文字引いているのはbitbucketではコミットIDの表示が12文字分っぽいのでその分です．無理のある状態なのでいつ使えなくなるのかが不安．
![integromat05-2.png](https://qiita-image-store.s3.amazonaws.com/0/102650/ffb6eeb5-be47-d4da-1367-04640acb49f9.png)

追記部分ここまで

----

```
22. Comment user display name
22. Comment content
--------
19. Notes ←これ
```

あとは更新周期を適当に決めて終わり．
![integromat06.png](https://qiita-image-store.s3.amazonaws.com/0/102650/c0198f4b-e090-1817-8071-a9cd33cad6fe.png)

土日以外にまともに管理しないので土日だけにしておきました．
画像では時間を指定していませんが，指定しないと15分に一回トリガー判断で1タスク消費してしまうため，判断だけで1日96タスク消費してしまいます．発生しそうな時間帯にセットしましょう．即時性なんてほぼいらない運用なので問題なし．
1時間に一回にして１日中監視していてもいいかもしれません．気が向いた感じにします．

これで完了．Bitbucketにコミットする際のコミットメッセージでrefs ticket [課題番号]としておけばBitbucketの機能で課題にリンクを張ってくれるのでそれを検知してAsanaに転記してくれます．
無料でできた．うれしい．

### Bitbucketの新たなissueをAsanaにも作る
私が作ったかのように書いていますが，以下のテンプレートです．
タスク量が余ったので採用しておきました．余るって素晴らしい．

[Create Asana tasks from new Bitbucket issues](https://www.integromat.com/en/integration/249-create-asana-tasks-from-new-bitbucket-issues)
## 番外編
没になった者たちの紹介

### IFTTT
Qiitaで見る中継サービスとしてイメージが強い．
残念なことにAsanaのTaskアップデートには対応していなかった

### Zapier
中継サービス業界では機能的に最強らしい
実際すぐにできたのだが，無料だと月100タスクしか実施できない．
今回の連携は１コミット当たり３タスクとなり月33コミットしかできないため泣く泣く没

作り終えてから気が付くという悲しみ．
悲しいので設定例を載せます．

全体像
![zapier01.png](https://qiita-image-store.s3.amazonaws.com/0/102650/83af0730-e020-6ed8-6cdc-93708ff007b7.png)

2番のタスク名抽出
![zapier02.png](https://qiita-image-store.s3.amazonaws.com/0/102650/b2575135-d39f-a769-be6d-5fb53e72798d.png)

3番のタスク名からタスクID検索
![zapier03.png](https://qiita-image-store.s3.amazonaws.com/0/102650/6bcc779a-709a-90b4-bb71-27b46b6605c8.png)

4番の3番で見つけたタスクIDに対しての1番のコミットメッセージ足しこみ
![zapier04.png](https://qiita-image-store.s3.amazonaws.com/0/102650/ddecc564-ea88-6a0c-533e-20e633ee0f7a.png)

### MicrosoftFlow
BitbucketはPremiumらしくしようできない．
使うまでもなく没