||12 months ago|
|build||12 months ago|
|core||12 months ago|
|hook||12 months ago|
|static||12 months ago|
|views||12 months ago|
|web||12 months ago|
|.gitignore||2 years ago|
|LICENSE||2 years ago|
|Makefile||12 months ago|
|README.md||1 year ago|
|main.go||2 years ago|
My Very Own CI-server (Continuous Integration). With it you can build Git-repositories with webhooks, i.e. whenever commits are pushed or on the press of a button.
mvoCI aims to be simple and do as much as is necessary and nothing more. No Plugins, no Modules, no 500 MB of RAM eaten (your mileage may vary).
Be advised, that mvoCI has shell access. It is your responsibility to secure your machine from damage by mvoCI.
What it does
- organize Repositories and Builds of them
- build Repositories on webhook, on click "Build Now"
- have a rudimentary account management
- bindings to Gogs, Gitea, Gitbucket, Gitlab, Bitbucket and Github
What it does not
- Anything more, like
- timed builds
- after build scripts
- SVN, Mercurial, VCS (although there should not be a real reason for this constraint)
- internationalization (currently only English)
mvoCI uses the following golang libraries:
go get github.com/jinzhu/gorm github.com/labstack/echo golang.org/x/crypto/bcrypt github.com/foolin/goview github.com/foolin/goview/supports/echoview-v4
You need a database server, or use SQLite as database backend. You may use one of the following:
- MySQL / MariaDB
./mvo --installfor the installation dialogues
./mvofor production mode
- Configuration options are in
LogFile -> path to the log file LogFileEnable -> (bool) should a log-file be produced? LogMode -> write logs also to the terminal on (stderr/stdout) app_title -> Name your Instance compression_method -> compression method used for archiving build artifacts (e.g. gz) database_provider -> what database backend do you use? -> based on that more database-options, the Install dialog helps you configuring these debug -> (bool) more verbose output dir_build -> path to where the build artifacts are stored dir_repo -> path to where the repos are cloned to on build host -> hostname of the server http_port -> (int) port, the server listens to impress_* -> information about the administrator for impress (city, mail, owner, street, zip) impress_privacy -> privacy statement login_token_duration -> (int) specifies how long the login-token stays valid (in seconds) parallel_builds -> (int) the number of build threads and therefore the number of possible builds in parallel on the instance
As stated earlier, it is recommended, that mvoCI is not executed as root. It should be used with as little rights are possible, but enough to be useful for your usecase.
You may use this script to start mvoCI automatically as an own user (e.g.
mvo). Please make sure, that that user cannot do anything you wouldn't do yourself!
[Unit] Description=mvoCI After=syslog.target After=network.target After=mysqld.service #After=postgresql.service [Service] RestartSec=2s Type=simple User=mvo Group=mvo WorkingDirectory=/home/mvo ExecStart=/home/mvo/mvo Restart=always Environment=USER=mvo HOME=/home/mvo [Install] WantedBy=multi-user.target