codepipeline 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -11
  3. data/.gitmodules +9 -0
  4. data/.rspec +1 -1
  5. data/CHANGELOG.md +16 -0
  6. data/Gemfile +3 -1
  7. data/Gemfile.lock +111 -0
  8. data/Guardfile +19 -0
  9. data/LICENSE.txt +18 -17
  10. data/README.md +44 -20
  11. data/Rakefile +10 -2
  12. data/codepipe.gemspec +38 -0
  13. data/docs/.gitignore +4 -0
  14. data/docs/CNAME +1 -0
  15. data/docs/Gemfile +3 -0
  16. data/docs/LICENSE +21 -0
  17. data/docs/README.md +25 -0
  18. data/docs/_config.yml +73 -0
  19. data/docs/_docs/contributing.md +99 -0
  20. data/docs/_docs/conventions.md +43 -0
  21. data/docs/_docs/deploy.md +72 -0
  22. data/docs/_docs/dsl.md +13 -0
  23. data/docs/_docs/dsl/approve.md +62 -0
  24. data/docs/_docs/dsl/pipeline.md +56 -0
  25. data/docs/_docs/dsl/pipeline/action.md +28 -0
  26. data/docs/_docs/dsl/pipeline/codebuild.md +62 -0
  27. data/docs/_docs/dsl/pipeline/prefix-and-suffix.md +57 -0
  28. data/docs/_docs/dsl/role.md +79 -0
  29. data/docs/_docs/dsl/schedule.md +29 -0
  30. data/docs/_docs/dsl/sns.md +27 -0
  31. data/docs/_docs/dsl/webhook.md +31 -0
  32. data/docs/_docs/ecs-deploy.md +24 -0
  33. data/docs/_docs/examples/different-branches.md +50 -0
  34. data/docs/_docs/install.md +14 -0
  35. data/docs/_docs/next-steps.md +16 -0
  36. data/docs/_docs/settings.md +34 -0
  37. data/docs/_docs/start.md +31 -0
  38. data/docs/_includes/commands.html +92 -0
  39. data/docs/_includes/content.html +25 -0
  40. data/docs/_includes/edit-on-github.html +9 -0
  41. data/docs/_includes/footer.html +41 -0
  42. data/docs/_includes/google_analytics.html +10 -0
  43. data/docs/_includes/head.html +45 -0
  44. data/docs/_includes/js.html +15 -0
  45. data/docs/_includes/nav.html +17 -0
  46. data/docs/_includes/prev_next.md +19 -0
  47. data/docs/_includes/reference.md +1 -0
  48. data/docs/_includes/subnav.html +46 -0
  49. data/docs/_includes/tutorials.md +38 -0
  50. data/docs/_layouts/default.html +12 -0
  51. data/docs/_reference/pipe-completion.md +44 -0
  52. data/docs/_reference/pipe-completion_script.md +25 -0
  53. data/docs/_reference/pipe-delete.md +25 -0
  54. data/docs/_reference/pipe-deploy.md +26 -0
  55. data/docs/_reference/pipe-init.md +25 -0
  56. data/docs/_reference/pipe-start.md +25 -0
  57. data/docs/_reference/pipe-version.md +21 -0
  58. data/docs/_sass/_bootstrap-overrides.scss +40 -0
  59. data/docs/_sass/_contact.scss +49 -0
  60. data/docs/_sass/_cta.scss +37 -0
  61. data/docs/_sass/_download.scss +31 -0
  62. data/docs/_sass/_features.scss +47 -0
  63. data/docs/_sass/_footer.scss +49 -0
  64. data/docs/_sass/_global.scss +102 -0
  65. data/docs/_sass/_main.scss +364 -0
  66. data/docs/_sass/_masthead.scss +70 -0
  67. data/docs/_sass/_mixins.scss +79 -0
  68. data/docs/_sass/_navbar.scss +92 -0
  69. data/docs/_sass/_syntax.scss +65 -0
  70. data/docs/_sass/_table.scss +34 -0
  71. data/docs/_sass/_timeline.scss +207 -0
  72. data/docs/_sass/_variables.scss +24 -0
  73. data/docs/bin/web +8 -0
  74. data/docs/docs.md +24 -0
  75. data/docs/dsl/pipeline.md +76 -0
  76. data/docs/dsl/role.md +66 -0
  77. data/docs/dsl/schedule.md +20 -0
  78. data/docs/img/docs/codepipeline-output.png +0 -0
  79. data/docs/img/logos/boltops-logo-full.png +0 -0
  80. data/docs/img/logos/boltops-logo.png +0 -0
  81. data/docs/img/logos/project-logo.png +0 -0
  82. data/docs/index.html +35 -0
  83. data/docs/js/nav.js +39 -0
  84. data/docs/js/new-age.js +38 -0
  85. data/docs/js/new-age.min.js +6 -0
  86. data/docs/new-age.scss +20 -0
  87. data/docs/quick-start.md +73 -0
  88. data/docs/reference.md +12 -0
  89. data/docs/support.md +22 -0
  90. data/docs/vendor/bootstrap/css/bootstrap-grid.css +1339 -0
  91. data/docs/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
  92. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css +1 -0
  93. data/docs/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
  94. data/docs/vendor/bootstrap/css/bootstrap-reboot.css +459 -0
  95. data/docs/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
  96. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css +1 -0
  97. data/docs/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
  98. data/docs/vendor/bootstrap/css/bootstrap.css +9320 -0
  99. data/docs/vendor/bootstrap/css/bootstrap.css.map +1 -0
  100. data/docs/vendor/bootstrap/css/bootstrap.min.css +6 -0
  101. data/docs/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
  102. data/docs/vendor/bootstrap/js/bootstrap.js +3535 -0
  103. data/docs/vendor/bootstrap/js/bootstrap.min.js +7 -0
  104. data/docs/vendor/font-awesome/css/font-awesome.css +2337 -0
  105. data/docs/vendor/font-awesome/css/font-awesome.min.css +4 -0
  106. data/docs/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  107. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  108. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  109. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  110. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  111. data/docs/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  112. data/docs/vendor/font-awesome/less/animated.less +34 -0
  113. data/docs/vendor/font-awesome/less/bordered-pulled.less +25 -0
  114. data/docs/vendor/font-awesome/less/core.less +12 -0
  115. data/docs/vendor/font-awesome/less/fixed-width.less +6 -0
  116. data/docs/vendor/font-awesome/less/font-awesome.less +18 -0
  117. data/docs/vendor/font-awesome/less/icons.less +789 -0
  118. data/docs/vendor/font-awesome/less/larger.less +13 -0
  119. data/docs/vendor/font-awesome/less/list.less +19 -0
  120. data/docs/vendor/font-awesome/less/mixins.less +60 -0
  121. data/docs/vendor/font-awesome/less/path.less +15 -0
  122. data/docs/vendor/font-awesome/less/rotated-flipped.less +20 -0
  123. data/docs/vendor/font-awesome/less/screen-reader.less +5 -0
  124. data/docs/vendor/font-awesome/less/stacked.less +20 -0
  125. data/docs/vendor/font-awesome/less/variables.less +799 -0
  126. data/docs/vendor/font-awesome/scss/_animated.scss +34 -0
  127. data/docs/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
  128. data/docs/vendor/font-awesome/scss/_core.scss +12 -0
  129. data/docs/vendor/font-awesome/scss/_fixed-width.scss +6 -0
  130. data/docs/vendor/font-awesome/scss/_icons.scss +789 -0
  131. data/docs/vendor/font-awesome/scss/_larger.scss +13 -0
  132. data/docs/vendor/font-awesome/scss/_list.scss +19 -0
  133. data/docs/vendor/font-awesome/scss/_mixins.scss +60 -0
  134. data/docs/vendor/font-awesome/scss/_path.scss +15 -0
  135. data/docs/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
  136. data/docs/vendor/font-awesome/scss/_screen-reader.scss +5 -0
  137. data/docs/vendor/font-awesome/scss/_stacked.scss +20 -0
  138. data/docs/vendor/font-awesome/scss/_variables.scss +799 -0
  139. data/docs/vendor/font-awesome/scss/font-awesome.scss +18 -0
  140. data/docs/vendor/jquery-easing/jquery.easing.compatibility.js +59 -0
  141. data/docs/vendor/jquery-easing/jquery.easing.js +166 -0
  142. data/docs/vendor/jquery-easing/jquery.easing.min.js +1 -0
  143. data/docs/vendor/jquery/jquery.js +10253 -0
  144. data/docs/vendor/jquery/jquery.min.js +4 -0
  145. data/docs/vendor/simple-line-icons/css/simple-line-icons.css +778 -0
  146. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.eot +0 -0
  147. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.svg +200 -0
  148. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.ttf +0 -0
  149. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff +0 -0
  150. data/docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff2 +0 -0
  151. data/docs/vendor/simple-line-icons/less/simple-line-icons.less +982 -0
  152. data/docs/vendor/simple-line-icons/scss/simple-line-icons.scss +979 -0
  153. data/docs/vendor/tether/tether.js +1811 -0
  154. data/docs/vendor/tether/tether.min.js +1 -0
  155. data/exe/codepipeline +14 -0
  156. data/exe/pipe +14 -0
  157. data/lib/codepipe.rb +23 -0
  158. data/lib/codepipe/autoloader.rb +21 -0
  159. data/lib/codepipe/aws_services.rb +20 -0
  160. data/lib/codepipe/aws_services/helpers.rb +71 -0
  161. data/lib/codepipe/build.rb +13 -0
  162. data/lib/codepipe/cli.rb +60 -0
  163. data/lib/codepipe/command.rb +82 -0
  164. data/lib/codepipe/completer.rb +159 -0
  165. data/lib/codepipe/completer/script.rb +6 -0
  166. data/lib/codepipe/completer/script.sh +10 -0
  167. data/lib/codepipe/core.rb +63 -0
  168. data/lib/codepipe/create.rb +12 -0
  169. data/lib/codepipe/delete.rb +27 -0
  170. data/lib/codepipe/deploy.rb +40 -0
  171. data/lib/codepipe/dsl/pipeline.rb +37 -0
  172. data/lib/codepipe/dsl/pipeline/approve.rb +34 -0
  173. data/lib/codepipe/dsl/pipeline/codebuild.rb +57 -0
  174. data/lib/codepipe/dsl/pipeline/github.rb +36 -0
  175. data/lib/codepipe/dsl/role.rb +50 -0
  176. data/lib/codepipe/dsl/schedule.rb +30 -0
  177. data/lib/codepipe/dsl/sns.rb +15 -0
  178. data/lib/codepipe/dsl/ssm.rb +22 -0
  179. data/lib/codepipe/dsl/webhook.rb +27 -0
  180. data/lib/codepipe/evaluate.rb +47 -0
  181. data/lib/codepipe/help.rb +9 -0
  182. data/lib/codepipe/help/completion.md +22 -0
  183. data/lib/codepipe/help/completion_script.md +3 -0
  184. data/lib/codepipe/help/hello.md +5 -0
  185. data/lib/codepipe/init.rb +57 -0
  186. data/lib/codepipe/pipeline.rb +61 -0
  187. data/lib/codepipe/pipeline/s3_bucket.rb +88 -0
  188. data/lib/codepipe/role.rb +181 -0
  189. data/lib/codepipe/schedule.rb +99 -0
  190. data/lib/codepipe/sequence.rb +66 -0
  191. data/lib/codepipe/setting.rb +79 -0
  192. data/lib/codepipe/sns.rb +43 -0
  193. data/lib/codepipe/stack.rb +95 -0
  194. data/lib/codepipe/start.rb +83 -0
  195. data/lib/codepipe/update.rb +12 -0
  196. data/lib/codepipe/version.rb +3 -0
  197. data/lib/codepipe/webhook.rb +60 -0
  198. data/lib/codepipeline.rb +1 -6
  199. data/lib/template/.codepipeline/pipeline.rb.tt +33 -0
  200. data/lib/template/.codepipeline/schedule.rb +3 -0
  201. data/lib/template/.codepipeline/settings.yml +9 -0
  202. data/lib/template/.codepipeline/sns.rb +14 -0
  203. data/spec/fixtures/app/.codepipeline/pipeline.rb +12 -0
  204. data/spec/fixtures/app/.codepipeline/schedule.rb +1 -0
  205. data/spec/fixtures/app/.codepipeline/webhook.rb +1 -0
  206. data/spec/fixtures/pipelines/approve.rb +22 -0
  207. data/spec/fixtures/pipelines/approve_existing_sns.rb +24 -0
  208. data/spec/lib/cli_spec.rb +18 -0
  209. data/spec/lib/pipeline/approve_spec.rb +32 -0
  210. data/spec/lib/pipeline_spec.rb +12 -0
  211. data/spec/lib/role_spec.rb +12 -0
  212. data/spec/lib/schedule_spec.rb +12 -0
  213. data/spec/lib/webhook_spec.rb +12 -0
  214. data/spec/spec_helper.rb +35 -0
  215. metadata +419 -22
  216. data/.travis.yml +0 -7
  217. data/bin/console +0 -14
  218. data/bin/setup +0 -8
  219. data/codepipeline.gemspec +0 -27
  220. data/lib/codepipeline/version.rb +0 -3
