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 +4 -4
- data/docker/Dockerfile +0 -2
- data/docker/bootstrap.sh +7 -0
- data/evrone-ci-worker.gemspec +1 -1
- data/lib/evrone/ci/worker/cli.rb +6 -16
- data/lib/evrone/ci/worker/configuration.rb +1 -1
- data/lib/evrone/ci/worker/consumers/jobs_consumer.rb +8 -6
- data/lib/evrone/ci/worker/initializers/amqp.rb +2 -53
- data/lib/evrone/ci/worker/middlewares/docker_start_container.rb +2 -2
- data/lib/evrone/ci/worker/middlewares/log_job.rb +1 -3
- data/lib/evrone/ci/worker/middlewares/update_job_status.rb +2 -0
- data/lib/evrone/ci/worker/version.rb +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba149d203da6b56c937f41a88383bb540a8b3ed9
|
4
|
+
data.tar.gz: c2bf30caa9440aea2bac789e394a66f6d7bb242b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82023a7a3429c6014f128af9e2bdf3978bf752a315f013bf3ba20ed52bc9df7bb1bf2bd08c4a3e06ca4688c12908a2c7c088d3d33bf3a122141a60905ba9e4db
|
7
|
+
data.tar.gz: d31bfbfc8bbcaa00399433df688aef5380683ca88bdbf9f41c81fa216ee65bd34be8efa364846be9fa9aa3aaacf885eaa1aaee6c120bd069e0846b471fe48d7e
|
data/docker/Dockerfile
CHANGED
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
|
data/evrone-ci-worker.gemspec
CHANGED
@@ -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.
|
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
|
|
data/lib/evrone/ci/worker/cli.rb
CHANGED
@@ -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
|
-
|
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
|
@@ -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
|
11
|
+
queue 'ci.worker.jobs'
|
12
12
|
ack true
|
13
13
|
|
14
14
|
model Message::PerformJob
|
15
15
|
|
16
16
|
def perform(message)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
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 "
|
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 "
|
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
|
-
|
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"
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
215
|
+
rubygems_version: 2.1.9
|
216
216
|
signing_key:
|
217
217
|
specification_version: 4
|
218
218
|
summary: ci worker
|