google cloud storageに静的なassetファイルをuploadしておくことによって簡単にCDN化ができるためbuild processに組み込んでしまう。
ポイントはasset-precompile
の部分で
buildしたcontainerを立ち上げるときに -v
で build中のworkspaceをmountしてやること
- docker build
- assets:precompileを実行してbuild実行中の /workspaceに書き込む
- gsutlでcp
steps:
- id: 'build-master'
name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/app:$REVISION_ID', '.']
- id: 'asset-precompile'
name: 'gcr.io/cloud-builders/docker'
args: ['run', '-v', '/workspace/assets-output:/app/public/assets', 'gcr.io/$PROJECT_ID/app:$REVISION_ID', 'bundle', 'exec', 'rake', 'assets:precompile']
- id: 'upload-asset'
name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', '-r', '/workspace/assets-output/*', 'gs://${YOUR_BUCKET}/assets']
参考