Skip to content

MinIO CloudEvents Service

MinIO CloudEvents Service consumes MinIO events from a Kafka topic in S3/MinIO format, converts them to CloudEvents, and sends them to a cloudevents topic in Kafka.

In essence it's a workaround for the fact that MinIO does not allow natively sending CloudEvents since it implements the same API surface that AWS S3 also provides.

To acheive this, we implement a simple S3 CloudEvents Adapter.

Usage

Run the container to see all available configuration options and their corresponding environment variables.

podman run --rm ghcr.io/radiorabe/minioevents:latest --help

Development

python -mvenv venv
. venv/bin/activate

pip install poetry
poetry install

pytest

Release Management

The CI/CD setup uses semantic commit messages following the conventional commits standard. The workflow is based on the RaBe shared actions and uses go-semantic-commit to create new releases.

The commit message should be structured as follows:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

The commit contains the following structural elements, to communicate intent to the consumers of your library:

  1. fix: a commit of the type fix patches gets released with a PATCH version bump
  2. feat: a commit of the type feat gets released as a MINOR version bump
  3. BREAKING CHANGE: a commit that has a footer BREAKING CHANGE: gets released as a MAJOR version bump
  4. types other than fix: and feat: are allowed and don't trigger a release

If a commit does not contain a conventional commit style message you can fix it during the squash and merge operation on the PR.

Build Process

The CI/CD setup uses Docker build-push Action to publish container images. The workflow is based on the RaBe shared actions.

License

This application is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.

Copyright (c) 2023 Radio Bern RaBe