assemblage 0.1.pre20180313184155

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9969f40dd2d446bc07d5cd3ce6607de2778572b0815a9ffdf76c2863b8a25217
4
+ data.tar.gz: ffe6d876a55ef4ed29eaf19a7edf32f4829a7532bc3f54b82fdaa8a6d321cc9b
5
+ SHA512:
6
+ metadata.gz: 38922eb7fc589db27b8205cabc326f13cc180e78ff5ea8e7f21005efef2c642c99e2f71fdde40febde952c0c32c47c1f66afaca28cb9fbe4742e80bacb4df200
7
+ data.tar.gz: 8497bda7f18c88abb95e8b1cd7ab800f8670c6671b718d86c6dfb1449fa031e675e5abf99b26c72fc6a317d3a8955db9c0f4dd149fa12724b9a5ab2971d63b70
@@ -0,0 +1,9 @@
1
+ # Simplecov config
2
+
3
+ SimpleCov.start do
4
+ add_filter 'spec'
5
+ add_filter 'integration'
6
+ add_group "Needing tests" do |file|
7
+ file.covered_percent < 90
8
+ end
9
+ end
@@ -0,0 +1,35 @@
1
+ 2018-03-13 Michael Granger <ged@FaerieMUD.org>
2
+
3
+ * .gems, Gemfile.devel.lock, Manifest.txt, Rakefile,
4
+ assemblage.gemspec, bin/assemblage, lib/assemblage.rb,
5
+ lib/assemblage/auth.rb, lib/assemblage/command/create_server.rb,
6
+ lib/assemblage/command/new.rb, lib/assemblage/mixins.rb,
7
+ lib/assemblage/server.rb, lib/assemblage/worker.rb,
8
+ spec/assemblage/auth_spec.rb, spec/assemblage/mixins_spec.rb,
9
+ spec/assemblage/server_spec.rb, spec/assemblage_spec.rb,
10
+ spec/spec_helper.rb:
11
+ Add boilerplate server, worker classes
12
+ [230c9e541c0e] [tip]
13
+
14
+ * README.md, Rakefile:
15
+ Update API docs build and the README
16
+ [fe4bddd175ef] [github/master]
17
+
18
+ * .hgignore:
19
+ Ignore generated files
20
+ [a7872c39b4ef]
21
+
22
+ * .gems, Gemfile.devel, README.md, Rakefile, assemblage.gemspec,
23
+ bin/assemblage, lib/assemblage.rb, lib/assemblage/cli.rb,
24
+ lib/assemblage/command/new.rb:
25
+ Refine the prototype a bit
26
+ [b2ac3f00c7ba]
27
+
28
+ 2018-03-12 Michael Granger <ged@FaerieMUD.org>
29
+
30
+ * .document, .editorconfig, .gems, .hgignore, .pryrc, .rdoc_options,
31
+ .ruby-gemset, .ruby-version, .simplecov, Gemfile, History.md,
32
+ LICENSE.txt, Manifest.txt, README.md, Rakefile, certs/ged.pem,
33
+ lib/assemblage.rb, spec/assemblage_spec.rb, spec/spec_helper.rb:
34
+ Initial commit.
35
+ [f8c596df1d7d]
@@ -0,0 +1,4 @@
1
+ ## v0.0.1 [YYYY-MM-DD] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Initial release.
4
+
@@ -0,0 +1,218 @@
1
+ # Assemblage
2
+
3
+ A continuous integration toolkit.
4
+
5
+ home
6
+ : https://assembla.ge/
7
+
8
+ code
9
+ : https://bitbucket.org/sascrotch/assemblage
10
+
11
+ github
12
+ : https://github.com/ged/assemblage
13
+
14
+ docs
15
+ : http://assembla.ge/docs/assemblage
16
+
17
+
18
+ ## Description
19
+
20
+ Assemblage is a continuous integration toolkit. It's intended to provide you
21
+ with a minimal infrastructure for distributing and performing automated tasks
22
+ for one or more version control repositories. It makes as few assumptions as
23
+ possible as to what those things might be.
24
+
25
+ It's still just a personal project, but if you want to use it I'm happy to
26
+ answer questions and entertain suggestions, especially in the form of
27
+ patches/PRs.
28
+
29
+ Assemblage has three primary parts: the **Assembly Server**, **Assembly
30
+ Workers**, and **Repositories**.
31
+
32
+ <dl>
33
+ <dt>Assembly Server</dt>
34
+ <dd>Aggregates and distributes events from <em>repositories</em> to
35
+ <em>workers</em> via one or more "assemblies".</dd>
36
+
37
+ <dt>Assembly Workers</dt>
38
+ <dd>Listens for events published by the <em>assembly server</em>, checks out
39
+ a <em>repository</em>, and runs an assembly script in that repository.</dd>
40
+
41
+ <dt>Repository</dt>
42
+ <dd>A distributed version control repository. Assemblage currently supports
43
+ Mercurial and Git.</dd>
44
+ </dl>
45
+
46
+
47
+
48
+ ## Prerequisites
49
+
50
+ * Ruby
51
+ * libzmq >= 4.2.3 (with drafts enabled)
52
+ * czmq >= 4.1.0 (with drafts enabled)
53
+ * A DVCS; Assemblage currently supports Mercurial and Git.
54
+
55
+
56
+ ## Installation
57
+
58
+ This example uses three different servers for the three parts, but you can, of
59
+ course, run all of this on a single host.
60
+
61
+ You'll first need a server to manage your assemblies:
62
+
63
+ example $ sudo gem install assemblage
64
+ example $ assemblage create-server /usr/local/assemblage
65
+ Creating a server run directory in /usr/local/assemblage...
66
+ Generating a server key...
67
+ Creating the assemblies database...
68
+ done.
69
+
70
+ You can start the assembly server like so:
71
+ assemblage start-server /usr/local/assemblage
72
+
73
+ Server public key is:
74
+ &}T0.[{MZSJC]roN-{]x2QCkG+dXki!6j!.1JU1u
75
+
76
+ example $ assemblage start-server /usr/local/assemblage
77
+ Starting assembly server at:
78
+ tcp://example.com:7872
79
+
80
+ Now (possibly on a different host) you can create a new worker installation.
81
+ Workers have a name and a list of tags that describe its capabilities, e.g.,
82
+ the OS it's running on, installed software, etc. Our example is running on
83
+ FreeBSD 11, and has Ruby 2.4, Ruby 2.5, Python 2.7, ZeroMQ, and the PostgreSQL
84
+ client libraries available. We'll use a pretty simple tag convention but you
85
+ can make it as simple or complex as you want.
86
+
87
+ user@example-client $ sudo gem install assemblage
88
+ user@example-client $ mkdir -p /usr/local/assemblage
89
+ user@example-client $ cd /usr/local/assemblage
90
+ user@example-client $ assemblage create-worker \
91
+ -t freebsd,freebsd11,ruby,ruby24,ruby25,python,\
92
+ python27,zeromq,libpq worker1
93
+ Creating a new assembly worker run directory in
94
+ /usr/local/assemblage/worker1...
95
+ Set up with worker name: example-client-worker1
96
+ done.
97
+
98
+ Tell it that it should talk to the new server we just set up:
99
+
100
+ user@example-client $ cd /usr/local/assemblage/worker1
101
+ user@example-client $ assemblage add-server \
102
+ --key="&}T0.[{MZSJC]roN-{]x2QCkG+dXki!6j!.1JU1u" \
103
+ tcp://example.com:7872
104
+ Talking to tcp://example.com:7872...
105
+ Registering client `example-client-worker1`...
106
+ Requesting a client key...
107
+ done.
108
+
109
+ This will register the client with the server, but it needs to be approved
110
+ on the server before it can start working:
111
+
112
+ user@example $ assemblage approve-worker example-client-worker1
113
+ Looking for worker registration... found.
114
+ Approving connections from example-client-worker1...
115
+ done.
116
+
117
+ Now you can start the worker, which will listen for jobs it can work on.
118
+
119
+ user@example-client $ cd /usr/local/assemblage/worker1
120
+ user@example-client $ assemblage start-worker
121
+ Starting assembly worker `worker1`...
122
+ Connecting to assembly servers...
123
+ example... done.
124
+ Waiting for jobs...
125
+
126
+ Now we need our repositories to notify the assembly server when events occur.
127
+ We'll hook up a Mercurial repo for a Ruby library so that it runs unit tests
128
+ whenever there's a new commit. First we'll install assemblage on the repo
129
+ server and add the server we're going to send events to:
130
+
131
+ user@example-repo $ sudo gem install assemblage
132
+ user@example-repo $ cd /usr/local/hg/repos/project1
133
+ user@example-repo $ hg init
134
+ user@example-repo $ assemblage add-repo \
135
+ --type=hg \
136
+ --key="&}T0.[{MZSJC]roN-{]x2QCkG+dXki!6j!.1JU1u" \
137
+ http://repo.example.com/project1 tcp://example.com:7872
138
+ Talking to tcp://example.com:7872...
139
+ Registering repo `http://repo.example.com/project1`...
140
+ Requesting a repo key...
141
+ done.
142
+
143
+ We'll add a hook to the repository's .hg/hgrc that looks like:
144
+
145
+ [hooks]
146
+ incoming.assemblage = /usr/local/bin/assemblage send-event commit \
147
+ project1 $HG_NODE
148
+
149
+ We'll need to approve the repo registration now too:
150
+
151
+ user@example $ assemblage approve-repo http://repo.example.com/project1
152
+ Looking for repo registration... found.
153
+ Approving repo events from http://repo.example.com/project1...
154
+ done.
155
+
156
+ And finally, we'll combine all the parts into an assembly called
157
+ `project1-freebsd-tests` that will run on a worker with the `freebsd`, `ruby`,
158
+ and `libpq` tags for each commit to the repo at
159
+ `http://repo.example.com/project1`:
160
+
161
+ user@example $ assemblage add -t freebsd,ruby,libpq \
162
+ http://repo.example.com/project1
163
+
164
+ Now when commits arrive at our repo, it will send events to the assemblage server, which will queue up an assembly. Because the worker we added has all of the required tags, it will:
165
+
166
+ - get a notification of the commit
167
+ - clone the repository checked out to that commit
168
+ - look for an assembly script called `commit` in a directory called `.assemblies/` (by default)
169
+ - if it finds one, it will run the script
170
+ - it will then send back any files contained in the `.assemblies/` subdirectory with the SHA of the commit (if it exists) along with the exit code of the script.
171
+
172
+
173
+
174
+ ## Contributing
175
+
176
+ You can check out the current development source with Mercurial via
177
+ [Bitbucket](http://bitbucket.org/sascrotch/assemblage). Or if you prefer Git,
178
+ via [its Github mirror](https://github.com/ged/assemblage).
179
+
180
+ After checking out the source, run:
181
+
182
+ $ rake newb
183
+
184
+ This task will install any missing dependencies, run the tests/specs,
185
+ and generate the API documentation.
186
+
187
+
188
+ ## License
189
+
190
+ Copyright (c) 2018, Michael Granger
191
+ All rights reserved.
192
+
193
+ Redistribution and use in source and binary forms, with or without
194
+ modification, are permitted provided that the following conditions are met:
195
+
196
+ * Redistributions of source code must retain the above copyright notice,
197
+ this list of conditions and the following disclaimer.
198
+
199
+ * Redistributions in binary form must reproduce the above copyright notice,
200
+ this list of conditions and the following disclaimer in the documentation
201
+ and/or other materials provided with the distribution.
202
+
203
+ * Neither the name of the author/s, nor the names of the project's
204
+ contributors may be used to endorse or promote products derived from this
205
+ software without specific prior written permission.
206
+
207
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
208
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
209
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
210
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
211
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
212
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
213
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
214
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
215
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
216
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
217
+
218
+
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env rake
2
+
3
+ begin
4
+ require 'hoe'
5
+ rescue LoadError
6
+ abort "This Rakefile requires hoe (gem install hoe)"
7
+ end
8
+
9
+ GEMSPEC = 'assemblage.gemspec'
10
+
11
+
12
+ Hoe.plugin :mercurial
13
+ Hoe.plugin :signing
14
+ Hoe.plugin :deveiate
15
+
16
+ Hoe.plugins.delete :rubyforge
17
+
18
+ hoespec = Hoe.spec 'assemblage' do |spec|
19
+ spec.urls = {
20
+ home: 'https://assembla.ge/',
21
+ code: 'https://bitbucket.org/sascrotch/assemblage',
22
+ github: 'https://github.com/ged/assemblage',
23
+ docs: 'http://assembla.ge/docs/assemblage'
24
+ }
25
+
26
+ spec.readme_file = 'README.md'
27
+ spec.history_file = 'History.md'
28
+
29
+ spec.extra_rdoc_files = FileList[ '*.rdoc', '*.md' ]
30
+ spec.license 'BSD-3-Clause'
31
+
32
+ spec.developer 'Michael Granger', 'ged@FaerieMUD.org'
33
+
34
+ spec.dependency 'loggability', '~> 0.11'
35
+ spec.dependency 'configurability', '~> 3.2'
36
+ spec.dependency 'hglib', '~> 0'
37
+ spec.dependency 'git', '~> 1.3'
38
+ spec.dependency 'gli', '~> 2.17'
39
+ spec.dependency 'tty', '~> 0.7'
40
+ spec.dependency 'cztop-reactor', '~> 0.3'
41
+
42
+ spec.dependency 'hoe-deveiate', '~> 0.3', :developer
43
+ spec.dependency 'simplecov', '~> 0.7', :developer
44
+ spec.dependency 'rdoc-generator-fivefish', '~> 0.4', :developer
45
+ spec.dependency 'rdoc', '~> 6.0', :developer
46
+
47
+ spec.require_ruby_version( '>=2.3.4' )
48
+ spec.hg_sign_tags = true if spec.respond_to?( :hg_sign_tags= )
49
+ spec.check_history_on_release = true if spec.respond_to?( :check_history_on_release= )
50
+
51
+ self.rdoc_locations << "deveiate:/usr/local/assemblage/docs/#{remote_rdoc_dir}"
52
+ end
53
+
54
+
55
+ ENV['VERSION'] ||= hoespec.spec.version.to_s
56
+
57
+ # Run the tests before checking in
58
+ task 'hg:precheckin' => [ :check_history, :check_manifest, :gemspec, :spec ]
59
+
60
+ task :test => :spec
61
+
62
+ # Rebuild the ChangeLog immediately before release
63
+ task :prerelease => 'ChangeLog'
64
+ CLOBBER.include( 'ChangeLog' )
65
+
66
+ desc "Build a coverage report"
67
+ task :coverage do
68
+ ENV["COVERAGE"] = 'yes'
69
+ Rake::Task[:spec].invoke
70
+ end
71
+ CLOBBER.include( 'coverage' )
72
+
73
+
74
+ # Use the fivefish formatter for docs generated from development checkout
75
+ if File.directory?( '.hg' )
76
+ require 'rdoc/task'
77
+
78
+ Rake::Task[ 'docs' ].clear
79
+ RDoc::Task.new( 'docs' ) do |rdoc|
80
+ rdoc.main = "README.md"
81
+ rdoc.markup = 'markdown'
82
+ rdoc.rdoc_files.include( "*.md", "*.rdoc", "ChangeLog", "lib/**/*.rb" )
83
+ rdoc.generator = :fivefish
84
+ rdoc.title = 'Assemblage'
85
+ rdoc.rdoc_dir = 'doc'
86
+ end
87
+ end
88
+
89
+ task :gemspec => GEMSPEC
90
+ file GEMSPEC => __FILE__
91
+ task GEMSPEC do |task|
92
+ spec = $hoespec.spec
93
+ spec.files.delete( '.gemtest' )
94
+ spec.signing_key = nil
95
+ spec.cert_chain = ['certs/ged.pem']
96
+ spec.version = "#{spec.version.bump}.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
97
+ File.open( task.name, 'w' ) do |fh|
98
+ fh.write( spec.to_ruby )
99
+ end
100
+ end
101
+ CLOBBER.include( GEMSPEC.to_s )
102
+
103
+ task :default => :gemspec
104
+
@@ -0,0 +1,39 @@
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
3
+
4
+ require 'loggability'
5
+ require 'configurability'
6
+
7
+
8
+ # Toplevel namespace
9
+ module Assemblage
10
+ extend Loggability,
11
+ Configurability
12
+
13
+ # Package version
14
+ VERSION = '0.0.1'
15
+
16
+ # Version control revision
17
+ REVISION = %q$Revision: 230c9e541c0e $
18
+
19
+
20
+ # Loggability API
21
+ log_as :assemblage
22
+
23
+
24
+ # Configurability API
25
+ configurability( :assemblage ) do
26
+
27
+ setting :directory
28
+
29
+ end
30
+
31
+
32
+ # Autoload subordinate modules
33
+ autoload :Auth, 'assemblage/auth'
34
+ autoload :CLI, 'assemblage/cli'
35
+ autoload :Server, 'assemblage/server'
36
+ autoload :Worker, 'assemblage/worker'
37
+
38
+ end # module Assemblage
39
+
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env rspec -cfd
2
+ #encoding: utf-8
3
+
4
+ require_relative 'spec_helper'
5
+
6
+ require 'rspec'
7
+ require 'assemblage'
8
+
9
+ describe Assemblage do
10
+
11
+ it_should_behave_like "an object with Configurability"
12
+
13
+
14
+ it "has a VERSION constant" do
15
+ expect( described_class::VERSION ).to match( /\A\d+\.\d+\.\d+/ )
16
+ end
17
+
18
+ end
19
+
@@ -0,0 +1,25 @@
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
3
+
4
+ require 'simplecov' if ENV['COVERAGE']
5
+
6
+ require 'rspec'
7
+ require 'loggability/spechelpers'
8
+ require 'configurability/behavior'
9
+
10
+ require 'assemblage'
11
+
12
+
13
+ ### Mock with RSpec
14
+ RSpec.configure do |config|
15
+ config.run_all_when_everything_filtered = true
16
+ config.filter_run :focus
17
+ config.order = 'random'
18
+ config.mock_with( :rspec ) do |mock|
19
+ mock.syntax = :expect
20
+ end
21
+
22
+ config.extend( Loggability::SpecHelpers )
23
+ end
24
+
25
+
metadata ADDED
@@ -0,0 +1,304 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: assemblage
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.pre20180313184155
5
+ platform: ruby
6
+ authors:
7
+ - Michael Granger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
14
+ GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
15
+ HhcNMTcwOTI3MDAzMDQ0WhcNMTgwOTI3MDAzMDQ0WjA+MQwwCgYDVQQDDANnZWQx
16
+ GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
17
+ ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/JWGRHO+USzR97vXjkFgt
18
+ 83qeNf2KHkcvrRTSnR64i6um/ziin0I0oX23H7VYrDJC9A/uoUa5nGRJS5Zw/+wW
19
+ ENcvWVZS4iUzi4dsYJGY6yEOsXh2CcF46+QevV8iE+UmbkU75V7Dy1JCaUOyizEt
20
+ TH5UHsOtUU7k9TYARt/TgYZKuaoAMZZd5qyVqhF1vV+7/Qzmp89NGflXf2xYP26a
21
+ 4MAX2qqKX/FKXqmFO+AGsbwYTEds1mksBF3fGsFgsQWxftG8GfZQ9+Cyu2+l1eOw
22
+ cZ+lPcg834G9DrqW2zhqUoLr1MTly4pqxYGb7XoDhoR7dd1kFE2a067+DzWC/ADt
23
+ +QkcqWUm5oh1fN0eqr7NsZlVJDulFgdiiYPQiIN7UNsii4Wc9aZqBoGcYfBeQNPZ
24
+ soo/6za/bWajOKUmDhpqvaiRv9EDpVLzuj53uDoukMMwxCMfgb04+ckQ0t2G7wqc
25
+ /D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
26
+ BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
27
+ MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
28
+ YWVyaWVNVUQub3JnMA0GCSqGSIb3DQEBBQUAA4IBgQB/qyi5pCjK8ceoKalfVAjS
29
+ vG64FEnLnD1bm39T5UaFIRmo+abZtfpg2QhwKvPbPjOicau2+m+MDQ2Cc3tgyaC3
30
+ dZxcP6w8APFg4AId09uWAZKf0xajvBMS2aOz8Bbmag6fwqRRkTMqsNYnmqcF7aRT
31
+ DuEzbEMfaOUYjU9RuB48vr4q8yRft0ww+3jq5iwNkrX1buL2pwBbyvgms6D/BV41
32
+ MaTVMjsHqJUwU2xVfhGtxGAWAer5S1HGYHkbio6mGVtiie0uWjmnzi7ppIlMr48a
33
+ 7BNTsoZ+/JRk3iQWmmNsyFT7xfqBKye7cH11BX8V8P4MeGB5YWlMI+Myj5DZY3fQ
34
+ st2AGD4rb1l0ia7PfubcBThSIdz61eCb8gRi/RiZZwb3/7+eyEncLJzt2Ob9fGSF
35
+ X0qdrKi+2aZZ0NGuFj9AItBsVmAvkBGIpX4TEKQp5haEbPpmaqO5nIIhV26PXmyT
36
+ OMKv6pWsoS81vw5KAGBmfX8nht/Py90DQrbRvakATGI=
37
+ -----END CERTIFICATE-----
38
+ date: 2018-03-14 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: loggability
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.11'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.11'
54
+ - !ruby/object:Gem::Dependency
55
+ name: configurability
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.2'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.2'
68
+ - !ruby/object:Gem::Dependency
69
+ name: hglib
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: git
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.3'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.3'
96
+ - !ruby/object:Gem::Dependency
97
+ name: gli
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.17'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.17'
110
+ - !ruby/object:Gem::Dependency
111
+ name: tty
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.7'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.7'
124
+ - !ruby/object:Gem::Dependency
125
+ name: cztop-reactor
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.3'
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.3'
138
+ - !ruby/object:Gem::Dependency
139
+ name: hoe-mercurial
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.4'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '1.4'
152
+ - !ruby/object:Gem::Dependency
153
+ name: hoe-deveiate
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '0.10'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '0.10'
166
+ - !ruby/object:Gem::Dependency
167
+ name: hoe-highline
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '0.2'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '0.2'
180
+ - !ruby/object:Gem::Dependency
181
+ name: simplecov
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.7'
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '0.7'
194
+ - !ruby/object:Gem::Dependency
195
+ name: rdoc-generator-fivefish
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '0.4'
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '0.4'
208
+ - !ruby/object:Gem::Dependency
209
+ name: rdoc
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '6.0'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '6.0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: hoe
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '3.16'
229
+ type: :development
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: '3.16'
236
+ description: |-
237
+ Assemblage is a continuous integration toolkit. It's intended to provide you
238
+ with a minimal infrastructure for distributing and performing automated tasks
239
+ for one or more version control repositories. It makes as few assumptions as
240
+ possible as to what those things might be.
241
+
242
+ It's still just a personal project, but if you want to use it I'm happy to
243
+ answer questions and entertain suggestions, especially in the form of
244
+ patches/PRs.
245
+
246
+ Assemblage has three primary parts: the **Assembly Server**, **Assembly
247
+ Workers**, and **Repositories**.
248
+
249
+ <dl>
250
+ <dt>Assembly Server</dt>
251
+ <dd>Aggregates and distributes events from <em>repositories</em> to
252
+ <em>workers</em> via one or more "assemblies".</dd>
253
+
254
+ <dt>Assembly Workers</dt>
255
+ <dd>Listens for events published by the <em>assembly server</em>, checks out
256
+ a <em>repository</em>, and runs an assembly script in that repository.</dd>
257
+
258
+ <dt>Repository</dt>
259
+ <dd>A distributed version control repository. Assemblage currently supports
260
+ Mercurial and Git.</dd>
261
+ </dl>
262
+ email:
263
+ - ged@FaerieMUD.org
264
+ executables: []
265
+ extensions: []
266
+ extra_rdoc_files:
267
+ - README.md
268
+ - History.md
269
+ files:
270
+ - ".simplecov"
271
+ - ChangeLog
272
+ - History.md
273
+ - README.md
274
+ - Rakefile
275
+ - lib/assemblage.rb
276
+ - spec/assemblage_spec.rb
277
+ - spec/spec_helper.rb
278
+ homepage: https://assembla.ge/
279
+ licenses:
280
+ - BSD-3-Clause
281
+ metadata: {}
282
+ post_install_message:
283
+ rdoc_options:
284
+ - "--main"
285
+ - README.md
286
+ require_paths:
287
+ - lib
288
+ required_ruby_version: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: 2.3.4
293
+ required_rubygems_version: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - ">"
296
+ - !ruby/object:Gem::Version
297
+ version: 1.3.1
298
+ requirements: []
299
+ rubyforge_project:
300
+ rubygems_version: 2.7.4
301
+ signing_key:
302
+ specification_version: 4
303
+ summary: Assemblage is a continuous integration toolkit
304
+ test_files: []