kite 1.1.3 → 1.1.7

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: d2b68a454d1819a62cf4485584e512f022e9f5a3c6f67994c41ccb991b2014a8
4
- data.tar.gz: 6dbd778bf35cbe790ba6d6da0ec31ec9953365b07dd177f7234a4480056491ae
3
+ metadata.gz: b57b038adb6c2dc84511d0167202a739ae202ae6a10884bf61f971f76c45593c
4
+ data.tar.gz: 96c517233944c174fbf1ca0826a42cae45bdce6ae54a359358a5ad5c9820a6af
5
5
  SHA512:
6
- metadata.gz: f2ea924514d9ba3c3e6add04b6c47ec02856bfa89200c9b550b066bc791cd8c5eda1f8454d4dba977032a8f961579a4b448bef3987ebd663c88849082852e46e
7
- data.tar.gz: dc1fad1056cd84f88d8999216e927265bf68e71e1319fe62c642c4a0660f869f258445097a3d6e476aa760888635c1e20a906e909be4a231c033e6e320a56e4e
6
+ metadata.gz: bf0236f08a80cfffed00177f188990b9d989fbfb4c4cbd9b8f040fb1f82e5f361be114a1f80d846eff58eeba9e70160b23442b383a5ac3285978f328ea4d460e
7
+ data.tar.gz: ffee938aaf0ec3af6924f86c293d5c89fe8dcfd397226ef2cc356984fad16e6a527a848a6d986a377f958c710b3622ce558d19f0c2c409c56eb581fd85aa4f0c
@@ -0,0 +1,25 @@
1
+ kind: pipeline
2
+ name: default
3
+
4
+ steps:
5
+ - name: Run rspec
6
+ image: ruby:2.5.3
7
+ commands:
8
+ - bundle
9
+ - bundle exec rspec
10
+ when:
11
+ event:
12
+ - pull_request
13
+
14
+ - name: Bump and Tag
15
+ image: ruby:2.5.3
16
+ environment:
17
+ GITHUB_API_KEY:
18
+ from_secret: kite_bot_key
19
+ commands:
20
+ - ruby ci/bump.rb
21
+ when:
22
+ event:
23
+ - push
24
+ branch:
25
+ - 1-1-stable
data/ci/bump.rb CHANGED
@@ -1,14 +1,14 @@
1
- require "rubygems/version"
2
- require "net/http"
3
- require "json"
4
- require "uri"
1
+ require 'rubygems/version'
2
+ require 'net/http'
3
+ require 'json'
4
+ require 'uri'
5
5
 
6
6
  #
7
7
  # Returns bot's username in GitHub.
8
8
  #
9
9
  # @return [String]
10
10
  def bot_username
11
- ENV.fetch("BOT_USERNAME", "kite-bot")
11
+ ENV.fetch('BOT_USERNAME', 'kite-bot')
12
12
  end
13
13
 
14
14
  #
@@ -16,7 +16,7 @@ end
16
16
  #
17
17
  # @return [String]
18
18
  def bot_name
19
- ENV.fetch("BOT_NAME", "Kite Bot")
19
+ ENV.fetch('BOT_NAME', 'Kite Bot')
20
20
  end
21
21
 
22
22
  #
@@ -24,7 +24,7 @@ end
24
24
  #
25
25
  # @return [String]
26
26
  def bot_email
27
- ENV.fetch("BOT_EMAIL", "kite-bot@heliostech.fr")
27
+ ENV.fetch('BOT_EMAIL', 'kite-bot@rubykube.io')
28
28
  end
29
29
 
30
30
  #
@@ -32,7 +32,7 @@ end
32
32
  #
33
33
  # @return [String]
34
34
  def repository_slug
35
- ENV.fetch("REPOSITORY_SLUG", "rubykube/kite")
35
+ ENV.fetch('REPOSITORY_SLUG', 'rubykube/kite')
36
36
  end
37
37
 
38
38
  #
@@ -61,7 +61,7 @@ def bump_from_master_branch
61
61
  return if linked_branch
62
62
 
63
63
  # Increment patch version number, tag, and push.
64
- candidate_version = Gem::Version.new(latest_version.segments.dup.tap { |s| s[2] += 1 }.join("."))
64
+ candidate_version = Gem::Version.new(latest_version.segments.dup.tap { |s| s[2] += 1 }.join('.'))
65
65
  tag_n_push(candidate_version.to_s, name: 'master') unless versions.include?(candidate_version)