@@ -0,0 +1,12 @@
1
+ module Codepipe
2
+ class Update < Stack
3
+ def perform
4
+ cfn.update_stack(
5
+ stack_name: @stack_name,
6
+ template_body: YAML.dump(@template),
7
+ capabilities: ["CAPABILITY_IAM"]
8
+ )
9
+ puts "Updating stack #{@stack_name}. Check CloudFormation console for status."
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module Codepipe
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,60 @@
1
+ module Codepipe
2
+ class Webhook
3
+ include Codepipe::Dsl::Webhook
4
+ include Evaluate
5
+
6
+ def initialize(options={})
7
+ @options = options
8
+ @webhook_path = options[:webhook_path] || get_webhook_path
9
+ @properties = default_properties
10
+ end
11
+
12
+ def run
13
+ return unless File.exist?(@webhook_path)
14
+
15
+ old_properties = @properties.clone
16
+ evaluate(@webhook_path)
17
+ set_secret_token!
18
+ return if old_properties == @properties # empty webhook.rb file
19
+
20
+ resource = {
21
+ webhook: {
22
+ type: "AWS::CodePipeline::Webhook",
23
+ properties: @properties
24
+ }
25
+ }
26
+ CfnCamelizer.transform(resource)
27
+ end
28
+
29
+ def default_properties
30
+ {
31
+ authentication: 'GITHUB_HMAC', # GITHUB_HMAC, IP and UNAUTHENTICATED
32
+ authentication_configuration: {
33
+ secret_token: @secret_token,
34
+ },
35
+ filters: [{
36
+ json_path: "$.ref",
37
+ match_equals: "refs/heads/{Branch}",
38
+ }],
39
+ # name: '', # optional
40
+ register_with_third_party: 'true', # optional
41
+ target_action: 'Source',
42
+ target_pipeline: {ref: "Pipeline"},
43
+ target_pipeline_version: {"Fn::GetAtt": "Pipeline.Version"},
44
+ }
45
+ end
46
+
47
+ def set_secret_token!
48
+ @properties.merge!(
49
+ authentication_configuration: {
50
+ secret_token: @secret_token
51
+ }
52
+ )
53
+ end
54
+ private
55
+
56
+ def get_webhook_path
57
+ lookup_codepipeline_file("webhook.rb")
58
+ end
59
+ end
60
+ end
@@ -1,6 +1 @@
1
- require "codepipeline/version"
2
-
3
- module Codepipeline
4
- class Error < StandardError; end
5
- # Your code goes here...
6
- end
1
+ require "codepipe"
@@ -0,0 +1,33 @@
1
+ stage "Source" do
2
+ github(
3
+ source: "<%= project_github_repo %>",
4
+ branch: branch, # branch method defaults to "master" or the `pipe deploy --branch` option
5
+ auth_token: ssm("/codebuild/github/oauth_token") # example ssm name
6
+ )
7
+ end
8
+
9
+ # codebuild_prefix "myprefix-"
10
+
11
+ # Example below:
12
+
13
+ # stage "Build" do
14
+ # codebuild "project1"
15
+ # codebuild "project2", "project3" # runs in parallel
16
+ # codebuild "project4"
17
+ # end
18
+
19
+ # stage "Approve" do
20
+ # # Existing SNS Topic
21
+ # # approve(
22
+ # # notification_arn: "arn:aws:sns:us-west-2:536766270177:hello-topic",
23
+ # # custom_data: "Approve deployment",
24
+ # # )
25
+ #
26
+ # # OR
27
+ # # CodePipeline will create and managed the SNS Topoic
28
+ # approve("Approve deployment")
29
+ # end
30
+
31
+ # stage "Deploy" do
32
+ # codebuild "project5"
33
+ # end
@@ -0,0 +1,3 @@
1
+ # rate "1 day"
2
+ # or
3
+ # cron("0 10 * * ? *") # Run at 10:00 am (UTC) every day
@@ -0,0 +1,9 @@
1
+ base:
2
+ # stack_naming:
3
+ # append_env: true # default false
4
+
5
+ development:
6
+ # aws_profile: dev_profile
7
+
8
+ production:
9
+ # aws_profile: prod_profile
@@ -0,0 +1,14 @@
1
+ # If user has specified their own existing SNS topic ARN, then this SNS Topic managed by the codepipeline
2
+ # tool will not get created. Also, only gets created if there's an approval action in the pipeline.
3
+ #
4
+ # Example properties:
5
+ #
6
+ # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html
7
+ #
8
+ # display_name "my display_name"
9
+ # kms_master_key_id "String"
10
+ # subscription([{
11
+ # endpoint: '',
12
+ # protocol: ','
13
+ # }])
14
+ # topic_name "string", # Recommend not setting because update requires: Replacement. Allow CloudFormation to set it so 2 pipelines dont have same SNS Topic name that collides
@@ -0,0 +1,12 @@
1
+ stage "Source" do
2
+ github(
3
+ source: "tongueroo/demo-cb",
4
+ branch: "master",
5
+ auth_token: "fake",
6
+ )
7
+ end
8
+ stage "DeployStacks" do
9
+ codebuild "demo1" # action declaration
10
+ codebuild "demo2", "demo3" # will run in parallel. run_order=2
11
+ codebuild "demo4" # action declaration
12
+ end
@@ -0,0 +1 @@
1
+ rate "1 day"
@@ -0,0 +1 @@
1
+ github_token("fake")
@@ -0,0 +1,22 @@
1
+ stage "Source" do
2
+ github(
3
+ source: "tongueroo/demo-test",
4
+ branch: "master",
5
+ auth_token: "fake",
6
+ )
7
+ end
8
+
9
+ # codebuild_prefix "myprefix-"
10
+
11
+ stage "Build" do
12
+ codebuild "demo-build"
13
+ end
14
+
15
+ stage "Approve" do
16
+ # not specifying the SNS topic arn so codepipeline will create one
17
+ approve("Approve deployment")
18
+ end
19
+
20
+ stage "Deploy" do
21
+ codebuild "demo-deploy"
22
+ end
@@ -0,0 +1,24 @@
1
+ stage "Source" do
2
+ github(
3
+ source: "tongueroo/demo-test",
4
+ branch: "master",
5
+ auth_token: "fake",
6
+ )
7
+ end
8
+
9
+ # codebuild_prefix "myprefix-"
10
+
11
+ stage "Build" do
12
+ codebuild "demo-build"
13
+ end
14
+
15
+ stage "Approve" do
16
+ approve(
17
+ notification_arn: "arn:aws:sns:us-west-2:536766270177:hello-topic",
18
+ custom_data: "Approve deployment",
19
+ )
20
+ end
21
+
22
+ stage "Deploy" do
23
+ codebuild "demo-deploy"
24
+ end
@@ -0,0 +1,18 @@
1
+ describe Codepipe::CLI do
2
+ before(:all) do
3
+ @args = "--noop"
4
+ @old_root = Dir.pwd
5
+ Dir.chdir("spec/fixtures/app")
6
+ @pipe_bin = "../../../exe/pipe"
7
+ end
8
+ after(:all) do
9
+ Dir.chdir(@old_root)
10
+ end
11
+
12
+ describe "pipe" do
13
+ it "deploy" do
14
+ out = execute("#{@pipe_bin} deploy #{@args}")
15
+ expect(out).to include("Generated CloudFormation template")
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ describe Codepipe::Pipeline do
2
+ let(:stack) do
3
+ stack = Codepipe::Stack.new(
4
+ pipeline_path: "spec/fixtures/pipelines/#{pipeline_example}.rb",
5
+ stack_name: "fake", # to avoid .codepipeline check in settings
6
+ )
7
+ allow(stack).to receive(:perform)
8
+ allow(stack).to receive(:url_info)
9
+ stack
10
+ end
11
+
12
+ context "pipeline with approve step without existing sns topic arn" do
13
+ let(:pipeline_example) { "approve" }
14
+ it "stack" do
15
+ stack.run
16
+ template = stack.instance_variable_get(:@template)
17
+ # creates and manages the SnsTopic
18
+ expect(template["Resources"]["SnsTopic"]).to be_a(Hash)
19
+ end
20
+ end
21
+
22
+ context "pipeline with approve step with existing sns topic arn" do
23
+ let(:pipeline_example) { "approve_existing_sns" }
24
+
25
+ it "stack" do
26
+ stack.run
27
+ template = stack.instance_variable_get(:@template)
28
+ # does not creates the SnsTopic
29
+ expect(template["Resources"]["SnsTopic"]).to be nil
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,12 @@
1
+ describe Codepipe::Pipeline do
2
+ let(:pipeline) do
3
+ Codepipe::Pipeline.new(pipeline_path: "spec/fixtures/app/.codepipeline/pipeline.rb")
4
+ end
5
+ context "general" do
6
+ it "builds up the template in memory" do
7
+ template = pipeline.run
8
+ expect(template.keys).to eq ["Pipeline"]
9
+ expect(template["Pipeline"]).to be_a(Hash)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ describe Codepipe::Role do
2
+ let(:role) do
3
+ Codepipe::Role.new(role_path: "spec/fixtures/app/.codepipeline/role.rb")
4
+ end
5
+ context "general" do
6
+ it "builds up the template in memory" do
7
+ template = role.run
8
+ expect(template.keys).to eq ["IamRole"]
9
+ expect(template["IamRole"]).to be_a(Hash)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ describe Codepipe::Schedule do
2
+ let(:schedule) do
3
+ Codepipe::Schedule.new(schedule_path: "spec/fixtures/app/.codepipeline/schedule.rb")
4
+ end
5
+ context "general" do
6
+ it "builds up the template in memory" do
7
+ template = schedule.run
8
+ expect(template.keys).to eq ["EventsRule", "EventsRuleRole"]
9
+ expect(template["EventsRule"]).to be_a(Hash)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ describe Codepipe::Webhook do
2
+ let(:webhook) do
3
+ Codepipe::Webhook.new(webhook_path: "spec/fixtures/app/.codepipeline/webhook.rb")
4
+ end
5
+ context "general" do
6
+ it "builds up the template in memory" do
7
+ template = webhook.run
8
+ expect(template.keys).to eq ["Webhook"]
9
+ expect(template["Webhook"]).to be_a(Hash)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,35 @@
1
+ ENV["TEST"] = "1"
2
+
3
+ # Ensures aws api never called. Fixture home folder does not contain ~/.aws/credentails
4
+ ENV['HOME'] = File.join(Dir.pwd,'spec/fixtures/home')
5
+
6
+ ENV['PIPE_ROOT'] = "spec/fixtures/app"
7
+
8
+
9
+ # CodeClimate test coverage: https://docs.codeclimate.com/docs/configuring-test-coverage
10
+ # require 'simplecov'
11
+ # SimpleCov.start
12
+
13
+ require "pp"
14
+ require "byebug"
15
+ root = File.expand_path("../", File.dirname(__FILE__))
16
+ require "#{root}/lib/codepipe"
17
+
18
+ module Helper
19
+ def execute(cmd)
20
+ puts "Running: #{cmd}" if show_command?
21
+ out = `#{cmd}`
22
+ puts out if show_command?
23
+ out
24
+ end
25
+
26
+ # Added SHOW_COMMAND because DEBUG is also used by other libraries like
27
+ # bundler and it shows its internal debugging logging also.
28
+ def show_command?
29
+ ENV['DEBUG'] || ENV['SHOW_COMMAND']
30
+ end
31
+ end
32
+
33
+ RSpec.configure do |c|
34
+ c.include Helper
35
+ end
metadata CHANGED
@@ -1,76 +1,461 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codepipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-18 00:00:00.000000000 Z
11
+ date: 2019-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-cloudformation
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aws-sdk-codepipeline
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aws-sdk-s3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk-ssm
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: cfn_camelizer
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: memoist
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rainbow
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: render_me_pretty
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: thor
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: zeitwerk
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
13
167
  - !ruby/object:Gem::Dependency
14
168
  name: bundler
15
169
  requirement: !ruby/object:Gem::Requirement
16
170
  requirements:
17
- - - "~>"
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: byebug
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: cli_markdown
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
18
200
  - !ruby/object:Gem::Version
19
- version: '2.0'
201
+ version: '0'
20
202
  type: :development
21
203
  prerelease: false
22
204
  version_requirements: !ruby/object:Gem::Requirement
23
205
  requirements:
24
- - - "~>"
206
+ - - ">="
25
207
  - !ruby/object:Gem::Version
26
- version: '2.0'
208
+ version: '0'
27
209
  - !ruby/object:Gem::Dependency
28
210
  name: rake
29
211
  requirement: !ruby/object:Gem::Requirement
30
212
  requirements:
31
- - - "~>"
213
+ - - ">="
32
214
  - !ruby/object:Gem::Version
33
- version: '10.0'
215
+ version: '0'
34
216
  type: :development
35
217
  prerelease: false
36
218
  version_requirements: !ruby/object:Gem::Requirement
37
219
  requirements:
38
- - - "~>"
220
+ - - ">="
39
221
  - !ruby/object:Gem::Version
40
- version: '10.0'
222
+ version: '0'
41
223
  - !ruby/object:Gem::Dependency
42
224
  name: rspec
