com4dc’s blog

Javaプログラマーのはずだけど運用してます

Spring Securityに微修正Pull Requestを初めて送った

普段業務ではSpring BootとSpring Securityをメインで実装に利用している。 現在使っているSpring Securityのバージョンが2系で古く、Spring Security 5を調査する必要があった。

そもそも Spring Security 5.x系自体出てすでに数年経過しているので、それなりに日本語の情報もある。のだが、微妙にバージョンによってプロパティ名が違ったりして都度試行錯誤しながら検証している。

そんな中公式のリファレンスを参照していたところ、間違いではないのだが他のプロパティ名とフォーマットが違うものが一つだけあるのに気がついた。

docs.spring.io

spring.security.oauth2.client.provider.[providerId].user-name-attribute

すでにバックポート修正済みだが、この箇所が元々 userNameAttribute になっていた。

というのをTweetしたところ「コントリビュートチャンス!」と言われたので素直に従ってみた。

Spring Security

Githubリポジトリは以下。

github.com

該当のファイルは以下のパスにあった。

  • docs/manual/src/docs/asciidoc/_includes/servlet/oauth2/oauth2-login.adoc

adoc という形式を初めてみたのだが、 AsciiDoc というものらしい。

AsciiDoc - Wikipedia

該当箇所を修正する。

まずは Issue をたてる

小さいとはいえ、リリースされているドキュメントを修正するのだから Issue は立てておくべきだろう、と思って Issue を立てた。他のOSSとは違ってあまり厳格な Issue のガイドラインがないようだ。 ISSUE TEMPLATE と他の Issue を参考にして修正Issueをあげた

userNameAttribute case style is different others · Issue #8169 · spring-projects/spring-security · GitHub

とても適当な英語で恐縮なのだが、内容は伝わったらしい。 Label が自動的につけられ Triage 待ちになった。とりあえずやってみるか精神でやっていたので、この時点でPull Request の作成も開始した。

Repository を Fork する

どうやら他のPull Requestを見ると、リポジトリを Fork して修正した内容を本流へ Pull Request として作成するのが正しい手順のようだ。このタイプの作業は始めてだったので、Github公式のドキュメントを参照した。

フォークからのプルリクエストの作成 - GitHub ヘルプ

手順に従って以下を実施した。

  1. Repository を Fork して自身のアカウント配下に置く
  2. fix ブランチを作成する。
    • gh-8169-fix-property-case-style こんな名前のブランチで作った。Issue 番号と概要。
    • こちらも色々探したものの厳格なガイドラインがなかったので見様見真似
  3. 修正する
  4. fix ブランチを Push
  5. 一応最新になっているかを確認するために、本流のmasterを取り込んでrebaseする。
  6. spring-projects:master に向けて Pull Request を作成する

やったことはこれだけ

Fix userNameAttribute property case style by komuro-hiraku · Pull Request #8171 · spring-projects/spring-security · GitHub

PR 作成後の手順

その後いくつかやることがあった。

Pivotal Contribute License

Pivotal Contribute License へAgreement する必要があった。そのためGithubアカウントとリンクさせて、いくつかの会社の情報等を入力する。すると、以下のようにCIが進んでいく。

f:id:com4dc:20200409000839j:plain

Reviewer Check

Reviewer がアサインされ、適切なLabelを付与してくれる。そして指摘事項がある場合はコメントが来る。自分の場合は、適切なCommit Messageじゃなかったようだ。Issue とのリンクをするためにCommit Messageを変更してほしいとのこと。

fixes gh-XXX とすると PR Close 時にちゃんとIssue側もCloseしてくれるらしい。知らなかった

修正したものが問題ないと、Mergeされる

f:id:com4dc:20200409001314j:plain

感想

とてもとても小さい修正だったが、初めてOSSへPRを出すことができた。それなりにハードルはあるが「Thanks」と言われ、無事Mergeされた時はうれしかった。これをきっかけに少しずついろんなOSSに積極的にPull Requestを送れるようになれば良いな。

なかなか自分一人ではやろうとすら思わなかったので、背中を押してくれた友人に感謝だ(本人はあんまりそんなつもりはなかったかもしれないが)