Skip to main content

4 posts tagged with "Wercker"

View All Tags

· One min read

WerckerでGAEにデプロイしようとしたらエラーが発生。

今回は wercker というサービスアカウントを作成し、WerckerからGAEにデプロイしようとした。

ERROR: (gcloud.app.deploy) PERMISSION_DENIED: Not allowed to get project settings for project PROJECT_ID

このエラーが発生したので「App Engine 管理者」の役割を設定した。

ERROR: (gcloud.app.deploy) Error uploading files: User [wercker@PROJECT_ID.iam.gserviceaccount.com] does not have permission to access b [staging.PROJECT_ID.appspot.com] (or it may not exist): wercker@PROJECT_ID.iam.gserviceaccount.com does not have storage.objects.list access to staging.PROJECT_ID.appspot.com.

このエラーには「ストレージのオブジェクト管理者」の役割を設定した。
「ストレージのオブジェクト作成者」ではエラーが発生した。

[-] IAM - Google Cloud Platform
https://console.cloud.google.com/iam-admin/iam/project
設定はこのページからできる。

参考ページ

[-] WerckerでGAEにデプロイする手順
https://findlog.github.io/55

· 2 min read

Werckerでfirebaseにデプロイする時はこのように書いておけばよい。

deploy:
steps:
- devillex/firebase-deploy@1.1.0:
project: <プロジェクトID>
token: <CI用トークン>
only: hosting

[-] devillexio/wercker-firebase-deploy-step: A wercker step to deploy to Firebase via the Firebase CLI.
https://github.com/devillexio/wercker-firebase-deploy-step
これを使うので難しくはないし、説明もここに書いてある…が注意点がある。

  • プロジェクトIDを用いること。
  • CI用のトークンを使うこと。

· 3 min read

WerckerでGitHubのソースをgit submoduleで活用する場合には準備が必要。

このように単純にgit submoduleを実行するスクリプトを定義しても失敗する。

- script:
name: git submodules
code: git submodule update -i --recursive

必要な準備は次の2つ。

  • SSHキー使用の準備
  • GitHubをknown_hostsに登録する

git submoduleを実行する際にそのサーバーが信頼できることと、パスワードを求められないようにするための施策である。

SSHキー使用の準備

SSHキーの登録はWerckerのサイト内だけで完結する。

[-] wercker - Applications https://app.wercker.com/applications

  1. 上記ページからSSHキーを登録したいアプリケーションを選択する
  2. Environmentタブを選択する
  3. 右下のGenerate SSH Keysをクリックする
  4. 適当な名称を指定してSSHキーを生成する

ここではWERCKER_BLOGという名称でSSHキーを生成したとする。
以上の手順を踏むと次の2つの環境変数が生成される。

  • WERCKER_BLOG_PUBLIC
  • WERCKER_BLOG_PRIVATE

WERCKER_BLOG_PUBLICのValue(公開鍵)をコピーする。

次にGitHubのSSH keysに登録する。

[-] SSH and GPG keys
https://github.com/settings/keys

右上のNew SSH Keyをクリックし、先程コピーしておいた公開鍵を貼り付け、登録を完了する。

wercker.ymlには次のように追記する。

- add-ssh-key:
keyname: WERCKER_BLOG
host: github.com

keynameは先程作った環境変数であり、_PUBLIC_PRIVATEを含まない文字列である。

GitHubをknown_hostsに登録する

GitHubに接続するためにknown_hostsに登録しておく。
単純にwercker.ymlに次の3行を追記するだけである。

- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48

git submoduleに関するwercker.yml

まとめると、wercker.ymlは次のようになる。

steps:
- add-ssh-key:
keyname: WERCKER_BLOG
host: github.com
- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
- script:
name: git submodules
code: git submodule update -i --recursive

· 2 min read

ブログを更新後、きちんと公開されているか確認するため仕組みを用意。
ビルド失敗時と、デプロイ完了時(成功/失敗問わず)はSlackに通知。

SlackでWebhookを作成する

https://slack.com/services/new/incoming-webhook
まずはこのページでSlackのWebhookを作成する。
後述の$Webhook_URLを置き換えるので、Webhook URLを控えておく。

Werckerの設定

SlackのWebhook URLをWerckerから叩く設定。

[-] Slack
http://devcenter.wercker.com/docs/notifications/slack
オフィシャルサイトのドキュメントはこのページ。

実際のwercker.ymlを抜粋する。

build:
steps:
...
after-steps:
- slack-notifier:
url: $Webhook_URL
channel: blog
username: werckerbot
branch: master
notify_on: "failed"

deploy:
steps:
...
after-steps:
- slack-notifier:
url: $Webhook_URL
channel: blog
username: werckerbot
branch: master

channelを間違えると失敗する。
Werckerのログを見ると404になっているから気付くと思う。

usernameはなんでもよい。
Slackの投稿者がusernameになる。