devkitkat 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ed6fa28306bb394d6f6128300d955ce43eacd9ca81c6a06abe9ac29ea3232f0
4
- data.tar.gz: 681ffd8da74c5a2f64e5e118caad29a15a7b99e92c8a7b21da0b9f5329d220ea
3
+ metadata.gz: e730a451bae542a99bfa35ea7f4f5c0eb3f65da04c1b6e686e3d8dce16770c07
4
+ data.tar.gz: e865d0c254cff4b007b2680ef0e61f62fff9cd2b1dbddb2c53dde21b888f4016
5
5
  SHA512:
6
- metadata.gz: a8648ee8040928383c3e5129a4faa1d82233dd54a42cd71f7bf7273c532e3458212877e1f691229ae44172413d646f131bb11b695c6e58ff67774f412f82ee5e
7
- data.tar.gz: f4f857bd6f21acc44e29ba53e1819638afa3a82bac2691592b7692e3e5a1897a238224280e376c294f55ae6e757939e7a8ff68a515640c75539a5eff2c4ddd67
6
+ metadata.gz: 7f1f690b3a05189d32ba031d8f1b5d40b92a7ca9879af34142c45dc07565f50459e56f65cfa48b4b1368c768d27ebfd6d13c342af11663cd5893b42c696789c1
7
+ data.tar.gz: f80a184c8992db158b4750d0c3421109f3ea0e74f51f94bb480e6e5b245cc8802998650b38cace5beb1cf0147b0bc68f71485ada2aedc8c446f52f3bf122b546
data/.gitlab-ci.yml CHANGED
@@ -1,5 +1,12 @@
1
1
  image: ruby:2.6
2
2
 
3
+ services:
4
+ - docker:19.03.1-dind
5
+
6
+ variables:
7
+ DOCKER_HOST: tcp://docker:2375
8
+ DOCKER_TLS_CERTDIR: ""
9
+
3
10
  rspec:
4
11
  stage: test
5
12
  variables:
@@ -7,9 +14,12 @@ rspec:
7
14
  LC_ALL: C.UTF-8
8
15
  before_script:
9
16
  - apt-get update
10
- - apt-get install -y cmake
11
- - locale
12
- - locale -a
17
+ - apt-get install -y cmake docker.io
18
+ - docker info
19
+ - pwd
13
20
  script:
21
+ - mkdir ../test
22
+ - cp -a . ../test
23
+ - cd ../test
14
24
  - bin/setup
