これは何?
2年前まで知らなかったのですが、MicrosoftはOSSに力を入れています。
最近もVisual Studio CodeがOSSとして公開され、話題になりました。
https://github.com/Microsoft/vscode
そしてAWSなどと同様に、Azureの各種SDKもOSSとしてGithubで公開されており、誰でもForkしてPull Requestを送ることができます。
今回はAzure SDK for PHPにPull requestを送るまでにやったことをまとめてみました。
Pull requestを受け入れてもらうため、Microsoft独特のお作法などがありますので参考になれば嬉しいです。
でも最初に1点だけ。
Azure SDK for PHPはメンテナンスされていない状態です。
(現状、Azure SDK for PHPはメンテナンスされていないようですを 参照)
そのままだとproxyも通せない状態なので、使用するなら他のSDKをおすすめします。
1.Forkして自分のbranchを作る
GithubのリポジトリからForkして、自分の開発用branch(Spike/Prototype branch)を作成します。
GitHubへpull requestする際のベストプラクティス
こちらの解説がとてもわかりやすいのでこちらを参考にしてください。
下記に気をつけてやればOKだと思います。
- masterブランチのまま修正しない。必ず開発用branchを作る
- Githubを見ている人が、ぱっと見で開発用branchとわかるようなbranch名にする
2.Unit Testを通す
開発をスタートする前に、プロダクトのテストコードを使用できる状態にしておきましょう。
Azure SDKのテストコードはAzureの各種サービスを利用します。
そのための接続情報などなど必要に応じて環境変数に定義して上げる必要があります。
長いので下記にまとめました。そちらを参照してください。
Azure SDK for PHPのUnit Testを通すまでにやったこと
3.開発する
1で作成した開発用branchでコードに変更を加えます。
まめにUnit Testを実行しながら変更を加えたほうがいいのですが、全ケースを通すのに数分かかるため
https://phpunit.de/manual/5.0/ja/textui.html
あたりを参考に、必要なテストのみ実行するのもいいかもしれません。
でも最後に全ケースを通す事を忘れずに。
そしてまめにfork元に変更が入っていればいないか確認して、必要に応じて開発用branchに適用しましょう。
具体的なやり方は、GitHubへpull requestする際のベストプラクティスの"fork元の更新に追随する"を参照してください。
4.Pull requestを作成する
開発用Spike/Prototype branchへの変更をひとつにまとめたbranchを作ってPull requestを作成します。
GitHubへpull requestする際のベストプラクティスの"pull request用に過去のcommitを1つにまとめる"、"pull requestする"を参照してください。
5.CLAに署名する
MicrosoftのプロダクトにPull requestを送り、受け入れてもらうためには、必ずContribution License Agreement (CLA) に署名をする必要があります。
署名までの流れは下記が参考になります。
6.リポジトリ管理者のリアクションを待つ
https://github.com/Azure/azure-sdk-for-php/pulls
の自分のPull requestにリアクションがあるのを待ちましょう。
記事本文はここまでです。
[余談]現状、Azure SDK for PHPはメンテナンスされていないようです
Azure SDK for PHPにはいくつか問題があり、Microsoftによるメンテナンスが放棄されている状態です。
自力でメンテナンスする覚悟と余力が無い場合は他のSDKを使用しましょう。
Pull Requestが放置されている
https://github.com/Azure/azure-sdk-for-php/pulls
を見ると、2015/7以降のPull requestにリポジトリ管理者からのリアクションはありません。
機会があったのでMSの人にも聞いてみました。
「内部でも問題視されており、現在他のSDKと足並みを揃えようと準備中」
とのことでした。
でも残念ながら、その話を聞いてから3ヶ月以上経過しています。
対応APIバージョンが古い
ドキュメントでは最新のAPIバージョンは2015-04-01なのですが、Azure SDK for PHPでは2011-10-01までしか対応していません。
const STORAGE_API_LATEST_VERSION = '2012-02-12';
const SM_API_LATEST_VERSION = '2011-10-01';
ついでに書くと、Azure Service Management(ASM)モードにしか対応していない状態です。
今後はAzure Resource Management(ARM)モードが主流になります。
明日12/02は @takekazuomi さんです。
よろしくおねがいしまーす。