43
225
  requirement: !ruby/object:Gem::Requirement
44
226
  requirements:
45
- - - "~>"
227
+ - - ">="
46
228
  - !ruby/object:Gem::Version
47
- version: '3.0'
229
+ version: '0'
48
230
  type: :development
49
231
  prerelease: false
50
232
  version_requirements: !ruby/object:Gem::Requirement
51
233
  requirements:
52
- - - "~>"
234
+ - - ">="
53
235
  - !ruby/object:Gem::Version
54
- version: '3.0'
236
+ version: '0'
55
237
  description:
56
238
  email:
57
239
  - tongueroo@gmail.com
58
- executables: []
240
+ executables:
241
+ - codepipeline
242
+ - pipe
59
243
  extensions: []
60
244
  extra_rdoc_files: []
61
245
  files:
62
246
  - ".gitignore"
247
+ - ".gitmodules"
63
248
  - ".rspec"
64
- - ".travis.yml"
249
+ - CHANGELOG.md
65
250
  - Gemfile
251
+ - Gemfile.lock
252
+ - Guardfile
66
253
  - LICENSE.txt
67
254
  - README.md
68
255
  - Rakefile
69
- - bin/console
70
- - bin/setup
71
- - codepipeline.gemspec
256
+ - codepipe.gemspec
257
+ - docs/.gitignore
258
+ - docs/CNAME
259
+ - docs/Gemfile
260
+ - docs/LICENSE
261
+ - docs/README.md
262
+ - docs/_config.yml
263
+ - docs/_docs/contributing.md
264
+ - docs/_docs/conventions.md
265
+ - docs/_docs/deploy.md
266
+ - docs/_docs/dsl.md
267
+ - docs/_docs/dsl/approve.md
268
+ - docs/_docs/dsl/pipeline.md
269
+ - docs/_docs/dsl/pipeline/action.md
270
+ - docs/_docs/dsl/pipeline/codebuild.md
271
+ - docs/_docs/dsl/pipeline/prefix-and-suffix.md
272
+ - docs/_docs/dsl/role.md
273
+ - docs/_docs/dsl/schedule.md
274
+ - docs/_docs/dsl/sns.md
275
+ - docs/_docs/dsl/webhook.md
276
+ - docs/_docs/ecs-deploy.md
277
+ - docs/_docs/examples/different-branches.md
278
+ - docs/_docs/install.md
279
+ - docs/_docs/next-steps.md
280
+ - docs/_docs/settings.md
281
+ - docs/_docs/start.md
282
+ - docs/_includes/commands.html
283
+ - docs/_includes/content.html
284
+ - docs/_includes/edit-on-github.html
285
+ - docs/_includes/footer.html
286
+ - docs/_includes/google_analytics.html
287
+ - docs/_includes/head.html
288
+ - docs/_includes/js.html
289
+ - docs/_includes/nav.html
290
+ - docs/_includes/prev_next.md
291
+ - docs/_includes/reference.md
292
+ - docs/_includes/subnav.html
293
+ - docs/_includes/tutorials.md
294
+ - docs/_layouts/default.html
295
+ - docs/_reference/pipe-completion.md
296
+ - docs/_reference/pipe-completion_script.md
297
+ - docs/_reference/pipe-delete.md
298
+ - docs/_reference/pipe-deploy.md
299
+ - docs/_reference/pipe-init.md
300
+ - docs/_reference/pipe-start.md
301
+ - docs/_reference/pipe-version.md
302
+ - docs/_sass/_bootstrap-overrides.scss
303
+ - docs/_sass/_contact.scss
304
+ - docs/_sass/_cta.scss
305
+ - docs/_sass/_download.scss
306
+ - docs/_sass/_features.scss
307
+ - docs/_sass/_footer.scss
308
+ - docs/_sass/_global.scss
309
+ - docs/_sass/_main.scss
310
+ - docs/_sass/_masthead.scss
311
+ - docs/_sass/_mixins.scss
312
+ - docs/_sass/_navbar.scss
313
+ - docs/_sass/_syntax.scss
314
+ - docs/_sass/_table.scss
315
+ - docs/_sass/_timeline.scss
316
+ - docs/_sass/_variables.scss
317
+ - docs/bin/web
318
+ - docs/docs.md
319
+ - docs/dsl/pipeline.md
320
+ - docs/dsl/role.md
321
+ - docs/dsl/schedule.md
322
+ - docs/img/docs/codepipeline-output.png
323
+ - docs/img/logos/boltops-logo-full.png
324
+ - docs/img/logos/boltops-logo.png
325
+ - docs/img/logos/project-logo.png
326
+ - docs/index.html
327
+ - docs/js/nav.js
328
+ - docs/js/new-age.js
329
+ - docs/js/new-age.min.js
330
+ - docs/new-age.scss
331
+ - docs/quick-start.md
332
+ - docs/reference.md
333
+ - docs/support.md
334
+ - docs/vendor/bootstrap/css/bootstrap-grid.css
335
+ - docs/vendor/bootstrap/css/bootstrap-grid.css.map
336
+ - docs/vendor/bootstrap/css/bootstrap-grid.min.css
337
+ - docs/vendor/bootstrap/css/bootstrap-grid.min.css.map
338
+ - docs/vendor/bootstrap/css/bootstrap-reboot.css
339
+ - docs/vendor/bootstrap/css/bootstrap-reboot.css.map
340
+ - docs/vendor/bootstrap/css/bootstrap-reboot.min.css
341
+ - docs/vendor/bootstrap/css/bootstrap-reboot.min.css.map
342
+ - docs/vendor/bootstrap/css/bootstrap.css
343
+ - docs/vendor/bootstrap/css/bootstrap.css.map
344
+ - docs/vendor/bootstrap/css/bootstrap.min.css
345
+ - docs/vendor/bootstrap/css/bootstrap.min.css.map
346
+ - docs/vendor/bootstrap/js/bootstrap.js
347
+ - docs/vendor/bootstrap/js/bootstrap.min.js
348
+ - docs/vendor/font-awesome/css/font-awesome.css
349
+ - docs/vendor/font-awesome/css/font-awesome.min.css
350
+ - docs/vendor/font-awesome/fonts/FontAwesome.otf
351
+ - docs/vendor/font-awesome/fonts/fontawesome-webfont.eot
352
+ - docs/vendor/font-awesome/fonts/fontawesome-webfont.svg
353
+ - docs/vendor/font-awesome/fonts/fontawesome-webfont.ttf
354
+ - docs/vendor/font-awesome/fonts/fontawesome-webfont.woff
355
+ - docs/vendor/font-awesome/fonts/fontawesome-webfont.woff2
356
+ - docs/vendor/font-awesome/less/animated.less
357
+ - docs/vendor/font-awesome/less/bordered-pulled.less
358
+ - docs/vendor/font-awesome/less/core.less
359
+ - docs/vendor/font-awesome/less/fixed-width.less
360
+ - docs/vendor/font-awesome/less/font-awesome.less
361
+ - docs/vendor/font-awesome/less/icons.less
362
+ - docs/vendor/font-awesome/less/larger.less
363
+ - docs/vendor/font-awesome/less/list.less
364
+ - docs/vendor/font-awesome/less/mixins.less
365
+ - docs/vendor/font-awesome/less/path.less
366
+ - docs/vendor/font-awesome/less/rotated-flipped.less
367
+ - docs/vendor/font-awesome/less/screen-reader.less
368
+ - docs/vendor/font-awesome/less/stacked.less
369
+ - docs/vendor/font-awesome/less/variables.less
370
+ - docs/vendor/font-awesome/scss/_animated.scss
371
+ - docs/vendor/font-awesome/scss/_bordered-pulled.scss
372
+ - docs/vendor/font-awesome/scss/_core.scss
373
+ - docs/vendor/font-awesome/scss/_fixed-width.scss
374
+ - docs/vendor/font-awesome/scss/_icons.scss
375
+ - docs/vendor/font-awesome/scss/_larger.scss
376
+ - docs/vendor/font-awesome/scss/_list.scss
377
+ - docs/vendor/font-awesome/scss/_mixins.scss
378
+ - docs/vendor/font-awesome/scss/_path.scss
379
+ - docs/vendor/font-awesome/scss/_rotated-flipped.scss
380
+ - docs/vendor/font-awesome/scss/_screen-reader.scss
381
+ - docs/vendor/font-awesome/scss/_stacked.scss
382
+ - docs/vendor/font-awesome/scss/_variables.scss
383
+ - docs/vendor/font-awesome/scss/font-awesome.scss
384
+ - docs/vendor/jquery-easing/jquery.easing.compatibility.js
385
+ - docs/vendor/jquery-easing/jquery.easing.js
386
+ - docs/vendor/jquery-easing/jquery.easing.min.js
387
+ - docs/vendor/jquery/jquery.js
388
+ - docs/vendor/jquery/jquery.min.js
389
+ - docs/vendor/simple-line-icons/css/simple-line-icons.css
390
+ - docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.eot
391
+ - docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.svg
392
+ - docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.ttf
393
+ - docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff
394
+ - docs/vendor/simple-line-icons/fonts/Simple-Line-Icons.woff2
395
+ - docs/vendor/simple-line-icons/less/simple-line-icons.less
396
+ - docs/vendor/simple-line-icons/scss/simple-line-icons.scss
397
+ - docs/vendor/tether/tether.js
398
+ - docs/vendor/tether/tether.min.js
399
+ - exe/codepipeline
400
+ - exe/pipe
401
+ - lib/codepipe.rb
402
+ - lib/codepipe/autoloader.rb
403
+ - lib/codepipe/aws_services.rb
404
+ - lib/codepipe/aws_services/helpers.rb
405
+ - lib/codepipe/build.rb
406
+ - lib/codepipe/cli.rb
407
+ - lib/codepipe/command.rb
408
+ - lib/codepipe/completer.rb
409
+ - lib/codepipe/completer/script.rb
410
+ - lib/codepipe/completer/script.sh
411
+ - lib/codepipe/core.rb
412
+ - lib/codepipe/create.rb
413
+ - lib/codepipe/delete.rb
414
+ - lib/codepipe/deploy.rb
415
+ - lib/codepipe/dsl/pipeline.rb
416
+ - lib/codepipe/dsl/pipeline/approve.rb
417
+ - lib/codepipe/dsl/pipeline/codebuild.rb
418
+ - lib/codepipe/dsl/pipeline/github.rb
419
+ - lib/codepipe/dsl/role.rb
420
+ - lib/codepipe/dsl/schedule.rb
421
+ - lib/codepipe/dsl/sns.rb
422
+ - lib/codepipe/dsl/ssm.rb
423
+ - lib/codepipe/dsl/webhook.rb
424
+ - lib/codepipe/evaluate.rb
425
+ - lib/codepipe/help.rb
426
+ - lib/codepipe/help/completion.md
427
+ - lib/codepipe/help/completion_script.md
428
+ - lib/codepipe/help/hello.md
429
+ - lib/codepipe/init.rb
430
+ - lib/codepipe/pipeline.rb
431
+ - lib/codepipe/pipeline/s3_bucket.rb
432
+ - lib/codepipe/role.rb
433
+ - lib/codepipe/schedule.rb
434
+ - lib/codepipe/sequence.rb
435
+ - lib/codepipe/setting.rb
436
+ - lib/codepipe/sns.rb
437
+ - lib/codepipe/stack.rb
438
+ - lib/codepipe/start.rb
439
+ - lib/codepipe/update.rb
440
+ - lib/codepipe/version.rb
441
+ - lib/codepipe/webhook.rb
72
442
  - lib/codepipeline.rb
