Automating deployments

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

Create your repository

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

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 site. 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: |
    acurl -f https://pages.sr.ht/publish/$site -Fcontent=@site.tar.gz
"acurl" is short for "authenticated curl", it's a curl wrapper available in our build environment that is automatically authenticated to sr.ht APIs using an OAuth token generated on-the-fly with the permissions requested by the "oauth" directive - in this case, only enough to deploy your site.

Update the site variable to your desired website (e.g. “your-username.srht.site”). You can also add additional steps under tasks and package to call a static site generator and bundle your website 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 site. Once it’s done, that’s it - your site will be re-published every time you push.

Not sure how to build your static site with a build manifest? We have some examples for common static site generators available in the example pages repository.

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