GitHub Pages deployment made easy

Recently I tried to deploy a new Cobalt-powered site from Travis CI, using the then documented method. It failed at random and all tries to debug it failed.

That's when I came across Travis' GitHub Pages Deployment integration.

Add the following snippet to your .travis.yml:

deploy:
  provider: pages
  skip_cleanup: true
  github_token: $GH_TOKEN
  local_dir: build
  on:
    branch: master

Now create a new Personal Access Token on GitHub and make sure to include the public_repo scope (or the repo scope if you're deploying from a private repository). Copy the provided token and execute the following code in a shell:

travis encrypt GH_TOKEN=thetokenyougot --add env.global

(make sure to replace thetokenyougot with the actual token)

Now whenever you push to the master branch, Travis will run your build first, then grab all files from the build folder, put that into a new commit in the gh-pages branch and force-push to GitHub again. For more settings check the linked documentation (e.g. how to change the folder or branch to be deployed).

Meanwhile, this became the documented method for Cobalt deployment.