73
- - lib/codepipeline/version.rb
443
+ - lib/template/.codepipeline/pipeline.rb.tt
444
+ - lib/template/.codepipeline/schedule.rb
445
+ - lib/template/.codepipeline/settings.yml
446
+ - lib/template/.codepipeline/sns.rb
447
+ - spec/fixtures/app/.codepipeline/pipeline.rb
448
+ - spec/fixtures/app/.codepipeline/schedule.rb
449
+ - spec/fixtures/app/.codepipeline/webhook.rb
450
+ - spec/fixtures/pipelines/approve.rb
451
+ - spec/fixtures/pipelines/approve_existing_sns.rb
452
+ - spec/lib/cli_spec.rb
453
+ - spec/lib/pipeline/approve_spec.rb
454
+ - spec/lib/pipeline_spec.rb
455
+ - spec/lib/role_spec.rb
456
+ - spec/lib/schedule_spec.rb
457
+ - spec/lib/webhook_spec.rb
458
+ - spec/spec_helper.rb
74
459
  homepage: https://github.com/tongueroo/codepipeline
75
460
  licenses:
76
461
  - MIT
@@ -93,5 +478,17 @@ requirements: []
93
478
  rubygems_version: 3.0.3
94
479
  signing_key:
95
480
  specification_version: 4
96
- summary: Tool
97
- test_files: []
481
+ summary: CodePipeline DSL Tool to Quickly Create CodePipeline Pipeline
482
+ test_files:
483
+ - spec/fixtures/app/.codepipeline/pipeline.rb
484
+ - spec/fixtures/app/.codepipeline/schedule.rb
485
+ - spec/fixtures/app/.codepipeline/webhook.rb
486
+ - spec/fixtures/pipelines/approve.rb
487
+ - spec/fixtures/pipelines/approve_existing_sns.rb
488
+ - spec/lib/cli_spec.rb
489
+ - spec/lib/pipeline/approve_spec.rb
490
+ - spec/lib/pipeline_spec.rb
491
+ - spec/lib/role_spec.rb
492
+ - spec/lib/schedule_spec.rb
493
+ - spec/lib/webhook_spec.rb
494
+ - spec/spec_helper.rb