duci

command module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2018 License: MIT Imports: 8 Imported by: 0

README

duci

Language GitHub release Build Status Coverage Status Go Report Card codebeat badge MIT License

duci [zushi] (Docker Under Continuous Integration) is a small ci server.

DSL is Unnecessary For CI

Let's define the task in the task runner.
Let's define the necessary infrastructure for the task in the Dockerfile.
duci just only execute the task in docker container.

Features

  • Execute the task in Docker container
  • Execute the task triggered by GitHub pull request comment or push
  • Execute tasks asynchronously
  • Create GitHub commit status

How to use

Target Repository

The target repository must have Dockerfile in repository root or .duci/Dockerfile.
If there is .duci/Dockerfile, duci read it preferentially.

In Dockerfile, I suggest to use ENTRYPOINT.

e.g.

ENTRYPOINT ["mvn"]
CMD ["compile"]
ENTRYPOINT ["fastlane"]
CMD ["build"]

When push to github, duci execute mvn compile / fastlane build.
And when comment ci test on github pull request, execute mvn test / fastlane test.

Using Volumes

You can use volumes options for external dependency, cache and etc.
Set configurations in .duci/config.yml

volumes:
  - '/path/to/host/dir:/path/to/container/dir'

Server Settings

Run Server

If you have already set $GOPATH, you can install it with the following command.

$ go get -u github.com/duck8823/duci
$ duci 
Setting SSH

This server clone from github.com with SSH protocol using private key $HOME/.ssh/id_rsa (default).
Please set the public key of the pair at https://github.com/settings/keys.

Server Configuration file

You can specify configuration file with -c option. The configuration file must be yaml format. Possible values ​​are as follows.

server:
  workdir: '/path/to/tmp/duci'
  port: 8080
  database_path: '$HOME/.duci/db'
github:
  ssh_key_path: '$HOME/.ssh/id_rsa'
  # For create commit status. You can also use environment variable
  api_token: ${GITHUB_API_TOKEN}
job:
  timeout: 600
  concurrency: `number of cpu`

You can check the default value.

$ duci -h
Add Webhooks to GitHub repository

duci start to listen webhook with port 8080 and endpoint /.
Add endpoint of duci to target repository.
https://github.com/<owner>/<repository>/settings/hooks

Using Docker

You can use Docker to run server.

$ docker run -p 8080:8080 \
             -e GITHUB_API_TOKEN=<your toekn> \
             -v /var/run/docker.sock:/var/run/docker.sock \
             -v ~/.ssh:/root/.ssh:ro \ 
             duck8823/duci
docker-compose for Windows
$ git clone https://github.com/duck8823/duci.git
$ cd duci
$ docker-compose -f docker-compose.win.yml up
docker-compose for Mac
$ git clone https://github.com/duck8823/duci.git
$ cd duci
$ docker-compose -f docker-compose.mac.yml up

License

MIT License

Copyright (c) 2018 Shunsuke Maeda

See LICENSE file

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
service/github/mock_github
Package mock_github is a generated GoMock package.
Package mock_github is a generated GoMock package.
service/logstore/mock_log
Package mock_log is a generated GoMock package.
Package mock_log is a generated GoMock package.
service/runner/mock_runner
Package mock_runner is a generated GoMock package.
Package mock_runner is a generated GoMock package.
domain
infrastructure
docker/mock_docker
Package mock_docker is a generated GoMock package.
Package mock_docker is a generated GoMock package.
git
git/mock_git
Package mock_git is a generated GoMock package.
Package mock_git is a generated GoMock package.
logger/mock_logger
Package mock_logger is a generated GoMock package.
Package mock_logger is a generated GoMock package.
presentation

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL