woodpecker-config-service/Readme.md

27 lines
1.6 KiB
Markdown
Raw Normal View History

2022-02-27 20:18:27 +01:00
# Woodpecker CI Configuration Service example
This repository provides a very simplistic example of how to set up an external configuration service for **Woodpecker CI**
2022-06-01 20:38:04 +02:00
The external service gets a **HTTP POST** request with information about the repo, current build, and the configs that would normally be used.
It can then decide to acknowledge the current configs (By returning **HTTP 204**), or overriding the configurations and returning new ones in the response
2022-02-27 20:18:27 +01:00
2022-06-01 20:38:04 +02:00
Use cases for this system are:
2022-02-27 20:18:27 +01:00
- Centralized configuration for multiple repositories at once
- Preprocessing steps in the pipeline like templating, macros or conversion from different pipeline formats to woodpeckers format
This service is written in go, to run it first copy the config example: `cp .env.example .env`
2022-06-01 20:38:04 +02:00
Download the public key from your woodpecker instance from `http(s)://your-woodpecker-server/api/signature/public-key` and save it to file. Set `WOODPECKER_CONFIG_SERVICE_PUBLIC_KEY_FILE` to the path to that file and add a filtering regex. The repositories that have a name match the filtering regex will receive the config from `central-pipeline-config.yaml`, while all other repositories will continue using their original configuration.
2022-06-01 20:38:04 +02:00
Then run using `go run .`.
Make sure to configure your woodpecker instance with the correct **endpoint** and configure the same **secret**. See [Woodpeckers documentation here](https://woodpecker-ci.org/docs/administration/external-configuration-api)
2022-02-27 20:18:27 +01:00
2022-06-01 20:38:04 +02:00
eg:
2022-02-27 20:18:27 +01:00
```shell
# Server
# ...
WOODPECKER_CONFIG_SERVICE_ENDPOINT=http://<service>:8000/ciconfig
2022-06-01 20:38:04 +02:00
WOODPECKER_CONFIG_SERVICE_PUBLIC_KEY_FILE=public-key.pem
2022-02-27 20:18:27 +01:00
```