evrone-ci-worker 0.2.0.pre6 → 0.2.0.pre7

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
  SHA1:
3
- metadata.gz: 936dd2f15a8805413c5d7196e7938143f679d72d
4
- data.tar.gz: 5768e2127ecdd746f7711458cb3d3c6ca216390c
3
+ metadata.gz: ba149d203da6b56c937f41a88383bb540a8b3ed9
4
+ data.tar.gz: c2bf30caa9440aea2bac789e394a66f6d7bb242b
5
5
  SHA512:
6
- metadata.gz: 4cc36f04fe8731092f25741647ebe3564eb1f822f94c6f6e21b11882b3e4e80661e706d443ccb7a5ca8601e126394c61ace6e79739f6a45f96e7f903290c829d
7
- data.tar.gz: 2931e17494ea2195ca6e9f54c9e38238529ced0ac15526718bc4a63b1fed29e078980ce1c3da1368122e608ea5220205866f91761b03a344e0b230164c7908ff
6
+ metadata.gz: 82023a7a3429c6014f128af9e2bdf3978bf752a315f013bf3ba20ed52bc9df7bb1bf2bd08c4a3e06ca4688c12908a2c7c088d3d33bf3a122141a60905ba9e4db
7
+ data.tar.gz: d31bfbfc8bbcaa00399433df688aef5380683ca88bdbf9f41c81fa216ee65bd34be8efa364846be9fa9aa3aaacf885eaa1aaee6c120bd069e0846b471fe48d7e
data/docker/Dockerfile CHANGED
@@ -13,5 +13,3 @@ ADD ./sv-enable /usr/local/bin/sv-enable
13
13
  # run bootstrap
14
14
  ADD ./bootstrap.sh /tmp/bootstrap.sh
15
15
  RUN /tmp/bootstrap.sh && rm /tmp/bootstrap.sh
16
-
17
- ENTRYPOINT ["/usr/bin/runsvdir", "-P", "/etc/service"]
data/docker/bootstrap.sh CHANGED
@@ -48,6 +48,10 @@ apt-get install -qy openssh-server
48
48
  mkdir -p /var/run/sshd
49
49
  sv-gen ssh "/usr/sbin/sshd -D -e"
50
50
 
51
+ # install syslog
52
+ apt-get install -qy rsyslog
53
+ sv-gen rsyslogd "/usr/sbin/rsyslogd -c5 -n" root
54
+
51
55
  # install postgresql
52
56
  apt-get install -qy postgresql-9.1 postgresql-contrib-9.1
53
57
  echo "local all all trust" > /etc/postgresql/9.1/main/pg_hba.conf
@@ -83,10 +87,12 @@ ln -sf /usr/local/$(basename $PH_PKG .tar.bz2)/bin/phantomjs /usr/local/bin
83
87
 
84
88
  # add ruby
85
89
  apt-get install -qy rbenv rbenv-2.0.0-p195 rbenv-1.9.3-p448 rbenv-2.0.0-p247 rbenv-1.9.3-p392
90
+ apt-get install -qy ruby1.8 ruby1.8-dev rubygems # 1.8.7
86
91
  env RBENV_VERSION=2.0.0-p247 rbenv exec gem install bundler --no-ri --no-rdoc
87
92
  env RBENV_VERSION=2.0.0-p195 rbenv exec gem install bundler --no-ri --no-rdoc
88
93
  env RBENV_VERSION=1.9.3-p448 rbenv exec gem install bundler --no-ri --no-rdoc
89
94
  env RBENV_VERSION=1.9.3-p392 rbenv exec gem install bundler --no-ri --no-rdoc
95
+ env RBENV_VERSION=system rbenv exec gem install bundler --no-ri --no-rdoc
90
96
  rbenv rehash
91
97
 
92
98
  apt-get -qy clean autoremove
@@ -95,3 +101,4 @@ sv-enable postgresql
95
101
  sv-enable ssh
96
102
  sv-enable mysql
97
103
  sv-enable redis-server
104
+ sv-enable rsyslogd
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_runtime_dependency 'evrone-ci-common', "= #{Evrone::CI::Worker::VERSION}"
22
22
  spec.add_runtime_dependency 'evrone-ci-message', "= #{Evrone::CI::Worker::VERSION}"
