samus 2.0.2 → 2.0.3

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
- SHA1:
3
- metadata.gz: 9544bdd2a698c18f7c49f86accb53616e8f0fd87
4
- data.tar.gz: b9a293f6fa0701a9dce8473a1164e4fcf81645a6
2
+ SHA256:
3
+ metadata.gz: 654c4b19f600440932a23fd88828da9aa160ef507bb583b2cbc16c6e327aad0b
4
+ data.tar.gz: a4330ebd58c0c3ef5a19776a7ea4eba296278e95ed0a74342024ed0ac9f7737a
5
5
  SHA512:
6
- metadata.gz: b568b2c073d557c927aa2fff9c2a2251990e5ef731993b030f8a78d3528e7494b74782504634762e5e8ab5928bb8d208686f8766aab0238a22302b076df5f29f
7
- data.tar.gz: 85c5039162271d070739ca0a9a5422434eb8a1b858051dbd3402e1a0bb3713f2afb39d239d039629076c2defbf6462a13dafaa5b34711902226cd9f4dd14006d
6
+ metadata.gz: e931ee16f9ee22f06ec16f2b5971dd2c7fa9ab77a37d93595a8de916048cea6a6f3619798bfcb0f918fd0033324c66c75a4eab9e8a195059380388cd0df89bec
7
+ data.tar.gz: 69f7493bb66ac0f3c51b5009e793075dd7f37c1a8f20fa0d1e4f02969cb23fa04db8bf8caec4e3cf519903e5454fb935bc14a6c8cbbd7e016d71f8fd882a668a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 2.0.3 - August 12th, 2018
2
+
3
+ - Add `--docker` support to build and publish which runs Samus inside a pre-built
4
+ container with all default dependencies. You can provide
5
+ `--docker-image image-name` to use a different image from the default
6
+ `lsegal/samus` container.
7
+ - Fix `changelog-parse` command.
8
+
1
9
  # 2.0.2 - August 11th, 2018
2
10
 
3
11
  - Some more fixes for Windows compatibility when using `archive-git-full`.
data/Dockerfile CHANGED
@@ -10,3 +10,5 @@ RUN chmod 400 ~/.ssh/config
10
10
 
11
11
  COPY . /samus
12
12
  ENV PATH=$PATH:/samus/bin
13
+
14
+ WORKDIR /build
data/README.md CHANGED
@@ -21,6 +21,8 @@ Samus is a RubyGem and requires Ruby 1.9.x+. Installing is as easy as typing:
21
21
  $ gem install samus
