# make-deploy

A simple Makefile based deployment system.

make-deploy was initially hosted at https://git.dnix.de/an/make-deploy. Since it has become heavily used at chefkoch.de for system deployments, and lots of code is committed there, we moved the repo to https://git.chefkoch.net/pub/make-deploy. A mirror still exists at https://git.dnix.de/mirror/make-deploy.

make-deploy is licensed under the terms of the MIT-License. See [LICENSE](LICENSE) for info.

## Installation

Clone make-deploy as a submodule into your repository:

    $ git submodule add https://git.chefkoch.net/pub/make-deploy
    
Create a symlink to the Makefile:

	$ ln -s make-deploy/Makefile .
	
Create `config.mk` (for common config options) and `secrets.mk` (for sensitive information, should be git-crypted) in your project.

Example `config.mk`:

    DEPLOY_NAME = my-project
	DEPLOY_PATH = /srv
	DEPLOY_TYPE = compose
	DEPLOY_HOSTS = server01.example.com server02.example.com

	DOCKER_IMAGE = dr.example.com/my-project:latest
	DOCKER_LOGIN = 1
	DOCKER_REGISTRY = dr.example.com

	SSH_USER = ci

Example `secrets.mk`:

    DOCKER_USER = root
    DOCKER_PASS = secret1234

## Usage

### Start the deployment process

    make deploy
    
### Create docker contexts for the target hosts

    make create-docker-contexts
    
### Update make-deploy submodule in your project

    make self-update

### Available options for DEPLOY_TYPE

copy, compose, swarm, k8s (TBD), helm, cron (TBD)

#### copy

Just copy the repo to the remote location(s). Put additional logic into pre- and post-deploy.sh.

#### compose

Docker Compose deployment.

##### swarm

Docker Swarm deployment.

##### k8s, helm, cron

To be implemented.