プライベートリポジトリからの checkout
第1世代の appengine は、アプリのディレクトリに必要なファイルをすべて用意しておけば、それをすべて素朴にデプロイしてくれていたのですが、第2世代の appengine にデプロイする場合は、 composer.lock
のモジュールを google のビルドサーバでビルドしてからデプロイされます。
vendor ディレクトリはアップロードされない ので、しれっと vendor
に 闇カスタム したモジュールを置いといても、ロードしてくれませんのでご注意ください。
モジュール等を除いたWEBアプリ自体は、プライベートリポジトリでコード管理される事が一般的だと思いますが、 google のビルドサーバ Cloud build
で composer install
出来ないと appengine にはデプロイ出来ません。
プライベートリポジトリからのチェックアウト方法
composer には、プライベートリポジトリからの checkout を oauth を使って認証する仕組みがあるので、それ使います。
Google のドキュメントも存在し、日本語にも翻訳されているのでそのとおりやるだけです。
実際にやってみる
composer で private repository のモジュールを使う方法。
いつもどおりやんけ、と思うかもしれませんが、 url
は https:// から始まるこの書式のURLでないといけません。
"repositories": [
{
"type": "vcs",
"url": "https://github.com/username/private_package.git"
}
]
非公開レポジトリの使用 より引用。bitbucket でも同じです。
認証ファイル
認証用のファイル auth.json
を app.json
と同じディレクトリに置きます。
app.yaml
がおいてあるディレクトリが公開ディレクトリだと、 auth.json
にもアクセス出来てしまうので document_root
で公開ディレクトリを限定しましょう、と書いてありますが、第2世代の appengine はフロントコントローラー形式でアクセスしなければならないので必然的に大丈夫な気がします。
それはそうとしても、フロントコントローラーのディレクトリとプロジェクトルートディレクトリは分けておいたほうが良い習慣だと思います。
app.yaml
の entrypoint
を公開用のディレクトリ以下にしておくと良いと思います。
auth.json の中身
認証情報を記述した auth.json
ですが、コードホスティングサービス毎に記述方法が異なります。
github の場合
PC版の右上の自分のプロフィールメニューから
- Settings
- 左下の方のメニューの Developer settings
- Register a New application ボタン
からトークンを作ります。
Authorization callback URL
を何でも良いので (自分の管理下で status 200を返せるURL、ぐらいには私は気を使ってますが、意味があるかどうかは知りません) 必ず入力してください。
{
"github-oauth": {
"github.com": "<your-github-auth-token>"
}
}
非公開レポジトリの使用 より引用。
bitbucket の場合
https://bitbucket.org/account/user/あなたのユーザ名/
の
- Oauth メニュー
- OAuthコンシューマ の項目
- コンシューマキーを追加 ボタン
(日本語 UI の場合)
から consumer-key
と consumer-secret
を得られるので、コピペで auth.json
を作る。
注意点は コールバックURL
が必要なくても (appengine にデプロイするためには必要ないと思います) なにか適当な URL を入れておく必要があります。
{
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "<your-oauth-consumer-key>",
"consumer-secret": "<your-oauth-consumer-secret>"
}
}
}
非公開レポジトリの使用 より引用。
以上でデプロイできると思います。