werckerでs3にdeployしてみた
個人プロダクトをnuxt.jsを使ってSPAを書いているのですが、楽にデプロイしたいと思って、werckerを使ってみました。
werckerはTravis CIなどと同様のCIのサービスで、フリープランでもprivateリポジトリに対して導入できるという特徴があります。
wercker自体の導入は簡単で、wercker側でリポジトリの登録をして、登録したリポジトリに対して、wercker.ymlを入れるだけです。wercker.ymlはシンプルなものであれば、導入時にテンプレートが用意されているので、それを軽く修正する形で問題ないと思います。私の場合は、nuxt.jsで書いたアプリをbuildしたかったので、node環境のテンプレートを修正する形にしました。
以下が私が書いたものの一部です。本来はbuild stepを分けるべきなんですが、werckerのworkflowがうまく組めなかったので、諦めてdeploy stepに全部書いてます。
deploy: steps: - npm-install - script: name: build nuxt code: | npm run build - s3sync: key_id: $AWS_ACCESS_KEY key_secret: $AWS_SECRET_KEY bucket_url: $AWS_BUCKET_URL source_dir: dist/
s3にデプロイしている部分はs3sync
です。s3syncには、deploy用に作成したIAMユーザーのaccess keyとaccess secret keyを設定します。bucket_urlは配置するバケットのurlを乗っければいいです。例えば、hogehoge
というバケット名であれば、s3://hogehoge
でいけます。source_dirはs3に送るディレクトリになります。
ここで変数で指定している部分については、wercker側で設定する値になります。あとは、wercker側でpush時にpipelineが走るようにすれば概ね完了です。
あとは、pushしてしまえば、wercker側でpipelineが走って、上記だとs3にdistが配布されることになります。