GitLab から ChatWork へ 通知を飛ばす

結論

ChatWork で ChatOps をするのはつらい。

GitLab から ChatWork へ通知を飛ばす

たとえば GitLab への プッシュ をトリガにして ChatWork へ通知(ポスト)したいとします。現在のところ GitLab 自体に ChatWork へ飛ばす仕組みは組み込まれていません。したがって、Webhook を飛ばすしかありません。しかし、Webhook をどう受けてどう流すか。すべての人がぶち当たる問題です。

続きを読む

Jenkinsfile で daemon系(バックグラウンド動作系)の処理が継続できない場合

状況

Jenkinsfile 内のシェルコマンドで、デーモン的なコマンド(バックグラウンドで動作させるようなコマンド)を実行しようとしても実行されない*1

結論

JENKINS_NODE_COOKIE=dontKillMe を daemon コマンドの前に付与する。以下、unicorn-D オプションで起動する場合を例にします。

node {
    stage('deploy') {
        sh('JENKINS_NODE_COOKIE=dontKillMe bundle exec unicorn -D')
    }
}

補足

検索すると引っかかることが多いのですが、以下のように BUILD_ID=dontKillMe を付与しても動作しません。node { ... } の記述法の場合にはこのような書き方では動作しないようです*2

node {
    stage('deploy') {
        sh('BUILD_ID=dontKillMe bundle exec unicorn -D')
    }
}

さらに補足

node { ... } の記述法で……」という話が出ましたのですこし付記します。現在では node { ... } ではなく pipeline { ... } を用いることが推奨されています*3。詳しくは以下のページをご覧ください。

参考(感謝!)

*1:実行はされているが Jenkinsfile の処理を抜けたら終了してしまう

*2:確証が持てるほどまで深く確認していません……すいません

*3:scripted pipeline ではなく declarative pipeline を推奨

GitLab で Webhook を発火させる(飛ばそうとする)と 500エラー が出る場合の対処法

前提

ローカルネットワーク内に Webhook を飛ばす。

結論(対処方法)

  1. Admin でログインする
  2. スパナのアイコンをクリックして Admin Area に入る
  3. メニューの一番下の Settings をクリック
  4. 表示された Settings の詳細画面の一番下の Outbound requests の部分の Expand をクリック
  5. Allow requests to the local network from hooks and services の項目にチェックを入れる
  6. Save changes ボタンを押して適用させる

f:id:gregminster:20180501144625p:plain

背景

最近のバージョンから、ローカルネットワークへ Webhook を飛ばすためには上記の手順が必要になったとのことです*1。今回も Stack Overflow に助けられました。

蛇足

この画面が現れるといつもドキッとします。

f:id:gregminster:20180501144801p:plain

*1:ローカルでなければ上記の手順は不要です

Powered by はてなブログ