snap_ci_manual_trigger 0.1.0 → 1.0.0

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
  SHA1:
3
- metadata.gz: c5aa2cc6e0dd62b83a69a55d927fb364e505a361
4
- data.tar.gz: 3400261f1f6f75c8dd6bd2d518d19bcd0a64967c
3
+ metadata.gz: 58e71b58cac95103a8c1524e356e1c81d3299b38
4
+ data.tar.gz: 7eab4a9320362c1ee161fcc2a0f321322ddceeda
5
5
  SHA512:
6
- metadata.gz: 5776d5deb58c6144d6467806daa2067a2b58f485af11e07f1aa70703778aa7479f3ab034705b9a6ac19b54bee9ae738fe14e373df19d7d7322ba44fc4dc5f6c5
7
- data.tar.gz: d3632c1ba6173bbee18a5ba5eaa18c33dc6bc8967e9373ced989005a6131d4f0bf5b95dd87669c85c1a307510e2df28ed9d8a6d2e94be99bceb09f4b0e1ce772
6
+ metadata.gz: 8bc18f5af8fc50311c3a73c562292643547f71eba1d4c37038cb97822cbf41ac332ff49673b82085423a7ed77805e34066de568218274e85d0389c7bfb5b33bc
7
+ data.tar.gz: 11395bf39a3ce48d9c99498f0e0a090c695a7c9567e19b67851afd7ad45254c4247d5b981434a1afb86b714a4d758096a41fe9706222dda31d3f92feb0fb3d34
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /spec/lib/tmp/*
data/.travis.yml CHANGED
@@ -3,6 +3,10 @@ rvm:
3
3
  - 2.1.2
4
4
  before_install: gem install bundler -v 1.10.5
5
5
 
6
+ addons:
7
+ code_climate:
8
+ repo_token: 3fc20ac63456f30ae0b08dcf864b1b775a70f12380a0ee281d33a654e35f0a70
9
+
6
10
  script: 'bundle exec rake spec'
7
11
 
8
12
  notifications:
data/README.md CHANGED
@@ -52,7 +52,28 @@ running_pipeline_url = service.manual_stage_on_new_pipeline 'Deploy'
52
52
 
53
53
  ### Generate tasks
54
54
 
55
- TODO: generate rake tasks for quick setup of project/repo/branch, using ENV variables for Auth and overrides.
55
+ This gem adds a generator to create specific rake tasks that will make things easier.
56
+
57
+ We invoke the generator like this:
58
+
59
+ ```shell
60
+ rails generate snap_ci_manual_trigger:rake_tasks my-org my-repo
61
+ ```
62
+
63
+ And it will create a rake task for calling `manual_stage_on_new_pipeline` there. It will be used like this:
64
+
65
+ ```shell
66
+ # this will call for the 'Deploy' stage in a new pipeline in my-org/my-repo in branch 'master'
67
+ rake snap_ci:my-org_my-repo[Deploy]
68
+
69
+ # this will call for the 'Deploy' stage in a new pipeline in my-org/my-repo in branch 'other_branch'
70
+ rake snap_ci:my-org_my-repo[Deploy,other_branch]
71
+ ```
72
+
73
+ It reads the credentials from ENV (required):
74
+
75
+ - `SNAP_CI_USER`: Snap-CI username
76
+ - `SNAP_CI_API_KEY`: Snap-CI API Key
56
77
 
57
78
  ## Development
58
79
 
@@ -64,3 +85,10 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
64
85
 
65
86
  Bug reports and pull requests are welcome on GitHub at https://github.com/artirix/snap_ci_manual_trigger.
66
87
 
88
+
89
+ ## CHANGES
90
+
91
+ ### v.1.0.0
92
+
93
+ - Generators added
94
+ - major version bump since we now require railties, which could be a breaking change
@@ -0,0 +1,24 @@
1
+ require 'rails/generators/base'
2
+
3
+ module SnapCiManualTrigger
4
+ module Generators
5
+ class RakeTasksGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __FILE__)
7
+
8
+ desc <<-DESC.strip_heredoc
9
+ Creates rake tasks for the given owner/repository pair (will generate file in "lib/tasks/snap_ci/OWNER_REPOSITORY.rake")
10
+
11
+ For example:
12
+ rails generate snap_ci_manual_trigger:rake_tasks my-org my-repo
13
+
14
+ DESC
15
+
16
+ argument :owner, required: true, desc: 'The owner in Snap-CI'
17
+ argument :repository, required: true, desc: 'The repository in Snap-CI'
18
+
19
+ def create_tasks
20
+ template 'rake_tasks.rb.erb', "lib/tasks/snap_ci/#{owner}_#{repository}.rake"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,55 @@
1
+ namespace :snap_ci do
2
+ desc <<-DESC.strip_heredoc
3
+ executes #manual_stage_on_new_pipeline using <%= owner.inspect %> as owner and <%= repository.inspect %> as repository
4
+
5
+ example:
6
+ rake <%= owner %>_<%= repository %>:manual_stage_on_new_pipeline[Deploy]
7
+
8
+ if you want a different branch (master by default) then add a second argument
9
+
10
+ example:
11
+ rake <%= owner %>_<%= repository %>:manual_stage_on_new_pipeline[Deploy,my_branch]
12
+
13
+ DESC
14
+
15
+ task :'<%= owner %>_<%= repository %>', [:stage, :branch_name] => [:environment] do |t, args|
16
+ args.with_defaults branch_name: 'master'
17
+
18
+ owner = '<%= owner %>'
19
+ repository = '<%= repository %>'
20
+ stage = args[:stage]
21
+ branch_name = args[:branch_name]
22
+ user = ENV['SNAP_CI_USER']
23
+ api_key = ENV['SNAP_CI_API_KEY']
24
+
25
+ if stage.blank?
26
+ raise SnapCiManualTrigger::MissingRakeArgumentsError,
27
+ 'missing stage!'
28
+ end
29
+
30
+ if branch_name.blank?
31
+ raise SnapCiManualTrigger::MissingRakeArgumentsError,
32
+ 'missing branch_name!'
33
+ end
34
+
35
+ if user.blank?
36
+ raise SnapCiManualTrigger::MissingRakeAuthError,
37
+ 'missing snap CI User! use ENV variable SNAP_CI_USER'
38
+ end
39
+
40
+ if api_key.blank?
41
+ raise SnapCiManualTrigger::MissingRakeAuthError,
42
+ 'missing snap CI API Key! use ENV variable SNAP_CI_API_KEY'
43
+ end
44
+
45
+ service = SnapCiManualTrigger.for user: user,
46
+ api_key: api_key,
47
+ owner: owner,
48
+ repository: repository,
49
+ branch_name: branch_name
50
+
51
+ url = service.manual_stage_on_new_pipeline stage
52
+
53
+ puts "Stage #{stage} called. URL in SnapCI: #{url}"
54
+ end
55
+ end
@@ -0,0 +1,2 @@
1
+ class SnapCiManualTrigger::MissingRakeArgumentsError < StandardError
2
+ end
@@ -0,0 +1,2 @@
1
+ class SnapCiManualTrigger::MissingRakeAuthError < StandardError
2
+ end
@@ -1,3 +1,3 @@
1
1
  module SnapCiManualTrigger
2
- VERSION = '0.1.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -8,6 +8,17 @@ require 'snap_ci_manual_trigger/invalid_credentials_error'
8
8
  require 'snap_ci_manual_trigger/invalid_resource_error'
9
9
  require 'snap_ci_manual_trigger/service'
10
10
 
11
+
12
+ # GENERATORS
13
+
14
+ require 'thor'
15
+ require 'rails/generators'
16
+ require 'rails/generators/actions'
17
+
18
+ require 'generators/snap_ci_manual_trigger/rake_tasks_generator'
19
+ require 'snap_ci_manual_trigger/missing_rake_arguments_error'
20
+ require 'snap_ci_manual_trigger/missing_rake_auth_error'
21
+
11
22
  module SnapCiManualTrigger
12
23
  DEFAULT_BRANCH_NAME = 'master'.freeze
13
24
 
@@ -21,8 +21,12 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'faraday'
22
22
  spec.add_dependency 'oj'
23
23
  spec.add_dependency 'oj_mimic_json'
24
+
25
+ spec.add_dependency 'railties', '>= 3.2', '< 5' # for the generators
26
+
24
27
  spec.add_development_dependency 'bundler', '~> 1.10'
25
28
  spec.add_development_dependency 'rake', '~> 10.0'
26
29
  spec.add_development_dependency 'rspec'
27
30
  spec.add_development_dependency 'stub_env'
31
+ spec.add_development_dependency 'generator_spec'
28
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snap_ci_manual_trigger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Turiño
@@ -66,6 +66,26 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: railties
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '3.2'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '5'
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '3.2'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '5'
69
89
  - !ruby/object:Gem::Dependency
70
90
  name: bundler
71
91
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +142,20 @@ dependencies:
122
142
  - - ">="
123
143
  - !ruby/object:Gem::Version
124
144
  version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: generator_spec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
125
159
  description:
126
160
  email:
127
161
  - eturino@eturino.com
@@ -137,9 +171,13 @@ files:
137
171
  - Rakefile
138
172
  - bin/console
139
173
  - bin/setup
174
+ - lib/generators/snap_ci_manual_trigger/rake_tasks_generator.rb
175
+ - lib/generators/snap_ci_manual_trigger/templates/rake_tasks.rb.erb
140
176
  - lib/snap_ci_manual_trigger.rb
141
177
  - lib/snap_ci_manual_trigger/invalid_credentials_error.rb
142
178
  - lib/snap_ci_manual_trigger/invalid_resource_error.rb
179
+ - lib/snap_ci_manual_trigger/missing_rake_arguments_error.rb
180
+ - lib/snap_ci_manual_trigger/missing_rake_auth_error.rb
143
181
  - lib/snap_ci_manual_trigger/service.rb
144
182
  - lib/snap_ci_manual_trigger/version.rb
145
183
  - snap_ci_manual_trigger.gemspec