feed-gipeda-0.3.0.1: CI service around gipeda

Safe HaskellNone
LanguageHaskell2010

FeedGipeda.Gipeda

Description

This module is just for parsing and generating gipeda.yaml files. It should probably replaced by a reference to gipeda, but it works for now. The raison d'être is settingsForRepo.

Synopsis

Documentation

data GipedaSettings Source #

Models the possible settings in a gipeda.yaml file, as expected to be present by gipeda.

Constructors

GipedaSettings 

Fields

  • title :: String

    Sets the repo-specific title text.

  • revisionInfo :: String

    Arbitrary HTML code that will displayed on a single commit's page. {{rev}} is replaced by the full SHA hash of the commit.

  • diffLink :: String

    A link that displays the difference between two commits of the repository. The strings {{rev}} and {{base}} are replaced by the full SHA hashes of the two commits to compare.

  • limitRecent :: Int

    Number of commits shown on the start page.

  • start :: Maybe SHA

    Commit hash of the first commit to take into account. Useful to limit the scope of gipeda in projects with a large history.

  • interestingTags :: String

    A glob (as understood by git tag -l) specifying which tags should be shown on the main page. By default, no tags are shown; use * to show all.

  • interestingBranches :: String

    A glob such as interestingTags, but for selecting branches.

  • benchmarkScript :: String

    A shell command to execute in the directory for benchmarking. Should produce CSV data in the format expected by gipeda.

  • benchmarks :: [BenchmarkSettings]

    Matchers for benchmark groups within the CSV files.

data BenchmarkSettings Source #

Matches benchmark groups from the names in the produced benchmark CSV files.

Constructors

BenchmarkSettings 

Fields

  • match :: String

    A file glob that determines to what benchmarks these settings apply. match: "*" will apply these settings to all benchmarks, match: "regression/*"* only to those whose title starts with regression/.

  • smallerIsBetter :: Maybe Bool

    By default (or if this is False), gipeda assumes that greater number indicate improvement, and smaller number indicate regressions (e.g. requests per second). This inverts this logic (e.g. runtime).

  • unit :: Maybe String

    Arbitrary unit, to be printed in the tables and on the graph axes. Defaults to "".

  • type_ :: Maybe String

    "float", "integral" (default) or "small integral". For the first two, differences are expressed in percentages (+10%), while for the latter, differences are expressed in differences (+2). This is more suitable for numbers like test suite failures, which should usually be zero or very small.

  • group :: Maybe String

    The benchmarks are displayed in groups; all benchmarks that have the same string here are grouped under this title. Defaults to "".

  • threshold :: Maybe Double

    Any change by a percentage greater than this number is flagged as a regression resp. improvement; anything below this number is considered to be a boring result, and not highlighted separately.

  • important :: Maybe Bool

    True by default. If False, a regression in this benchmark will not be included in the summary for the whole commit. Use this if you have very volatile tests that would produce too much noise on the main page.

settingsForRepo :: Repo -> IO GipedaSettings Source #

Generates a gipeda.yaml file for the given repository. It thereby takes project-specific settings from a top-level .?gipeda.ya?ml file at the repository's HEAD (if present) or from the project directory and fills in missing settings with defaults.

determineBenchmarkScript :: Repo -> IO String Source #

Determines the benchmark script for the given repo by looking into the gipeda.yaml file in the project-specific directory under the working directory. The settings file was previously generated by settingsForRepo, which also tries to merge project-specific settings to the default.