Long story short, I was feeling defeated. I wanted to build something, anything, to prove to myself I can.

The Project

I call it Orter for two reasons:

It’s missing some quality of life features; but, hey, this is an MVP! My hope is, those familiar with a retrospective can just start using it, but there is a getting started guide to explain most features. I also created a “marketing” page, mostly for the jokes, but it highlights the features that I thought were missing from similar tools.

Continuous Integration and Continuous Deployment

The other reason I made this is to practice CI/CD. I’ve done it several times before, but there are so many options on how to implement it.

External: GitLab.com

  • Tag the commit for a push to main
  • Build and push the OCI image*
  • Create the release page

The source for the GitLab CICD shows is far better than any explanation I could provide. There is a lot of room for improvement but it works.

Home Lab: Gitea

  • Mirror GitLab.com counterpart
  • Pull latest OCI image
  • Deploy it as a demo

Gitea mirrors the GitLab project once an hour, which means the demo doesn’t update immediately, but good enough. Might seem odd to have a Gitea workflows yaml in the source. When the mirror sync happens, it detects the push to main and runs its pipeline.

The Gitea instance pipeline pulls the latest image from GitLab’s container registry then deploys it to a local server. It’s a little embarrassing how many tries it still takes me to get CI/CD pipelines right–I’ve only been doing it for like 6 years.

The local server uses a tunnel to link https://demo.orter.org to the running container. Running from home the uptime will be far less than five 9’s, but this is a cheap solution that doesn’t require open ports or a DMZ.

DNS

  • CNAME for marketing page to www subdomain
    • Redirect www to no subdomain
    • Marketing site is a pages branch in the project
  • CNAME for demo to demo subdomain

It looks so simple in hindsight, but this was the end result of a lot of trial and error.

Cost

$7.50 a year–the annual fee for orter.org.

The other cost was time. Time to figure out all the DNS and pipelines. Of course, building the project took time. If we don’t count time, this was a really cheap project!

Why not GitHub?

GitHub is where the people are. That’s why I link my GitLab hosted projects from GitHub.

Once a service gets big, or bought by a bigger company, I get skeptical. Doesn’t it feel weird that so many open source projects are hosted on a closed platform? It does to me.

Closing Remarks

This project isn’t about uptime, or pipelines, or even about retrospectives. It’s about building a minium viable product from nothing. If other people find this useful, great, but I built this for me.

Here are some lessons I took away from this project (my own little retro) that gave me confidence for whatever comes next.

  • Limiting scope is key
  • AI is a tool, not a replacement for people
    • I own a wrench, that doesn’t make me a plumber
  • Small iterations lead to feelings of success
    • Feelings of success brings me back to work
    • Breaking big tasks in to small tasks, is a difficult but practicable skill
  • It’s okay to leave a task undone
    • Easy to jump back into work
  • At least look at the project every day
    • Even if you don’t do any meaningful work

* I always use “OCI image” because “image” is ambiguous and I’m easily confused. Are we talking about pictures or containers?