23
- spec.add_runtime_dependency 'evrone-common-amqp', '~> 0.1.1'
23
+ spec.add_runtime_dependency 'evrone-common-amqp', '~> 0.2.4'
24
24
  spec.add_runtime_dependency 'docker-api', '= 1.5.4'
25
25
  spec.add_runtime_dependency 'hashr', '= 0.0.22'
26
26
 
@@ -1,5 +1,6 @@
1
1
  require 'optparse'
2
2
  require 'evrone/common/amqp'
3
+ require 'evrone/ci/common/env_file'
3
4
 
4
5
  module Evrone
5
6
  module CI
@@ -8,6 +9,7 @@ module Evrone
8
9
 
9
10
  include Helper::Config
10
11
  include Helper::Logger
12
+ include Common::EnvFile
11
13
 
12
14
  def initialize
13
15
  @options = {}
@@ -16,8 +18,6 @@ module Evrone
16
18
  end
17
19
 
18
20
  def run
19
- logger.warn "spawn inside #{config.path_prefix}"
20
-
21
21
  trap('INT') {
22
22
  Thread.new do
23
23
  Evrone::Common::AMQP.shutdown
@@ -40,27 +40,17 @@ module Evrone
40
40
  opts.on("-p", "--path PATH", "Working directory, default current directory") do |v|
41
41
  @options[:path_prefix] = v.to_s
42
42
  end
43
- opts.on("-c", "--config FILE", "Path to configuration file") do |v|
44
- read_configuration v
43
+ opts.on("-c", "--config FILE", "Path to configuration file, default /etc/evrone/ci") do |v|
44
+ @options[:config] = v
45
45
  end
46
46
  end.parse!
47
47
 
48
+ read_env_file @options.delete(:config)
49
+
48
50
  @options.each_pair do |k,v|
49
51
  config.public_send("#{k}=", v)
50
52
  end
51
53
  end
52
-
53
- def read_configuration(file)
54
- file = File.expand_path(file)
55
- buf = File.read(file)
56
-
57
- buf.split("\n").each do |line|
58
- puts line
59
- env, value = line.split("=").map(&:strip)
60
- ENV[env] = value
61
- end
62
- end
63
-
64
54
  end
65
55
  end
66
56
  end
@@ -26,7 +26,7 @@ module Evrone
26
26
 
27
27
  docker: {
28
28
  remote_dir: "/home/ci",
29
- init: %w{ /usr/local/bin/runsvdir -P /etc/service },
29
+ init: %w{ /usr/bin/runsvdir -P /etc/service },
30
30
  image: "ci",
31
31
 
32
32
  ssh: {
@@ -8,17 +8,19 @@ module Evrone
8
8
  include Evrone::Common::AMQP::Consumer
9
9
 
10
10
  exchange 'ci.jobs'
11
- queue 'ci.worker.jobs.generic'
11
+ queue 'ci.worker.jobs'
12
12
  ack true
13
13
 
14
14
  model Message::PerformJob
15
15
 
16
16
  def perform(message)
17
- job = Job.new message
18
- number = Thread.current[:consumer_id] || 0
19
- path_prefix = "/tmp/.test/job.#{number}"
20
- Worker.perform(job, path_prefix)
21
- ack!
17
+ Worker.logger.tagged self.class.consumer_id do
18
+ job = Job.new message
19
+ number = Thread.current[:consumer_id] || 0
20
+ path_prefix = "/tmp/.test/job.#{number}"
21
+ Worker.perform(job, path_prefix)
22
+ ack!
23
+ end
22
24
  end
23
25
 
24
26
  end
@@ -1,54 +1,3 @@
1
- require 'evrone/common/amqp'
1
+ require 'evrone/ci/common/amqp'
2
2
 
3
- module Evrone::CI::Worker::AMQP
4
-
5
- Base = Struct.new("Subscribing", :app) do
6
- include Evrone::CI::Worker::Helper::Logger
7
-
8
- def consumer_name
9
- Thread.current[:consumer_name]
10
- end
11
-
12
- def consumer_id
13
- Thread.current[:consumer_id]
14
- end
15
-
16
- def consumer_tag
17
- consumer_id ? "#{consumer_name.split('::').last} #{consumer_id}" : consumer_name
18
- end
19
- end
20
-
21
- class Subscribing < Base
22
- def call(env)
23
- logger.tagged(consumer_tag) do
24
- logger.warn "subsribing #{env[:exchange].name}"
25
- rs = app.call env
26
- logger.warn "shutdown"
27
- rs
28
- end
29
- end
30
- end
31
-
32
- class Recieving < Base
33
- def call(env)
34
- logger.warn "payload recieved #{env[:payload].inspect[0...60]}..."
35
- rs = app.call env
36
- logger.warn "commit message"
37
- rs
38
- end
39
- end
40
- end
41
-
42
- Evrone::Common::AMQP.configure do |c|
43
- c.subscribing do
44
- use Evrone::CI::Worker::AMQP::Subscribing
45
- end
46
-
47
- c.recieving do
48
- use Evrone::CI::Worker::AMQP::Recieving
49
- end
50
-
51
- c.content_type = 'application/x-protobuf'
52
- c.logger = nil
53
- c.url = Evrone::CI::Worker.config.amqp_url
54
- end
3
+ Evrone::CI::Common::AMQP.setup(Evrone::CI::Worker.logger, url: Evrone::CI::Worker.config.amqp_url)
@@ -39,7 +39,7 @@ module Evrone
39
39
  open_ssh(host, "ci", ssh_options) do |ssh|
40
40
  begin
41
41
  env.ssh = ssh
42
- logger.tagged "SSH" do
42
+ logger.tagged "ssh" do
43
43
  yield
44
44
  end
45
45
  end
@@ -57,7 +57,7 @@ module Evrone
57
57
  env.container_gateway ||= env.container.json['NetworkSettings']['Gateway']
58
58
  env.docker_repo_dir = Pathname.new(config.docker.remote_dir).join(env.job.message.name)
59
59
 
60
- logger.tagged "DOCKER #{env.container.id}" do
60
+ logger.tagged "docker #{env.container.id}" do
61
61
  begin
62
62
  logger.info "start container"
63
63
  sleep 3
@@ -7,9 +7,7 @@ module Evrone
7
7
  include Helper::Logger
8
8
 
9
9
  def call(env)
10
- matrix_key = env.job.message.matrix_keys.join(" ")
11
-
12
- logger.tagged("JOB #{env.job.message.id}.#{env.job.message.job_id} #{matrix_key}") do
10
+ logger.tagged("job #{env.job.message.id}.#{env.job.message.job_id}") do
13
11
  logger.info "starting job"
14
12
  rs = app.call env
15
13
  logger.info "done job"
@@ -1,4 +1,5 @@
1
1
  require 'evrone/ci/message'
2
+ require 'evrone/ci/common/error_notifier'
2
3
 
3
4
  module Evrone
4
5
  module CI
@@ -22,6 +23,7 @@ module Evrone
22
23
  rescue Exception => e
23
24
  env.job.add_to_output("\n\nERROR: #{e.inspect}\n")
24
25
  logger.error("ERROR: #{e.inspect}\n BACKTRACE:\n#{e.backtrace.map{|i| " #{i}" }.join("\n")}")
26
+ Common::ErrorNotifier.notify(e)
25
27
  end
26
28
 
27
29
  msg = "\nDone. Your build exited with %s.\n"
@@ -1,7 +1,7 @@
1
1
  module Evrone
2
2
  module CI
3
3
  module Worker
4
- VERSION = "0.2.0.pre6"
4
+ VERSION = "0.2.0.pre7"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evrone-ci-worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre6
4
+ version: 0.2.0.pre7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Galinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2013-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evrone-ci-common
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.0.pre6
19
+ version: 0.2.0.pre7
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.pre6
26
+ version: 0.2.0.pre7
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.pre6
33
+ version: 0.2.0.pre7
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.pre6
40
+ version: 0.2.0.pre7
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: evrone-common-amqp
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.1
47
+ version: 0.2.4
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.1.1
54
+ version: 0.2.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: docker-api
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -212,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
212
  version: 1.3.1
213
213
  requirements: []
214
214
  rubyforge_project:
215
- rubygems_version: 2.0.2
215
+ rubygems_version: 2.1.9
216
216
  signing_key:
217
217
  specification_version: 4
218
218
  summary: ci worker