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
packages:
  - hut
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/~xenrox/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

Proxy Information
Original URL
gemini://srht.site/automating-deployments.gmi
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
138.580269 milliseconds
Gemini-to-HTML Time
0.634785 milliseconds

This content has been proxied by September (3851b).