Help us understand the problem. What is going on with this article?

WerckerからGAEにデプロイ

More than 1 year has passed since last update.

werckerからGAEにデプロイした時にハマったポイントを纏めてみました。

前提

Rails5.1でwerckerからGAEにデプロイするようにしています。
Rubyなので、フレキシブル環境になります。

ただ、Rails以外でも使える部分はあるのかな?って思います。

最終的なwrecker.yml

box: ruby:2.4.1
deploy:
  steps:
    - bundle-install:
        without: test,development
    - create-file:
        name: write credentials.json
        filename: .credentials.json
        overwrite: true
        hide-from-log: true
        content: $GCLOUD_CREDENTIALS
    - script:
        name: Install gcloud
        code: |
          curl https://sdk.cloud.google.com | bash
          source /root/google-cloud-sdk/completion.bash.inc
          source /root/google-cloud-sdk/path.bash.inc
    - script:
        name: deploy to google app engine
        code: |
          gcloud auth activate-service-account $GCLOUD_SERVICE_ACCOUNT --key-file .credentials.json --project $GCLOUD_PROJECT_ID
          gcloud app deploy

解説

bundle-install

- bundle-install:
    without: test,development

これは、試していないけど、多分いらない

create-file

- create-file:
    name: write credentials.json
    filename: .credentials.json
    overwrite: true
    hide-from-log: true
    content: $GCLOUD_CREDENTIALS

$GCLOUD_CREDENTIALSは、サービスアカウントの認証キーのjsonです。p12だとバイナリ?で、wercker管理画面から設定できないので、jsonにしています。

注意点は、jsonファイル中の改行文字\nはエスケープしてあげないと\\nないとビルドが落ちます。

werckerがファイルつくるときに、\nを改行コードに変換してしまっているのではないかな?

Install gcloud

- script:
    name: Install gcloud
    code: |
      curl https://sdk.cloud.google.com | bash
      source /root/google-cloud-sdk/completion.bash.inc
      source /root/google-cloud-sdk/path.bash.inc

boxをgoogle/cloud-sdkにしている人は、不要だと思いますが、rubyにしている私は必要でした。 gcloudコマンド利用できるようにしています。

deploy to google app engine

- script:
    name: deploy to google app engine
    code: |
      gcloud auth activate-service-account $GCLOUD_SERVICE_ACCOUNT --key-file .credentials.json --project $GCLOUD_PROJECT_ID
      gcloud app deploy

$GCLOUD_SERVICE_ACCOUNTはサービスアカウントのメールアドレス(xxxxx@xxxxxx.iam.gserviceaccount.com)
$GCLOUD_PROJECT_IDはProjectID

注意点は、サービスアカウントに権限がないと落ちます。
私の場合は、以下でした。
スクリーンショット 2018-01-02 8.55.01.png

以下は必須。
* App Engine 管理者(デプロイ担当者でも大丈夫かも)
* Cloud Container Builder(フレキシブル環境だから?)
* Cumpute Admin(フレキシブル環境だから?)

他は、CloudStorage、StackDriverとか利用するので、入れましたが、ないとダメなのか試していないです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした