MiniCI ====== MiniCI runs jobs defined in the `minici.yaml` file in the root of the project (on the same level as the `.git` directory). With that, `minici` invocation can execute the jobs for local commits that are not yet in upstream (remote) branch or for any manually given commit range. Job definition -------------- The top-level elements of the YAML file are `job ` defining steps to perform the job and potentially listing artifacts produced or required. Example: ``` job build: shell: - make artifact bin: path: build/example job test: uses: - build.bin shell: - ./build/example test ``` Each job is a map with the following attributes: `shell` : List of shell commands to perform the job `artifact ` (optional) : Defines artifact `` produced by this job. Is itself defined as a dictionary. `artifact .path` : Path to the produced artifact file, relative to the root of the project. `uses` (optional) : List of artifact required for this job, in the form `.`. Usage ----- To run jobs for a git commit range: ``` minici run .. ``` or: ``` minici run --range=.. ``` To run jobs for commits that are in local ``, but not yet in its upstream: ``` minici run ``` or: ``` minici run --since-upstream= ``` For current branch, the name can be omitted: ``` minici run ``` To watch changes on given `` and run jobs for each new commit: ``` minici run --new-commits-on= ``` To watch new tags and run jobs for each tag matching given pattern: ``` minici run --new-tags= ``` The above options `--range`, `--since-upstream`, etc can be arbitrarily combined.