evrone-ci-router 0.2.0.pre23 → 0.2.0.pre24

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: 857440d03ba3e8bf50be6caf1aa03368060c200a
4
- data.tar.gz: ce9fd7abad14ebbdbb62c6249e6c1a5e034edcee
3
+ metadata.gz: 4cf334ca7780d999da82d083110de69fb5985109
4
+ data.tar.gz: a4be0b9b40b980822f47c775a850a46353a99872
5
5
  SHA512:
6
- metadata.gz: f0e47b15e14ad3e615868ceb7e8b8ac90ca3696b42ff29e21a8ff7ab52ec455961f2182ad4cbef320e5653fea86979d0f36bd0a6ad221b3df28457958cf6cf13
7
- data.tar.gz: 788a8ebb7646b4c4b00d62dc8502f7a01353c5f5b24a772685177c5e84144fce21069b6921ea70a8383ad4934a06e7b36495eebc35a8a81acab2f5abf33b2ae0
6
+ metadata.gz: 2c001563d39698c83d532272e48a385fdd7372c721655772a8e843beb560b3c4242c025d080900c3ab7420a626a2cde3b9ca1a1912fa1c29a37bcea95b862f1c
7
+ data.tar.gz: c4fe2c98e7b4d5df2fc8abd20b038759aa7d3457aed489ce623ba270fb8f5e0ef5a915400677aee2cd93813757a8da484f9fa270b56665b5c29298b6d9eea3b3
@@ -90,6 +90,7 @@ module Evrone
90
90
 
91
91
  configuration: configuration,
92
92
  build: build,
93
+ cache_key: []
93
94
  )
94
95
  end
95
96
 
@@ -13,6 +13,8 @@ module Evrone
13
13
 
14
14
  def call(env)
15
15
  if rvm env
16
+ env.cache_key << "rvm-#{rvm env}"
17
+
16
18
  env.before_install.tap do |i|
17
19
  i << 'eval "$(rbenv init -)" || true'
18
20
  i << "rbenv shell #{make_rbenv_version_command env}"
@@ -12,6 +12,8 @@ module Evrone
12
12
  CASHER_BIN = "$HOME/.casher/bin/casher"
13
13
 
14
14
  def call(env)
15
+ rs = app.call env
16
+
15
17
  if config.webdav_cache_url
16
18
  assign_url_to_env(env)
17
19
  prepare(env)
@@ -19,24 +21,35 @@ module Evrone
19
21
  add(env)
20
22
  push(env)
21
23
  end
22
- app.call env
24
+
25
+ rs
23
26
  end
24
27
 
25
28
  private
26
29
 
27
30
  def assign_url_to_env(env)
28
- name = []
29
- name << env.build.message.name.dup
31
+ urls = []
32
+ branch = env.build.message.branch
33
+ if branch != 'master'
34
+ urls << url_for(env, branch)
35
+ end
36
+ puts urls.inspect
37
+ urls << url_for(env, 'master')
30
38
 
31
- # convert keys from ["rvm:2.0.0"] to "rvm 2.0.0"
32
- name += env.configuration.matrix_keys.map{|i| i.split(":").join(" ") }
33
- # replace non word chars to ' '
34
- name = name.join("-").gsub(/[^a-z0-9_\-.]/, ' ')
39
+ env.webdav_fetch_url = urls
40
+ env.webdav_push_url = url_for(env, branch)
41
+ env
42
+ end
43
+
44
+ def url_for(env, branch)
45
+ name = []
35
46
 
36
- name = name.strip().gsub(/ +/, '-').downcase
37
- name << ".tgz"
47
+ name << env.build.message.name.dup
48
+ name << branch
49
+ name += env.cache_key
38
50
 
39
- env.webdav_cache_url = "#{config.webdav_cache_url}/#{name}"
51
+ name = name.join("-").gsub(/[^a-z0-9_\-.]/, '-')
52
+ "#{config.webdav_cache_url}/#{name}.tgz"
40
53
  end
41
54
 
42
55
  def prepare(env)
@@ -51,8 +64,8 @@ module Evrone
51
64
  end
52
65
 
53
66
  def fetch(env)
54
- env.init << "echo fetch cached content"
55
- env.init << "#{CASHER_BIN} fetch #{env.webdav_cache_url} || true"
67
+ urls = env.webdav_fetch_url.join(" ")
68
+ env.init << "#{CASHER_BIN} fetch #{urls} || true"
56
69
  end
57
70
 
58
71
  def add(env)
@@ -61,8 +74,9 @@ module Evrone
61
74
  end
62
75
 
63
76
  def push(env)
64
- env.after_script << "echo push cached content"
65
- env.after_script << "#{CASHER_BIN} push #{env.webdav_cache_url}"
77
+ if env.webdav_push_url
78
+ env.after_script << "#{CASHER_BIN} push #{env.webdav_push_url}"
79
+ end
66
80
  end
67
81
 
68
82
  end
@@ -1,7 +1,7 @@
1
1
  module Evrone
2
2
  module CI
3
3
  class Router
4
- VERSION = "0.2.0.pre23"
4
+ VERSION = "0.2.0.pre24"
5
5
  end
6
6
  end
7
7
  end
@@ -5,9 +5,15 @@ require 'fileutils'
5
5
  describe Evrone::CI::Router::ScriptBuilder::WebdavCache do
6
6
  let(:path) { '/tmp/.test' }
7
7
  let(:app) { ->(_) { _ } }
8
- let(:build) { create :build }
8
+ let(:build) { create :build, branch: "feature" }
9
9
  let(:config) { create :configuration }
10
- let(:env) { OpenStruct.new build: build, init: [], configuration: config, after_script: [] }
10
+ let(:env) { OpenStruct.new(
11
+ build: build,
12
+ init: [],
13
+ configuration: config,
14
+ after_script: [],
15
+ cache_key: ['rvm-1.9.3']
16
+ )}
11
17
  let(:mid) { described_class.new app }
12
18
 
13
19
  subject { mid.call env }
@@ -26,7 +32,11 @@ describe Evrone::CI::Router::ScriptBuilder::WebdavCache do
26
32
  it { should eq env }
27
33
  its(:init) { should_not be_empty }
28
34
  its(:after_script) { should_not be_empty }
29
- its(:webdav_cache_url) { should eq "http://localhost:8080/evrone-test-repo-rvm-2.0.0.tgz" }
35
+ its(:webdav_push_url) { should eq "http://localhost:8080/evrone-test-repo-feature-rvm-1.9.3.tgz" }
36
+ its(:webdav_fetch_url) { should eq(
37
+ ["http://localhost:8080/evrone-test-repo-feature-rvm-1.9.3.tgz",
38
+ "http://localhost:8080/evrone-test-repo-master-rvm-1.9.3.tgz"]
39
+ ) }
30
40
 
31
41
  context "execute command" do
32
42
  include Evrone::Common::Spawn
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evrone-ci-router
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre23
4
+ version: 0.2.0.pre24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Galinsky
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.0.pre23
19
+ version: 0.2.0.pre24
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.0.pre23
26
+ version: 0.2.0.pre24
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: evrone-ci-message
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.0.pre23
33
+ version: 0.2.0.pre24
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.0.pre23
40
+ version: 0.2.0.pre24
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: evrone-ci-build_configuration
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.2.0.pre23
47
+ version: 0.2.0.pre24
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.2.0.pre23
54
+ version: 0.2.0.pre24
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: evrone-common-amqp
57
57
  requirement: !ruby/object:Gem::Requirement