This release is a pre-release and may not be stable for production use.
=========
a simple, lightweight and probably dumb CI system, written in Python.
**To extend it**, write your own python `ci workers` modules, then define them in the daemon's configuration file.
**An example** scenario would be to install the `ciex daemons` on multipe machines, then trigger the checkout command or build, upgrade, etc from another machine, say after you're pushing new code to the master branch.
# Quickstart
Note: You need [nanomsg](https://github.com/nanomsg/nanomsg) installed on your system.
```shell
$ pip install ciex
$ ciexd --config /path/to/config/ciex.config
$ ciextl ping
pong
```
# Installation
If you have have [nanomsg](https://github.com/nanomsg/nanomsg) installed on your system, the installation should be pretty easy.
**Requirements**
* [nanomsg](https://github.com/nanomsg/nanomsg) - requirement for nanoservice
* [nanoservice](https://github.com/walkr/nanoservice) - for interprocess comm.
* [oi](https://github.com/walkr/oi) - for command line interface
**Install options**
```shell
# Using pip
$ pip install ciex
# Or using the makefile
$ git clone git@github.com:walkr/ciex.git
$ cd ciex
$ make install
```
# High level overview
The system has two separate components:
1. A daemon process `ciexd`
2. A command line interface `ciexctl`
### 1. Daemon
The daemon is running continuously awaiting for commands.
When a command is received, it is tranformed into a task,
then it is placed onto the `new queue`. **CI Workers** take tasks
from the `new queue` and do their work. When the work associated
with that task is finished, the CI Worker will mark the task as
`success` OR `failure`, then it will send it back to the task router.
The daemon accepts a configuration file, where you can define the settings
for each of your apps, as different apps have different needs.
**Example config file**
```ini
[settings.app.my_app]
localpath = /apps/my_app
repo = git@github.com:walkr/test.git
worker_dirpath = /apps/myapp/ci
worker_modname = workers
worker_classname = CustomWorker
```
**Starting the daemon**
```shell
$ ciexd --config /etc/ciex.config # optional --debug flag
```
### 2. Command line interface
The command line interface accepts commands and forwards them to the daemon
**Usage Example:**
```shell
$ ciextl ping
pong
$ ciexctl
ctl > list
['appname1', 'appname2']
ctl > status appname1
<Task app_name:appname1, command:checkout, status:TaskStatus.success>
ctl > upgrade appname1
Task triggered ...
ctl > status appname1
<Task app_name:appname, command:upgrade, status:TaskStatus.pending>
# While a task is running, you cannot fire up another task
ctl > upgrade appname1
Deny. Taks already running
```
That's it. Enjoy!
**MIT License**
Metadata
Release files for ciex 0.1.1a0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ciex-0.1.1a0.tar.gz | 8.4 kB | Without provenance | Details for ciex-0.1.1a0.tar.gz |
Release files / ciex-0.1.1a0.tar.gz
| Download URL | ciex-0.1.1a0.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ab05339b0eb761d2644d340312a68a6ecdd5ff46e42895baf42e91f2bee3daf
|
|
BLAKE2b-256 checksum How to use checksums |
156b93fb8ab2ea1708ec2bb3cea130245a2abe2dd318af793908fed262e5dfb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for ciex 0.1.1a0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.