44 lines
1.7 KiB
Markdown
44 lines
1.7 KiB
Markdown
---
|
|
title: Writing an OpenTofu/Terraform provider for Forgejo
|
|
description: My second open source provider
|
|
date: 2025-05-28
|
|
tags:
|
|
- Forgejo
|
|
- OpenTofu
|
|
- terraform
|
|
---
|
|
|
|
## Introduction
|
|
|
|
Last month I started writing an OpenTofu/Terraform provider for
|
|
[Forgejo](https://forgejo.org/). I wanted to automate this forge in the same way
|
|
I already automate GitHub: create and manage repositories, provision actions
|
|
secrets and variables, configure issue labels, manage mirrors, etc.
|
|
|
|
A community provider already existed but it is really barebones and missing
|
|
almost all the resources I need. I could have tried to contribute to it, but
|
|
after looking at the code I decided to start from scratch.
|
|
|
|
I wrote providers before so I could get right to it.
|
|
|
|
## Writing a Terraform provider
|
|
|
|
My notes from [writing a Terraform provider for eventline]({{< ref
|
|
"eventline.md" >}}) still apply. With a few previous experiences writing
|
|
providers, this has become straightforward work.
|
|
|
|
The only significant difficulties and frustrations arose from the Forgejo API
|
|
which is pretty inconsistent to say it nicely. A community SDK forked from Gitea
|
|
exists but after looking at its code I decided to write my own small API client.
|
|
|
|
## Conclusion
|
|
|
|
Writing a Terraform provider is a lot of fun, I recommend it! If you have a
|
|
piece of software that you wish had a Terraform provider, know that it is not
|
|
hard to make it a reality. It is also a great learning project, being
|
|
well-bounded in scope and immediately useful.
|
|
|
|
Here is [the repository of my Forgejo
|
|
provider](https://git.adyxax.org/adyxax/terraform-provider-forgejo/) for
|
|
reference and here is [the
|
|
documentation](https://registry.terraform.io/providers/adyxax/forgejo/latest/docs).
|