22
22
  ```
23
23
 
24
+ If you would rather use Samus via Docker, see the Docker section in Usage below.
25
+
24
26
  ## Usage
25
27
 
26
28
  Samus is driven by a manifest file that describes the steps to perform when
@@ -151,6 +153,38 @@ your release as a directory instead of a zip with `--no-zip`.
151
153
  Note: If you didn't name your manifest samus.json you can simply enter the
152
154
  filename in the build command as `samus build VERSION manifest.json`.
153
155
 
156
+ ### Docker Support
157
+
158
+ If you would prefer to run Samus on a pre-built image with prepared
159
+ dependencies, you can use the
160
+ [lsegal/samus](https://hub.docker.com/r/lsegal/samus/) Docker image as follows:
161
+
162
+ ```sh
163
+ docker run --rm -v $HOME:/root -w /root/${PWD#$HOME} -it lsegal/samus \
164
+ samus build <VERSION>
165
+ ```
166
+
167
+ Remember to replace `<VERSION>` with your version string (i.e. `1.0.0`). Then
168
+ to publish, use:
169
+
170
+ ```sh
171
+ docker run --rm -v $HOME:/root:ro -w /root/${PWD#$HOME} -it lsegal/samus \
172
+ samus publish release-v<VERSION>.tar.gz
173
+ ```
174
+
175
+ #### Docker Isolation Notes
176
+
177
+ Note that these instructions are _not_ meant to run an isolated release
178
+ environment, but instead as a convenience to provide all of the non-Ruby
179
+ dependencies that Samus might need. If you wish to build and deploy from an
180
+ isolated environment, you would have to build a Dockerfile `FROM lsegal/samus`
181
+ and ensure that all necessary credentials and configuration is copied in. This
182
+ is an exercise left up to the user, since it can be complex and depends on the
183
+ amount of configuration needed for building (Git configuration, SSH keys, etc).
184
+
185
+ Also note that this syntax is currently only supported for POSIX style systems
186
+ and does not yet support Windows.
187
+
154
188
  ## Built-in Commands
155
189
 
156
190
  Samus comes with a number of built-in commands optimized for dealing with
data/bin/samus CHANGED
@@ -45,8 +45,9 @@ dry_run = false
45
45
  zip_release = true
46
46
  outfile = nil
47
47
  docker = false
48
+ docker_image = "lsegal/samus:latest"
48
49
  options = OptionParser.new do |opts|
49
- opts.banner = "Usage: samus publish [options] <directory> [directory ...]\n"
50
+ opts.banner = "Usage: samus publish [options] <release_file> [release_file ...]\n"
50
51
  opts.banner += " samus build [options] <version> [build.json]\n"
51
52
  opts.banner += " samus show-cmd [stage] [name]\n"
52
53
 
@@ -56,36 +57,41 @@ options = OptionParser.new do |opts|
56
57
  dry_run = true
57
58
  end
58
59
  if command == Samus::Builder
59
- opts.on('--[no-]zip', 'Zip release directory') do |zip|
60
+ opts.on('--[no-]zip', 'Zip release file') do |zip|
60
61
  zip_release = zip
61
62
  end
62
63
  opts.on('-o FILE', '--output', 'The file (no extension) to generate') do |file|
63
64
  outfile = file
64
65
  end
65
- else
66
- opts.on('--docker', 'Use docker to publish') do |_v|
67
- docker = true
68
- end
66
+ end
67
+ opts.on('--docker', 'Use Docker to build or publish') do |_v|
68
+ docker = true
69
+ end
70
+ opts.on('--docker-image IMAGE', 'Which Docker image to use (default: lsegal/samus:latest)') do |img|
71
+ docker_image = img
69
72
  end
70
73
  end
71
74
  options.parse!
72
75
 
76
+ if docker
77
+ cmd = <<-COMMAND
78
+ docker run --rm -v "#{Dir.home}:/root"
79
+ -v "#{Dir.pwd}:/build" -w /build -it #{docker_image}
80
+ sh -c "chmod 400 /root/.ssh/*" &&
81
+ samus #{command == Samus::Builder ? 'build' : 'publish'} #{ARGV.join(' ')}
82
+ COMMAND
83
+ cmd = cmd.gsub(/ +/, ' ').delete("\n").strip
84
+ puts "[C] #{cmd}"
85
+ system(cmd)
86
+ exit($?.to_i)
87
+ end
88
+
73
89
  if command == Samus::Publisher
74
90
  ARGV.each do |dir|
75
91
  raise "Aborting due to missing path #{dir}" unless File.exist?(dir)
76
92
  end
77
93
 
78
94
  ARGV.each do |dir|
79
- if docker
80
- cmd = <<-COMMAND
81
- docker run --rm -v "#{Dir.home}/.samus:/root/.samus"
82
- -v "#{Dir.pwd}:/app" -w /app -t lsegal/samus
83
- samus publish "#{dir}"
84
- COMMAND
85
- system(cmd.delete("\n").chomp)
86
- next
87
- end
88
-
89
95
  if File.directory?(dir)
90
96
  command.new(dir).publish(dry_run)
91
97
  elsif File.file?(dir) # it has to be an archive
@@ -104,6 +110,6 @@ elsif command == Samus::Builder
104
110
  command.new(file).build(dry_run, zip_release, outfile)
105
111
  end
106
112
  else
107
- puts opts
113
+ puts options
108
114
  exit 1
109
115
  end
@@ -3,7 +3,7 @@
3
3
  def parse_changelog(changelog)
4
4
  out, collect_started = [], false
5
5
  File.read(changelog).split(/\r?\n/).each do |line|
6
- if line =~ /^(#+\s+)?\S/
6
+ if line =~ /^(#+\s+)\S/
7
7
  break if collect_started
8
8
  collect_started = true
9
9
  next
data/lib/samus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Samus
2
- VERSION = '2.0.2'.freeze
2
+ VERSION = '2.0.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samus
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loren Segal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-11 00:00:00.000000000 Z
11
+ date: 2018-08-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: lsegal@soen.ca
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.6.12
110
+ rubygems_version: 2.7.6
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Samus helps you release Open Source Software.