Managers¶
Managers are simple tasks to be executed on a git repository. Their behaviour is dependent on the repositories source code, issues and pull requests or even the contents of a webhook.
Available Managers¶
Developing your own manager¶
If you would like to develop your own manager, just derive from ManagerBase
class and implement run()
method. This method accepts kwargs that are
directly passed from configuration file (see configuration
section of a
configuration file):
class UpdateManager(ManagerBase):
def run(self, labels: list):
issue = self.get_issue_by_title("Hello from my Kebechet manager")
if issue is None:
self.project.create_issue(
title="Hello from my Kebechet manager",
body="This is an awesome issue sent automatically from Kebechet manager.",
labels=labels
)
If you wish to operate on repository source code, you can request to clone it:
from kebechet.utils import cloned_repo
with cloned_repo(self.service_url, self.slug, branch="my_branch") as repo:
with open('my_file.txt', 'w') as my_file:
my_file.write("Hello, Kebechet!")
repo.git.add(my_file)
repo.git.push()
The last thing you need to do, is to register your manager to
REGISTERED_MANAGERS
constant (you can find it in
kebechet/managers/__init__.py
file) so that the mapping can be used for
configuration. Best practice is to remove the Manager suffix from the class
name, convert to lowercase and put “-” between each word.
Overlays¶
Thoth allows users to specify overlays consisting of different runtime
environments. These runtime environments are specified in a users .thoth.yaml
file, files associated with a specific runtime environment are located in
<overlays-dir>/<runtime-environment-name>
. If you create a manager which
acts on individual runtime environments, then the desired behaviour is as
follows.
if no overlays directory is specified in .thoth.yaml and no runtime_environment is passed, then the manager should act only on the first entry in environments in .thoth.yaml and changes should be made to the top level directory.
if an overlays directory is specified in .thoth.yaml and no runtime_environment is passed the manager should act on every runtime environment and make changes to the corresponding subdirectory.
if no overlays directory is specified in .thoth.yaml and a runtime_environment is specified then the manager should run on the specified runtime environment and overwrite files in the top level regardless of the runtime environment used to generate them.
if an overlays directory is specified in .thoth.yaml and a runtime_environment is also specified then the manager should run on the specified runtime environment and make the changes to the corresponding subdirectory.
Kebechet works as a part of Thoth Ecosystem, please raise an issue or add the new manager to the KebechetGithubAppInstallations table.