66
66
  end
67
67
 
@@ -86,7 +86,7 @@ def bump_from_version_specific_branch(name)
86
86
  return unless latest_version
87
87
 
88
88
  # Increment patch version number, tag, and push.
89
- candidate_version = Gem::Version.new(latest_version.segments.dup.tap { |s| s[2] += 1 }.join("."))
89
+ candidate_version = Gem::Version.new(latest_version.segments.dup.tap { |s| s[2] += 1 }.join('.'))
90
90
  tag_n_push(candidate_version.to_s, branch) unless versions.include?(candidate_version)
91
91
  end
92
92
 
@@ -97,7 +97,7 @@ end
97
97
  #
98
98
  # @param tag [String]
99
99
  def tag_n_push(tag, branch)
100
- File.open "lib/kite/version.rb", "w" do |f|
100
+ File.open 'lib/kite/version.rb', 'w' do |f|
101
101
  f.write <<-RUBY
102
102
  module Kite
103
103
  VERSION = '#{tag}'
@@ -108,20 +108,20 @@ end
108
108
  [
109
109
  %( git config --global user.email "#{bot_email}" ),
110
110
  %( git config --global user.name "#{bot_name}" ),
111
- %( git remote add authenticated-origin https://#{bot_username}:#{ENV.fetch("GITHUB_API_KEY")}@github.com/#{repository_slug} ),
111
+ %( git remote add authenticated-origin https://#{bot_username}:#{ENV.fetch('GITHUB_API_KEY')}@github.com/#{repository_slug} ),
112
112
  %( git checkout -b release ),
113
113
  %( git add lib/kite/version.rb ),
114
114
  %( git commit -m "[ci skip] Bump #{tag}." ),
115
115
  %( git push authenticated-origin release:#{branch.fetch(:name)} ),
116
- %( git tag v#{tag} -a -m "Automatically generated tag from TravisCI build #{ENV.fetch("TRAVIS_BUILD_NUMBER")}." ),
117
- %( git push authenticated-origin v#{tag} )
116
+ %( git tag #{tag} -a -m "Automatically generated tag from the Drone CI build #{ENV.fetch('DRONE_BUILD_NUMBER')}." ),
117
+ %( git push authenticated-origin #{tag} )
118
118
  ].each do |command|
119
- command.strip!
120
- unless Kernel.system(command)
121
- # Prevent GitHub API key from being published.
122
- command.gsub!(ENV["GITHUB_API_KEY"], "(secret)")
123
- raise %(Command "#{command}" exited with status #{$?.exitstatus || "(unavailable)"}.)
124
- end
119
+ command.strip!
120
+ unless Kernel.system(command)
121
+ # Prevent GitHub API key from being published.
122
+ command.gsub!(ENV['GITHUB_API_KEY'], '(secret)')
123
+ raise %(Command "#{command}" exited with status #{$?.exitstatus || '(unavailable)'}.)
124
+ end
125
125
  end
126
126
  end
127
127
 
@@ -131,7 +131,7 @@ end
131
131
  # @return [Array<Gem::Version>]
132
132
  def versions
133
133
  @versions ||= github_api_authenticated_get("/repos/#{repository_slug}/tags").map do |x|
134
- Gem::Version.new(x.fetch("name")[/\d+\.\d+\.\d+/])
134
+ Gem::Version.new(x.fetch('name')[/\d+\.\d+\.\d+/])
135
135
  end.sort
136
136
  end
137
137
 
@@ -142,7 +142,7 @@ end
142
142
  # Key is commit's SHA-1 hash, value is instance of Gem::Version.
143
143
  def tagged_commits_mapping
144
144
  @commits ||= github_api_authenticated_get("/repos/#{repository_slug}/tags").each_with_object({}) do |x, memo|
145
- memo[x.fetch("commit").fetch("sha")] = Gem::Version.new(x.fetch("name")[/\d+\.\d+\.\d+/])
145
+ memo[x.fetch('commit').fetch('sha')] = Gem::Version.new(x.fetch('name')[/\d+\.\d+\.\d+/])
146
146
  end
147
147
  end
148
148
 
@@ -153,8 +153,8 @@ end
153
153
  # Array of hashes each containing "name" & "version" keys.
154
154
  def version_specific_branches
155
155
  @branches ||= github_api_authenticated_get("/repos/#{repository_slug}/branches").map do |x|
156
- if x.fetch("name") =~ /\A(\d)-(\d)-\w+\z/
157
- { name: x["name"], version: Gem::Version.new($1 + "." + $2) }
156
+ if x.fetch('name') =~ /\A(\d)-(\d)-\w+\z/
157
+ { name: x['name'], version: Gem::Version.new($1 + '.' + $2) }
158
158
  end
159
159
  end.compact
160
160
  end
@@ -166,9 +166,9 @@ end
166
166
  # Request path.
167
167
  # @return [Hash]
168
168
  def github_api_authenticated_get(path)
169
- http = Net::HTTP.new("api.github.com", 443)
169
+ http = Net::HTTP.new('api.github.com', 443)
170
170
  http.use_ssl = true
171
- response = http.get path, "Authorization" => %[token #{ENV.fetch("GITHUB_API_KEY")}]
171
+ response = http.get path, 'Authorization' => %[token #{ENV.fetch('GITHUB_API_KEY')}]
172
172
  if response.code.to_i == 200
173
173
  JSON.load(response.body)
174
174
  else
@@ -185,21 +185,4 @@ def generic_semver?(version)
185
185
  version.segments.count == 3 && version.segments.all? { |segment| segment.match?(/\A[0-9]+\z/) }
186
186
  end
187
187
 
188
- # Build must not run on a fork.
189
- bump = ENV["TRAVIS_REPO_SLUG"] == repository_slug
190
- # Skip PRs.
191
- bump &&= ENV["TRAVIS_PULL_REQUEST"] == "false"
192
- # Build must run on branch.
193
- bump &&= !ENV["TRAVIS_BRANCH"].to_s.empty?
194
- # GitHub API key must be available.
195
- bump &&= !ENV["GITHUB_API_KEY"].to_s.empty?
196
- # Build must not run on tag.
197
- bump &&= ENV["TRAVIS_TAG"].to_s.empty?
198
- # Ensure this commit is not tagged.
199
- bump &&= !tagged_commits_mapping.key?(ENV["TRAVIS_COMMIT"])
200
-
201
- if bump
202
- if ENV["TRAVIS_BRANCH"] != "master"
203
- bump_from_version_specific_branch(ENV["TRAVIS_BRANCH"])
204
- end
205
- end
188
+ bump_from_version_specific_branch(ENV.fetch('DRONE_BRANCH'))
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency "thor"
24
24
  spec.add_dependency "git"
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.16"
27
- spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "bundler", ">= 1.16"
27
+ spec.add_development_dependency "rake", ">= 10.0"
28
28
  spec.add_development_dependency "rspec", "~> 3.7"
29
29
  spec.add_development_dependency "git"
30
30
  spec.add_development_dependency "simplecov"
@@ -1,3 +1,3 @@
1
1
  module Kite
2
- VERSION = '1.1.3'
2
+ VERSION = '1.1.7'
3
3
  end
@@ -1,4 +1,113 @@
1
- ## Generate a new cloud
1
+ # Kite
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/kite.svg)](https://badge.fury.io/rb/kite)
4
+ [![license](https://img.shields.io/github/license/rubykube/kite.svg)](https://github.com/rubykube/kite/blob/master/LICENSE.md)
5
+
6
+ [![Build Status](https://travis-ci.org/rubykube/kite.svg?branch=master)](https://travis-ci.org/rubykube/kite)
7
+ [![codecov](https://codecov.io/gh/rubykube/kite/branch/master/graph/badge.svg)](https://codecov.io/gh/rubykube/kite)
8
+
9
+ Kite is a CLI for scaffolding and managing devops modules
10
+ The main purpose is templating of various tools for devops around terraform, bosh, ansible.
11
+ Currently Kite supports modular stacks(Kite modules) on both AWS and GCP.
12
+
13
+ We plan in adding community stack using a simple template repository structure.
14
+
15
+ ## Installation
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ ```ruby
20
+ gem 'kite'
2
21
  ```
3
- kite generate cloud --provider=<CLOUD_PROVIDER>
22
+
23
+ And then execute:
24
+
25
+ $ bundle
26
+
27
+ Or install it yourself as:
28
+
29
+ $ gem install kite
30
+
31
+ ## Usage
32
+
33
+ To start using kite for bootstraping your infrastructure
34
+ follow the steps below.
35
+ [Note] Most kite commands can be referred by their first letter(for example `kite generate environment test` is the same as `kite g e test`)
36
+
37
+ ### Create your Infrastructure as Code base repository
38
+
39
+ Create a new kite project using:
40
+
4
41
  ```
42
+ $ kite new PROJECT_NAME
43
+ ```
44
+
45
+ ### Generate an environment(e.g. development/test/production)
46
+
47
+ Kite environments are separated workspaces with their own credentials, variables and modules.
48
+
49
+ Generate an environment
50
+
51
+ ```
52
+ $ kite generate environment *env_name* --provider=aws|gcp
53
+ ```
54
+
55
+ If you want to change the credentials for an environment, edit `config/cloud.yml` and regenerate environment with the same command.
56
+
57
+ Now the environment should be generated at `config/environments/*env_name*`
58
+
59
+ ### Add a module to your environment
60
+
61
+ To add a Kite module to your environment, you should first initialize it.
62
+ It's recommended to use specific module versions/tags(master branch would be used by default):
63
+
64
+ ```
65
+ kite module init https://url.for/your/module --env *env_name* --version *x.y.z/x-y-stable*
66
+ ```
67
+
68
+ This should clone module's source files into `modules/*module_name*` and create a `vars.*module_name*.yml` file with all variables needed by the module.
69
+
70
+ Fill in `vars.*module_name*.yml` with correct values and render the module:
71
+
72
+ ```
73
+ kite module render modules/*module_name* --env *env_name*
74
+ ```
75
+
76
+ ### Apply Terraform configuration from the environment
77
+
78
+ Set your default gcloud credentials using
79
+
80
+ ```
81
+ gcloud auth application-default login
82
+ ```
83
+
84
+ ```
85
+ kite terraform init
86
+ kite terraform apply --env *env_name*
87
+ ```
88
+
89
+ ## Getting help
90
+
91
+ To list all Kite commands, use
92
+
93
+ ```shell
94
+ $> kite help
95
+ ```
96
+
97
+ ## Development
98
+
99
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
100
+
101
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
102
+
103
+ ### Concourse Resource
104
+
105
+ To use resource scripts locally, set env variable `is_devel` to `true`, e.h.:
106
+
107
+ ```sh
108
+ $ ruby -Ilib ./bin/concourse/in
109
+ ```
110
+
111
+ ## Contributing
112
+
113
+ Bug reports and pull requests are welcome on GitHub at https://github.com/rubykube/kite.
@@ -1,6 +1,8 @@
1
1
  # Add your own tasks in files placed in lib/tasks ending in .rake
2
2
 
3
- ENV['KITE_ENV'] ||= 'development'
3
+ ENV['KITE_ENV'] ||= 'test'
4
+
5
+ @cloud = YAML.load_file('config/cloud.yml')[ENV['KITE_ENV']]
4
6
 
5
7
  Dir.glob('lib/tasks/*.rake').each do |task|
6
8
  load task
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kite
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis Bellet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-12 00:00:00.000000000 Z
11
+ date: 2019-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -42,28 +42,28 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.16'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.16'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.0'
69
69
  - !ruby/object:Gem::Dependency
@@ -130,10 +130,10 @@ executables:
130
130
  extensions: []
131
131
  extra_rdoc_files: []
132
132
  files:
133
+ - ".drone.yml"
133
134
  - ".gitignore"
134
135
  - ".rspec"
135
136
  - ".ruby-version"
136
- - ".travis.yml"
137
137
  - CHANGELOG.md
138
138
  - Dockerfile
139
139
  - Gemfile
@@ -217,8 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
217
  - !ruby/object:Gem::Version
218
218
  version: '0'
219
219
  requirements: []
220
- rubyforge_project:
221
- rubygems_version: 2.7.7
220
+ rubygems_version: 3.0.2
222
221
  signing_key:
223
222
  specification_version: 4
224
223
  summary: Command line tool for devops scaffolding.
@@ -1,16 +0,0 @@
1
- dist: trusty
2
-
3
- sudo: required
4
-
5
- language: ruby
6
-
7
- cache: bundler
8
-
9
-
10
- before_install: gem install bundler -v 1.14.6
11
-
12
- env:
13
- COVERAGE: true
14
-
15
- # Execute all of the commands which need to be executed after the build passed.
16
- after_success: ruby ci/bump.rb