1
Fork 0
blog/_posts/2017-11-17-github-pages-deployment-made-easy.md

43 lines
1.7 KiB
Markdown
Raw Normal View History

2018-01-01 19:04:05 +00:00
permalink: "/{{ year }}/{{ month }}/{{ day }}/github-pages-deployment-made-easy"
title: GitHub Pages deployment made easy
published_date: "2017-11-17 19:47:15 +0100"
layout: post.liquid
data:
route: blog
---
Recently I tried to deploy a new [Cobalt][]-powered site from [Travis CI][travis], using the [then documented method][olddeploy].
It failed at random and all tries to debug it failed.
[cobalt]: https://github.com/cobalt-org/cobalt.rs
[travis]: https://travis-ci.org/
[olddeploy]: https://github.com/cobalt-org/cobalt.rs/blob/4350f2b012480a4b198f6ef0dabb0ddb47c42abb/README.md#with-travis-ci
That's when I came across Travis' [GitHub Pages Deployment integration](https://docs.travis-ci.com/user/deployment/pages/).
Add the following snippet to your `.travis.yml`:
```yaml
deploy:
provider: pages
skip_cleanup: true
github_token: $GH_TOKEN
local_dir: build
on:
branch: master
```
Now create a new [Personal Access Token](https://github.com/settings/tokens) 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:
```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](https://github.com/cobalt-org/cobalt.rs/pull/333).