{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/post/automate-build-netlify-with-heroku/",
    "result": {"data":{"site":{"siteMetadata":{"title":"WEB EGG","author":"Leko - CTO at Yuimedi"}},"markdownRemark":{"id":"00c9f6ab-30dd-5789-8418-f45fb59e190d","excerpt":"こんにちは。 前回の記事にてブログをNetlify+Middlemanに置き換えた、と書きましたが、 静的サイトジェネレータを利用したときの弱点の１つである、予約投稿する機能をNetlifyのBuildhookと、Heroku schedulerで再現してみました。 要件 Middleman…","html":"<p>こんにちは。<br>\n<a href=\"/post/migrate-wp-to-middleman-and-netlify/\">前回の記事</a>にてブログをNetlify+Middlemanに置き換えた、と書きましたが、<br>\n静的サイトジェネレータを利用したときの弱点の１つである、予約投稿する機能をNetlifyのBuildhookと、Heroku schedulerで再現してみました。</p>\n<!--more-->\n<h2 id=\"要件\" style=\"position:relative;\"><a href=\"#%E8%A6%81%E4%BB%B6\" aria-label=\"要件 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>要件</h2>\n<ul>\n<li>Middleman自体が未来の日付を指定すると自動で記事を非公開にしてくれるので、それに頼る\n<ul>\n<li>※記事の表示/非表示の切り替えがビルドのタイミング以外（コミットが必要なフラグなど）に依存する場合、今回の記事は要件不足です。あしからず</li>\n</ul>\n</li>\n<li>無料</li>\n<li>可能な限り細かい頻度でビルドできること（１日１回とかだと少ない）</li>\n<li>Gitのログを汚さないこと</li>\n</ul>\n<p>Netlify自体が自動ビルド＋デプロイの機構を備えているため、masterブランチにpushすれば勝手にビルドされます。<br>\nただ、空コミットを作ったりしてGitのログが汚れていくのは嫌だったので、そういった副作用なしに、無料でビルドできる方法を探りました</p>\n<h2 id=\"netlifyのbuild-hookとは\" style=\"position:relative;\"><a href=\"#netlify%E3%81%AEbuild-hook%E3%81%A8%E3%81%AF\" aria-label=\"netlifyのbuild hookとは permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>NetlifyのBuild hookとは</h2>\n<p>Netlifyが提供する、ビルドを叩くためのURLなようです<br>\n管理画面のSettingsから設定ができます。</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">curl -X POST -d '{\"files\":{}}' ビルドフックのURL</code></pre></div>\n<p>でビルドを叩くことができました。<br>\n<code>files</code>のキーがないと、ビルド受付待ちのまま固まってしまったので、この方法でいいのかどうかはわかりませんが、ひとまず動いてるのでよしとします。</p>\n<p>というわけで、単にcurlコマンドを１つ叩けばよいだけなので、選択肢はかなりたくさん有ると思います。</p>\n<h2 id=\"不採用travis-ciのcron機能\" style=\"position:relative;\"><a href=\"#%E4%B8%8D%E6%8E%A1%E7%94%A8travis-ci%E3%81%AEcron%E6%A9%9F%E8%83%BD\" aria-label=\"不採用travis ciのcron機能 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>不採用：Travis CIのcron機能</h2>\n<p>無料なんですが、最短でも1d/1回しかビルドできないので、頻度が足りず断念</p>\n<h2 id=\"不採用aws-lambdaのスケジューリング機能\" style=\"position:relative;\"><a href=\"#%E4%B8%8D%E6%8E%A1%E7%94%A8aws-lambda%E3%81%AE%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E6%A9%9F%E8%83%BD\" aria-label=\"不採用aws lambdaのスケジューリング機能 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>不採用：AWS Lambdaのスケジューリング機能</h2>\n<p>ほぼ無みたいなものですが、完全に無料ではないので見送り</p>\n<h2 id=\"採用heroku-scheduler\" style=\"position:relative;\"><a href=\"#%E6%8E%A1%E7%94%A8heroku-scheduler\" aria-label=\"採用heroku scheduler permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>採用：Heroku scheduler</h2>\n<p>結局使い慣れたHerokuを採用しました。<br>\n最短で10分に1回ビルドできます。無料です。簡単です。</p>\n<h2 id=\"netlifyのbuild-hookとheroku-schedulerで予約投稿する\" style=\"position:relative;\"><a href=\"#netlify%E3%81%AEbuild-hook%E3%81%A8heroku-scheduler%E3%81%A7%E4%BA%88%E7%B4%84%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B\" aria-label=\"netlifyのbuild hookとheroku schedulerで予約投稿する permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>NetlifyのBuild hookとHeroku schedulerで予約投稿する</h2>\n<p>わざわざボタン化するほど自動化できてないのですが、一応Herokuのデプロイボタン作成しました。<br>\n詳しい方法もREADMEに書いてあります。ぜひお試しください。</p>\n<p><a href=\"https://github.com/Leko/Netlify-builder\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Leko/Netlify-builder</a></p>","timeToRead":3,"frontmatter":{"title":"NetlifyとHerokuで予約投稿機能を実現する","tags":["Netlify","Heroku"],"date":"July 11, 2017","featuredImage":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='127'%20viewBox='0%200%20400%20127'%20preserveAspectRatio='none'%3e%3cpath%20d='M51%2048v3h54v-2c0-2-1-3-4-3H88c-1-2-3-1-3%202s-2%203-2%200c-1-2-1-2-4-2h-4l-1-1-2%202-1%202-1-1c1-1%200-2-1-2l-2%202-1-1c-1-2-1-2-3-1h-9c-3-1-3-1-3%202m84-2h-7c-6%200-6%200-6%203v2h27l26-1-1-1-1-2v-1h-2l-3-1-4%201h-1l-3-1-4%201h-1l-1-1-2%201h-17m191%202v3h51v-2c-1-3-9-4-9-1l-1%202-2-2-1-3-1%202c1%201%201%201%200%200-1-2-10-3-11%200v2c0%202-2%201-2-1l-2-2c-2%200-3%201-3%202l-2%202-1-2c1-2-4-3-5-1h-1c0-2%200-2-2-1h-3c-2%200-2%200-2%202s0%202-1%201v-2c1-2%201-2-1-2l-1%203M52%2078c-2%201-1%205%200%205a2247%202247%200%200053-2c0-2%200-2-9-2l-9-1c-2-1-2-1-2%201l-1%203-1-1c0-2-3-3-6-2l-2-1h-1l-3%201-4%201h-1c-1-1-2-2-5-1l-7-1h-2m92%200l-4%201h-15c-2%200-3%200-3%202s-2%202%2031%202c19%201%2022%200%2022-1l-2-1%201-1c1-1%201-1-1-1l-2-1h-15c0%202%200%202-1%201-1-2-1-2-3-1h-8m182%200v3c-1%202-1%203%2023%202%2030%200%2028%200%2028-2%200-1-1-2-4-2-4-1-7%201-5%202l-1%201-1-2-1-2h-7l1%201c2%200%201%202-1%202-2%201-3%200-3-1l-1-3-1%202-1%203-1-2c0-2-5-2-6%200l-1%202-1-1c1-2%200-2-8-2l-6-1h-3M51%20113v3h54v-2c0-2-1-3-4-3H88c-1-2-3-1-3%202%200%202-2%203-2%200l-4-2H69l-2%202-2-1-2-1c-2%201-5%201-9-1-3%200-3%200-3%203m93-2h-4l-3%201h-1l-7-1c-6%200-7%201-7%203v2h26l27-1-1-1v-1c2-1%200-2-3-2h-2l-2-1-3%201h-1l-3-1-4%201h-1l-1-1-2%201h-8m182%202v3h51v-2c-1-3-9-4-9-1l-1%202-2-2c0-2%200-2-6-2s-6%200-6%202l-2%202-1-2-2-2c-2%200-3%201-3%202l-2%202-1-2c1-2-4-3-5-1h-1c0-2%200-2-2-1h-3l-2%202-1%202v-4c1-1%201-1-1-1l-1%203'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":3.150943396226415,"src":"/static/98cdfa59a8f40c6aed1d5e066213a180/8eab8/featured-image.png","srcSet":"/static/98cdfa59a8f40c6aed1d5e066213a180/1ec58/featured-image.png 334w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/ccb4a/featured-image.png 668w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/8eab8/featured-image.png 1336w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/85e22/featured-image.png 2004w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/15260/featured-image.png 2062w","srcWebp":"/static/98cdfa59a8f40c6aed1d5e066213a180/f7e47/featured-image.webp","srcSetWebp":"/static/98cdfa59a8f40c6aed1d5e066213a180/cd98f/featured-image.webp 334w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/7535d/featured-image.webp 668w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/f7e47/featured-image.webp 1336w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/f6b67/featured-image.webp 2004w,\n/static/98cdfa59a8f40c6aed1d5e066213a180/d2ce0/featured-image.webp 2062w","sizes":"(max-width: 1336px) 100vw, 1336px"}}}}}},"pageContext":{"slug":"/automate-build-netlify-with-heroku/","previous":{"fields":{"slug":"/migrate-wp-to-middleman-and-netlify/"},"frontmatter":{"title":"Wordpressで運用していたブログをMiddleman+Netlifyに変更した","tags":["Wordpress","AWS","Middleman","Netlify"]}},"next":{"fields":{"slug":"/benefits-of-node-bluebird/"},"frontmatter":{"title":"ネイティブのPromiseより早いbluebirdのPromiseの便利機能をまとめてみた","tags":["Nodejs","JavaScript"]}}}},
    "staticQueryHashes": ["2585454260","2954598359"]}