Redmine + gitlab 連携で躓いた(その2)

前回の続き。

  • redmine,gitlabを相乗りさせて、nginxをフロントに置く

  • redmine-oauth-providerでredmineユーザによる認証を出来る仕組みを準備

  • gitlab側はomniauth-redmineをインストールして、認証先にredmineを増やす

ここまで進めると、gitlabのログイン画面にredmine認証ボタンが出るようになり、 redmineでの利用許可後はgitlabに戻ってログインとユーザ作成が行われる……はずだった。

status-422

さて、ユーザ作成が行われない。

いろいろ調べた結果、影響元がだいたいこの辺にあった

  • gitlabはユーザ作成後、gitリポジトリ作成などにはusernameを用いる

  • username のフォーマットが「半角英数, '-', '_', '.'」で最後が.gitでないこと [gitlabソース1] [gitlabソース2]

  • OmniAuth経由でユーザを作成する場合、oauthで取得したnicknameかメールアドレスのユーザ名が用いられる [gitlabソース3] [gitlabソース4]

  • omniauth-redmineはnicknameにredmineユーザのメールアドレスを使う [omniauth-redmineソース]

プラグインを修正して対応。

https://github.com/attakei/omniauth-redmine ( 差分 )

多分プラグイン側に若干の柔軟性をもたせる形で修正すれば、やっていけるはず。 ただし、READMEの修正をまだしていないのでプルリクエストを出していない。 ※というか、出すのにビビって躊躇しているだけ