Automating deployments

It’s not a good idea to repeat the quick start process every time you want to update your capsule. So let’s automate it!

Create your repository

First, create a repository on git.sr.ht or hg.sr.ht named after your capsule (e.g. “your-username.srht.site”), and push your capsule’s source code to it.

git.sr.ht

hg.sr.ht

Unfamiliar with git or hg? Check out the tutorial.

Writing the build manifest

We’ll be using builds.sr.ht to automate building and deploying our capsule. Create a file named “.build.yml” and fill it in with this template:

image: alpine/latest
oauth: pages.sr.ht/PAGES:RW
environment:
  site: your-username.srht.site
tasks:
- package: |
    cd $site
    tar -cvz . > ../site.tar.gz
- upload: |
    hut pages publish -d $site -p GEMINI site.tar.gz

hut is a CLI tool to interact with the sr.ht APIs. It uses an OAuth 2.0 token generated on-the-fly with the permissions requested by the "oauth" directive - in this case, only enough to deploy your site.

https://sr.ht/~emersion/hut/

Update the site variable to your desired domain (e.g. “your-username.srht.site”). You can also add additional steps under tasks and package to call a static capsule generator and bundle your capsule differently. Once you’re done, commit this file to your repository and push. A URL will be printed to your console which you can click on to follow the progress on deploying your capsule. Once it’s done, that’s it - your capsule will be re-published every time you push.

For more information about using builds.sr.ht, consult the builds.sr.ht documentation:

builds.sr.ht documentation