Middleman ã§ä½ã£ã web ãµã¤ãã Travis + GitHub pages ã§ãæè»½ã«éç¨ãã
å æ¥ Middleman ã使ã£ã¦ sapporojs.org ããªãã¥ã¼ã¢ã«ãã¾ããã ãã®éã«å¾ããã Middleman ã§ã® web ãµã¤ãéç¨ã®ç¥è¦ããç´¹ä»ãã¾ãã
Middleman ã£ã¦??
ç°¡åã«èª¬æããã¨ãéç web ãµã¤ãã¸ã§ãã¬ã¼ã¿ã§ãã Jekyll ããåç¥ã®æ¹ã§ããã°ãä¼¼ããããªãã®ãã¤ã¡ã¼ã¸ãã¦ããã ããã¨ããããã§ãã Middleman ã®æ¹ãåªãã¦ããç¹ã¯ã Asset Pipeline ã Template Helpers ãªã©ã®ä¾¿å©ãªæ©è½ãå©ç¨ããããã¨ãã§ãããã¨ã§ãã
éã« Jekyll ã®æ¹ãæå©ãªç¹ã¨ãã¦ã¯ã GitHub pages ã使ãããããããã¤ã楽ã§ããã¨ããç¹ãããã¾ãã
ããã§ä»åã¯ã Jekyll ã¨åãã Middleman ã GitHub pages ã«ç°¡åã«ãããã¤ããæ¹æ³ããç´¹ä»ãã¾ãã
æµã
Middleman ã®ãã£ã¬ã¯ããªæ§æã¯ããã¾ãã«ã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ã:
. âââ build (çæããã html) âââ source (人éãç·¨éãããã¡ã¤ã«)
Middleman ã§çæãã web ãµã¤ãã GitHub pages ã§å
¬éããããã«ã¯ãbuild
ãã£ã¬ã¯ããªã root ãã£ã¬ã¯ããªã¨ã㦠gh-pages ãã©ã³ãã« push ããå¿
è¦ãããã¾ãã
ãã®ãã以ä¸ã®ãããªæé ãè¨å®ãããããã¤ãèªååãããã¨ã«ãã¾ã:
- Travis ã§ãã«ããã
- Travis ã§ commit ã使ãã
- Travis ãã GitHub pages ã« push ãã
æºå
ã¾ã㯠Middleman ããã¸ã§ã¯ãã®ç¨æãã¾ãããã
ã使ãã®ããã¸ã§ã¯ããããã°ãããããªããã° middleman init
ãããã®ãå©ç¨ãã¾ãã
ã¾ããããã¤ç°å¢ã«ã¯ãGitHub pages ãå©ç¨ãããããGitHub ã«ãªãã¸ããªã使ãã¦ããã¾ãã
source
ã®ç®¡ç㯠master ãã©ã³ãããããã¤ç¨ã« gh-pages ãã©ã³ããå©ç¨ãããã¨ã¨ãã¦ã説æãã¾ãã
1. Travis ã§ãã«ããã
ã¾ãã¯ãTravis ã®è¨å®ããããªãã¾ãã 詳ããã¯æ¬å®¶ãµã¤ããåç §ãã¦ãã ããã
æå
ã§ .travis.yml
ã使ãã¾ãã
--- language: ruby script: bundle exec middleman build
ããã§ãGitHub ã« push ããéã« Travis ã§ãã«ããå®è¡ãããããã«ãªãã¾ããã
2. Travis ã§ commit ã使ãã
Travis ã 㨠Git ã« user.name
, user.email
ã®è¨å®ãããã¦ããªãããããã®ã¾ã¾ã 㨠commit ãä½ãã¾ããã
ããã§ commit ãä½ãããã«å¿
è¦ãªç°å¢å¤æ°ãè¨å®ãã¾ãã
.travis.yml
ã«ä»¥ä¸ã追è¨ãã¾ãã
env: global: - GIT_COMMITTER_NAME=<åå> - GIT_COMMITTER_EMAIL=<Eã¡ã¼ã«> - GIT_AUTHOR_NAME=<åå> - GIT_AUTHOR_EMAIL=<Eã¡ã¼ã«>
(ååãEã¡ã¼ã«ã¯é©å®è¨å®ãã¦ãã ãã)
ã§ã¯ãgh-pages ãã©ã³ãã clone ãã¦ãã¦ã ãã«ããæåãããã¨ã§ commit ãéããããè¨å®ãè¡ãã¾ãããã
.travis.yml
ã«ä»¥ä¸ã®å
容ã追è¨ãã¾ãã
before_script: - git clone --quiet <ãªãã¸ããªã®URL> build - pushd build - git checkout -b gh-pages - popd after_success: - cd build - git add -A - git commit -m 'Update'
(ãã®æããªãã¸ããªURL ã«ã¯ ssh ãããã³ã«ãå©ç¨ããªãããã«ãã¦ãã ãããæ¥ç¶å ã® fingerprint ã®ç¢ºèªãæ±ãããã¦å ã«é²ããã¨ãã§ããªããªãã¾ã)
ããã§ãTravis ã§ git ã® commit ã使ãããã¨ãã§ããããã«ãªãã¾ããã
3. Travis ãã GitHub pages ã« push ãã
Travis ãã GitHub ã« push ããããã«ã¯ä¸å·¥å¤«å¿ è¦ã§ãã ã¨ããã®ã¯ãGitHub ã®èªè¨¼ã Travis ããééããå¿ è¦ãããããã§ãã
ãã®ããã«ã¯ã以ä¸ã§è°è«ããã¦ããããã«ãhttps ãããã³ã«ã§ GitHub ã® OAuth ãã¼ã¯ã³ãå©ç¨ãã ã¨ããã®ãã·ã³ãã«ãªæ¹æ³ã§ãã
ã§ã¯ãGitHub ã®ãã¼ã¯ã³ãåå¾ãã¾ãããã(ãã§ã«å©ç¨å¯è½ãªãã¼ã¯ã³ããæã¡ã§ããã°ãã®æé ã¯ã¹ããããã¦ãã ãã) 以ä¸ãåèã«ããã¼ã¯ã³ãåå¾ãã¦ãã ãã:
ãã®æã scope ã« repo ãå¿ è¦ãªã®ã§å¿ããè¨å®ãã¦ãã ããã
ä¸è¨ã§åå¾ãããã¼ã¯ã³ã Travis ã«è¨å®ãã¾ãããã
ãã®æã.travis.yml
ã«æ¸ãã° GitHub ã«ã¯ã¢ã¯ã»ã¹å¯è½ã«ãªãã¾ãããpublic ãªå ´æã«ç½®ãã¨èª°ã§ããã¼ã¯ã³ã®æ¨©éãå©ç¨å¯è½ã«ãªã£ã¦ãã¾ãã®ã§æ¨å¥¨ããã¾ããã
ããã§ãTravis ã® API ãå©ç¨ãã¦å®å ¨ã«è¨å®ãããã¨ã«ãã¾ãã
(åå㯠Travis ã¸ã®ãã°ã¤ã³ãæ±ãããã¾ã)
$ gem install travis $ travis encrypt -r <ãªãã¸ããªå> "GH_TOKEN=<GitHub ãã¼ã¯ã³>"
secure XXX ã¨ããå¤ãè¿ã£ã¦ããã®ã§ãããããã®ã¾ã¾ .travis.yml
ã® global -> env ã«è¿½è¨ãã¾ãã
env: global: - secure: <Travis ã®ã»ãã¥ã¢ãã¼>
ãã®ãã¼ã¯ã³ãå©ç¨ã㦠GitHub ã« push ããè¨å®ã .travis.yml
ã«è¿½è¨ãã¾ãã
after_success: - cd build - git add -A - git commit -m 'Update' + - '[ "$TRAVIS_BRANCH" == "master" ] && [ $GH_TOKEN ] && git push --quiet https://[email protected]/<ãªãã¸ããªå>.git gh-pages 2> /dev/null'
git push
ããéã®ãªãã·ã§ã³ã«æ°ãã¤ãã¦ãã ããã
ããã§ --quiet
ã®è¨å®ãå¿ããã¨ãTravis ã®ãã°ã« GitHub ã®ãã¼ã¯ã³ã表示ããã¦ãã¾ãã¾ãã
以ä¸ã§ Travis ãã GitHub ã« push ããè¨å®ã¯å®äºã§ãã
ããã§ã master ã« push ããã ãã§ãTravis çµç±ã§ GitHub pages ã«èªåã§ãããã¤ãããããã«ãªãã¾ããã ã¹ãã!!
åè
ã¾ããæå
ããã gh-pages ã« push ããããªãã¨ããå ´åããããã¨æãã¾ãã
ãããªæã¯ Rakefile
ã«å¦çãåãåºãã¨ããã®ã¯ãããã§ãããã?
åèã¾ã§ã«ãã¼ããå©ç¨ãã¦ãããã®ããç´¹ä»ãã¦ããã¾ã:
æå¾ã«
以ä¸ã§ Middleman ã§ä½ã£ã web ãµã¤ãã Travis + GitHub pages ã§ãæè»½ã«éç¨ããæ¹æ³ã®ç´¹ä»ã¯çµããã§ãã
ä»åãç´¹ä»ããæ¹æ³ããã¿ãªãã¾ã® Middleman ãå©ç¨ãã web ãµã¤ãéç¨ã®ä¸å©ã«ãªããã°å¹¸ãã§ã:-)
(2013.08.27 追è¨) ä»ã¾ã§ãæ¬è¨äºã®éãã«è¨å®ãè¡ãªãã¨ãTravis ã®ãã°ã« GitHub ã®ãã¼ã¯ã³ãæ®ã£ã¦ãã¾ãã¨ããä¸å ·åãããã¾ããã ç¾å¨ã¯æé ãä¿®æ£ãã¦ããã®ã§ãæ¬è¨äºã«å¾ã£ã¦ Travis ã®èªåãã«ããè¨å®ãè¡ã£ãæ¹ã¯ GitHub ã®ãã¼ã¯ã³ã expire ãã¦ããã ããã¨ãããããã§ãã
é£çµ¡ããã ãã£ã @azu_re ããããããã¨ããããã¾ãï¼