LoginSignup
2
1

More than 5 years have passed since last update.

プライベートリポジトリを含むモジュールを composer でインストールして appengine にデプロイする

Last updated at Posted at 2018-09-30

プライベートリポジトリからの checkout

第1世代の appengine は、アプリのディレクトリに必要なファイルをすべて用意しておけば、それをすべて素朴にデプロイしてくれていたのですが、第2世代の appengine にデプロイする場合は、 composer.lock のモジュールを google のビルドサーバでビルドしてからデプロイされます。

vendor ディレクトリはアップロードされない ので、しれっと vendor闇カスタム したモジュールを置いといても、ロードしてくれませんのでご注意ください。

モジュール等を除いたWEBアプリ自体は、プライベートリポジトリでコード管理される事が一般的だと思いますが、 google のビルドサーバ Cloud buildcomposer install 出来ないと appengine にはデプロイ出来ません。

プライベートリポジトリからのチェックアウト方法

composer には、プライベートリポジトリからの checkout を oauth を使って認証する仕組みがあるので、それ使います。
Google のドキュメントも存在し、日本語にも翻訳されているのでそのとおりやるだけです。

非公開レポジトリの使用

実際にやってみる

composer で private repository のモジュールを使う方法。
いつもどおりやんけ、と思うかもしれませんが、 url は https:// から始まるこの書式のURLでないといけません。

composer.json
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/username/private_package.git"
    }
]

非公開レポジトリの使用 より引用。bitbucket でも同じです。

認証ファイル

認証用のファイル auth.jsonapp.json と同じディレクトリに置きます。
app.yaml がおいてあるディレクトリが公開ディレクトリだと、 auth.json にもアクセス出来てしまうので document_root で公開ディレクトリを限定しましょう、と書いてありますが、第2世代の appengine はフロントコントローラー形式でアクセスしなければならないので必然的に大丈夫な気がします。

それはそうとしても、フロントコントローラーのディレクトリとプロジェクトルートディレクトリは分けておいたほうが良い習慣だと思います。

app.yamlentrypoint を公開用のディレクトリ以下にしておくと良いと思います。

auth.json の中身

認証情報を記述した auth.json ですが、コードホスティングサービス毎に記述方法が異なります。

github の場合

PC版の右上の自分のプロフィールメニューから

  • Settings
  • 左下の方のメニューの Developer settings
  • Register a New application ボタン

からトークンを作ります。
Authorization callback URL を何でも良いので (自分の管理下で status 200を返せるURL、ぐらいには私は気を使ってますが、意味があるかどうかは知りません) 必ず入力してください。

auth.json
{
    "github-oauth": {
        "github.com": "<your-github-auth-token>"
    }
}

非公開レポジトリの使用 より引用。

bitbucket の場合

https://bitbucket.org/account/user/あなたのユーザ名/

  • Oauth メニュー
  • OAuthコンシューマ の項目
  • コンシューマキーを追加 ボタン

(日本語 UI の場合)

から consumer-keyconsumer-secret を得られるので、コピペで auth.json を作る。

注意点は コールバックURL が必要なくても (appengine にデプロイするためには必要ないと思います) なにか適当な URL を入れておく必要があります。

auth.json
{
    "bitbucket-oauth": {
        "bitbucket.org": {
            "consumer-key": "<your-oauth-consumer-key>",
            "consumer-secret": "<your-oauth-consumer-secret>"
        }
    }
}

非公開レポジトリの使用 より引用。

以上でデプロイできると思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1