15
25
  - bundle exec rspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![pipeline status](https://gitlab.com/dosuken123/devkitkat-cicd/badges/master/pipeline.svg)](https://gitlab.com/dosuken123/devkitkat-cicd/commits/master)
1
+ [![pipeline status](https://gitlab.com/dosuken123/devkitkat/badges/master/pipeline.svg)](https://gitlab.com/dosuken123/devkitkat/commits/master)
2
2
 
3
3
  # Devkitkat
4
4
 
@@ -6,17 +6,26 @@ Devkitkat is a framework for development kits. It lets you
6
6
  bootstrap separate services for running a complex application easily.
7
7
  This is especially helpful for local development that runs/compiles everything from source code.
8
8
 
9
+ ## Key concepts
10
+
11
+ - It's an alternative solution of docker-compose.
12
+ - It's an alternative solution of Makefile.
13
+ - Convention over configuration. No need to write up complicated config file from scratch.
14
+ - Prepare one image to work on everything (All you need is runnable VM not
15
+ fully fine-tuned containers/images for deployments)
16
+ - Respect the best practice architecture of Cloud Native.
17
+ - No more Makefile for bootstraping.
18
+
9
19
  ## Features
10
20
 
11
21
  This tool provides the following features:
12
22
 
13
- - Easy configuration, easiser than docker-compose.
14
- - Customizable/Flexible scripts for controlling services.
15
- - Logging command output dy default.
16
- - Respect the best practice architecture of Cloud Native.
17
- - Easy to run services in containers (Not available yet).
23
+ - Maintain your services in clean and explicit architecture.
24
+ - Control services with an easy and intuitive command.
25
+ - Fully customizable scripts.
26
+ - Logging everything by default.
27
+ - Easy to run services in containers.
18
28
  - Distrubte machine resources to the cloud VM (Not available yet).
19
- - No more Makefile for orchestrating services.
20
29
 
21
30
  ## The only config file - `.devkitkat.yml`
22
31
 
@@ -25,25 +34,32 @@ download/prepare services. These are available keys.
25
34
 
26
35
  |Key |Type |Required|Default|Description|
27
36
  |--- |--- |--- |---|---|
28
- |`application:` |String |Yes |-|The name of the application that consists of the services|
29
- |`environment:type:` |String |Yes |-|The type of the environment. One of `local`, `docker` or `cloud`. Default is `local`.|
30
- |`environment:image:` |String |Yes |-|The docker image. Only effective when `type` is `docker` or `cloud`|
31
37
  |`services:` |Hash |Yes |-|The services to run the application|
32
38
  |`services:<name>` |Hash |Yes |-|The service name e.g. `rails`, `db`, `redis`|
33
39
  |`services:<name>:repo: <value>` |String |No |-|The git URL of the repository|
34
40
  |`services:<name>:<key>: <value>` |Hash |No |-|The key and value of the environment variable. e.g. `POSTGRES_PASSWORD: abcdef`. |
41
+ |`image:` |String |No |-|The docker image. Only effective when `type` is `docker` or `cloud`|
35
42
  |`groups:` |Hash |No |-|The groups of the services|
36
43
  |`groups:<name>: <service-names>` |Hash |No |-|The name of the group and the service names|
44
+ |`application:` |String |No |-|The name of the application that consists of the services|
37
45
 
38
46
  There are pre-occupied special keys, please do not use these keys in your config file: `services:system`, `services:self`
39
47
 
40
- ## Sample `.devkitkat.yml`
48
+ ## Sample `.devkitkat.yml` that runs services in local environment
41
49
 
42
50
  ```yaml
43
- application: awesome-app
51
+ services:
52
+ web:
53
+ repo: https://gitlab.com/gitlab-org/gitlab-ce.git
54
+ port: 1234
55
+ db:
56
+ port: 9999
57
+ ```
44
58
 
45
- environment:
46
- type: local
59
+ ## Sample `.devkitkat.yml` that runs services in docker containers
60
+
61
+ ```yaml
62
+ image: ruby:2.6
47
63
 
48
64
  services:
49
65
  web:
@@ -55,6 +71,11 @@ services:
55
71
 
56
72
  ## Devkitkat image
57
73
 
74
+ The key concept is to prepare only one docker image to run services. It's just a
75
+ virtual machine just like your local computer. You install native applications/runtime
76
+ (such as postgresql) on your computer. We just need one workable image. So each
77
+ service has an individual container which initialized from the single image.
78
+
58
79
  When you run your application with docker containers, you might need to write up
59
80
  [Dockerfile](https://docs.docker.com/engine/reference/builder/) and build the image at first,
60
81
  this often is time consuming and repeatable task.
@@ -2,6 +2,8 @@ module Devkitkat
2
2
  class Config
3
3
  DEVKITKAT_FILE_NAME = '.devkitkat.yml'
4
4
  HIDDEN_SERVICES = %w[system]
5
+ DEFAULT_APPLICATION_NAME = 'devkitkat'
6
+ DEFAULT_IMAGE = 'ubuntu:18.04'
5
7
 
6
8
  attr_reader :devkitkat_yml, :kit_root
7
9
 
@@ -33,15 +35,19 @@ module Devkitkat
33
35
  end
34
36
 
35
37
  def environment_type
36
- devkitkat_yml.dig('environment', 'type') || 'local'
38
+ if devkitkat_yml.key?('image')
39
+ 'docker'
40
+ else
41
+ 'local'
42
+ end
37
43
  end
38
44
 
39
- def environment_image
40
- devkitkat_yml.dig('environment', 'image')
45
+ def image
46
+ devkitkat_yml.fetch('image', DEFAULT_IMAGE)
41
47
  end
42
48
 
43
49
  def application
44
- devkitkat_yml.fetch('application', '')
50
+ devkitkat_yml.fetch('application', DEFAULT_APPLICATION_NAME)
45
51
  end
46
52
 
47
53
  def variables
@@ -13,6 +13,7 @@ module Devkitkat
13
13
  end
14
14
 
15
15
  def prepare
16
+ pull_image
16
17
  start_container
17
18
  end
18
19
 
@@ -48,7 +49,7 @@ module Devkitkat
48
49
  end
49
50
 
50
51
  def docker_image
51
- config.environment_image
52
+ config.image
52
53
  end
53
54
 
54
55
  def container
@@ -84,6 +85,10 @@ module Devkitkat
84
85
  "/devkitkat"
85
86
  end
86
87
 
88
+ def pull_image
89
+ ::Docker::Image.create('fromImage' => docker_image)
90
+ end
91
+
87
92
  def start_container
88
93
  container.start
89
94
  end
@@ -152,7 +152,7 @@ See the log file: #{log_path}]
152
152
  end
153
153
 
154
154
  def add_script
155
- names = command.args.any? ? command.args : %w[configure unconfigure start stop]
155
+ names = command.args.any? ? command.args : %w[configure unconfigure start]
156
156
 
157
157
  FileUtils.mkdir_p(script_dir)
158
158
 
@@ -1,3 +1,3 @@
1
1
  module Devkitkat
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devkitkat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinya Maeda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-07 00:00:00.000000000 Z
11
+ date: 2019-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler