devkitkat 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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