conjur-debify 3.0.0.pre.1118 → 3.0.1.pre.1548

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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +1 -0
  3. data/.gitignore +22 -0
  4. data/.project +18 -0
  5. data/.rvmrc +60 -0
  6. data/CHANGELOG.md +255 -0
  7. data/CONTRIBUTING.md +16 -0
  8. data/Dockerfile +33 -0
  9. data/Gemfile +2 -0
  10. data/Jenkinsfile +116 -0
  11. data/LICENSE.txt +22 -0
  12. data/README.md +303 -0
  13. data/Rakefile +75 -0
  14. data/VERSION +1 -1
  15. data/bin/debify +5 -0
  16. data/build.sh +8 -0
  17. data/ci/test.sh +8 -0
  18. data/debify.gemspec +36 -0
  19. data/distrib/conjur_creds.rb +7 -0
  20. data/distrib/docker-debify +50 -0
  21. data/distrib/entrypoint.sh +19 -0
  22. data/distrib/script +1 -0
  23. data/distrib/secrets +1 -0
  24. data/distrib/secrets.yml +2 -0
  25. data/example/Gemfile +9 -0
  26. data/example/Gemfile.lock +32 -0
  27. data/example/debify.sh +3 -0
  28. data/example/distrib/postinstall.sh +8 -0
  29. data/example/docker-compose.yml +11 -0
  30. data/example/net-test.sh +7 -0
  31. data/example/test.sh +4 -0
  32. data/features/detect_version.feature +12 -0
  33. data/features/package.feature +23 -0
  34. data/features/sandbox.feature +23 -0
  35. data/features/step_definitions/debify_steps.rb +29 -0
  36. data/features/support/env.rb +12 -0
  37. data/features/support/hooks.rb +29 -0
  38. data/features/support/world.rb +10 -0
  39. data/features/test.feature +24 -0
  40. data/image-tags +23 -0
  41. data/lib/conjur/debify/Dockerfile.fpm +13 -0
  42. data/lib/conjur/debify/action/publish.rb +136 -0
  43. data/lib/conjur/debify/utils.rb +16 -0
  44. data/lib/conjur/debify/version.rb +5 -0
  45. data/lib/conjur/debify.rb +851 -0
  46. data/lib/conjur/fpm/Dockerfile +26 -0
  47. data/lib/conjur/fpm/debify_utils.sh +32 -0
  48. data/lib/conjur/fpm/package.sh +109 -0
  49. data/lib/conjur/publish/Dockerfile +5 -0
  50. data/publish-rubygem.sh +12 -0
  51. data/push-image.sh +6 -0
  52. data/secrets.yml +3 -0
  53. data/spec/action/publish_spec.rb +54 -0
  54. data/spec/data/Makefile +5 -0
  55. data/spec/data/test.tar +0 -0
  56. data/spec/debify_utils_spec.rb +55 -0
  57. data/spec/spec_helper.rb +1 -0
  58. data/spec/utils_spec.rb +22 -0
  59. data/tag-image.sh +6 -0
  60. data/test.sh +6 -0
  61. metadata +77 -4
@@ -0,0 +1,26 @@
1
+ # Build from the same version of ubuntu as phusion/baseimage
2
+ FROM cyberark/phusion-ruby-fips:latest
3
+
4
+ RUN apt-get update -y && \
5
+ apt-get dist-upgrade -y && \
6
+ apt-get install -y build-essential \
7
+ git \
8
+ libffi-dev \
9
+ rpm
10
+
11
+ RUN gem install --no-document fpm
12
+
13
+ ENV GEM_HOME /usr/local/bundle
14
+ ENV BUNDLE_PATH="$GEM_HOME" \
15
+ BUNDLE_BIN="$GEM_HOME/bin" \
16
+ BUNDLE_SILENCE_ROOT_WARNING=1
17
+ ENV PATH $BUNDLE_BIN:$PATH
18
+ RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" && \
19
+ chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
20
+
21
+ RUN mkdir /src
22
+
23
+ ENTRYPOINT [ "/package.sh" ]
24
+
25
+ COPY debify_utils.sh /
26
+ COPY package.sh /
@@ -0,0 +1,32 @@
1
+ function bundle_clean() {
2
+ ruby_version="$(ruby -v | grep -o '[0-9]\.[0-9]\.[0-9]')"
3
+
4
+ if [ -d vendor/bundle ]; then
5
+ chmod og+r -R vendor/bundle # some gems have broken perms
6
+
7
+ # some cleanup
8
+ rm -rf vendor/bundle/ruby/${ruby_version}/cache
9
+ rm -rf vendor/bundle/ruby/${ruby_version}/gems/*/{test,spec,examples,example,contrib,doc,ext,sample}
10
+ fi
11
+ }
12
+
13
+ # Remove files from the current directory that also exist in another given
14
+ # directory. For example, say in the current directory there is:
15
+ # foo
16
+ # bar/baz
17
+ # bar/xyzzy
18
+ # bacon
19
+ # people/phlebas
20
+ # and in dir2 there is
21
+ # bacon
22
+ # alice
23
+ # people/phlebas
24
+ # bar/xyzzy
25
+ # then after running `remove_matching dir2` current directory will be left with only:
26
+ # foo
27
+ # bar/baz
28
+ # Note it probably isn't 100% fool-proof, so don't launch it out to space or something.
29
+ function remove_matching() {
30
+ find "$1" -type f -print0 | sed -ze "s@^$1@.@" | xargs -0 rm -f
31
+ find . -type d -empty -delete
32
+ }
@@ -0,0 +1,109 @@
1
+ #!/bin/bash -ex
2
+
3
+ source /debify_utils.sh
4
+
5
+ project_name=$1
6
+ shift
7
+ version=$1
8
+ shift
9
+
10
+ if [ -z "$project_name" ]; then
11
+ echo Project name argument is required
12
+ exit 1
13
+ fi
14
+ if [ -z "$version" ]; then
15
+ echo Version argument is required
16
+ exit 1
17
+ fi
18
+
19
+ for i in "$@"; do
20
+ case $i in
21
+ -ft=* | --file-type=*)
22
+ file_type="${i#*=}"
23
+ shift
24
+ ;;
25
+ esac
26
+ done
27
+
28
+ if [ -z "$file_type" ]; then
29
+ echo "No file type given. Using deb"
30
+ file_type=deb
31
+ fi
32
+
33
+ echo Project Name is $project_name
34
+ echo Version is $version
35
+ echo file_type is $file_type
36
+ echo params at the end are $@
37
+
38
+ # Build dev package first
39
+ prefix=/src/opt/conjur/project
40
+ cd $prefix
41
+ bundle config set --local deployment 'true' && \
42
+ bundle config set --local path 'vendor/bundle' && \
43
+ bundle
44
+ cp -al $prefix /dev-pkg
45
+ bundle config set --local without 'development test'
46
+ bundle clean
47
+ cd /dev-pkg
48
+ remove_matching $prefix
49
+ bundle_clean
50
+
51
+ if [ $(ls | wc -l) -eq 0 ]; then
52
+ echo No dev dependencies, skipping dev package
53
+ else
54
+ echo "Building conjur-$project_name-dev $file_type package"
55
+
56
+ fpm \
57
+ -s dir \
58
+ -t $file_type \
59
+ -n conjur-$project_name-dev \
60
+ -v $version \
61
+ -C . \
62
+ --maintainer "CyberArk Software, Inc." \
63
+ --vendor "CyberArk Software, Inc." \
64
+ --license "Proprietary" \
65
+ --url "https://www.cyberark.com" \
66
+ --deb-no-default-config-files \
67
+ --deb-dist "whatever" \
68
+ --$file_type-user conjur \
69
+ --$file_type-group conjur \
70
+ --depends "conjur-$project_name = $version" \
71
+ --prefix /opt/conjur/$project_name \
72
+ --description "Conjur $project_name service - development files"
73
+ fi
74
+
75
+ mv /src/opt/conjur/project /src/opt/conjur/$project_name
76
+
77
+ cd /src/opt/conjur/$project_name
78
+
79
+ bundle_clean
80
+
81
+ cd /src
82
+
83
+ mkdir -p opt/conjur/etc
84
+
85
+ /debify.sh
86
+
87
+ [ -d opt/conjur/"$project_name"/distrib ] && mv opt/conjur/"$project_name"/distrib /
88
+
89
+ echo "Building conjur-$project_name $file_type package"
90
+
91
+ fpm \
92
+ -s dir \
93
+ -t $file_type \
94
+ -n conjur-$project_name \
95
+ -v $version \
96
+ -C . \
97
+ --maintainer "CyberArk Software, Inc." \
98
+ --vendor "CyberArk Software, Inc." \
99
+ --license "Proprietary" \
100
+ --url "https://www.cyberark.com" \
101
+ --config-files opt/conjur/etc \
102
+ --deb-no-default-config-files \
103
+ --deb-dist "whatever" \
104
+ --$file_type-user conjur \
105
+ --$file_type-group conjur \
106
+ --description "Conjur $project_name service" \
107
+ "$@"
108
+
109
+ ls -l
@@ -0,0 +1,5 @@
1
+ FROM releases-docker.jfrog.io/jfrog/jfrog-cli:latest
2
+
3
+ ENV JFROG_CLI_OFFER_CONFIG=false
4
+
5
+ WORKDIR /src
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ docker run -i --rm -v $PWD:/src -w /src --entrypoint /bin/sh alpine/git \
5
+ -c "git config --global --add safe.directory /src && \
6
+ git clean -fdx \
7
+ -e VERSION \
8
+ -e bom-assets/ \
9
+ -e release-assets"
10
+
11
+ summon --yaml "RUBYGEMS_API_KEY: !var rubygems/api-key" \
12
+ publish-rubygem debify
data/push-image.sh ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/bash -ex
2
+
3
+ for t in $(./image-tags); do
4
+ docker push registry.tld/conjurinc/debify:$t
5
+ done
6
+
data/secrets.yml ADDED
@@ -0,0 +1,3 @@
1
+ # Example of secrets.yml file needed for debify publish
2
+ ARTIFACTORY_USERNAME: !var artifactory/users/jenkins/username
3
+ ARTIFACTORY_PASSWORD: !var artifactory/users/jenkins/password
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+ require 'conjur/debify/action/publish'
3
+
4
+ describe Conjur::Debify::Action::Publish do
5
+
6
+ let (:cmd_options) {
7
+ {
8
+ :version => '1.0.0',
9
+ :component => 'stable'
10
+ }
11
+ }
12
+
13
+ let (:action) { Conjur::Debify::Action::Publish.new('dist', 'proj', cmd_options) }
14
+
15
+ before do
16
+ allow(DebugMixin).to receive(:debug_write)
17
+
18
+ allow(action).to receive(:create_image).and_return(double('publish_image', :id => 'a1b2c3d4'))
19
+ end
20
+
21
+ context 'with artifactory creds in the environment' do
22
+
23
+ before do
24
+ ENV['ARTIFACTORY_USER'] = 'art_user'
25
+ ENV['ARTIFACTORY_PASSWORD'] = 'art_password'
26
+ end
27
+
28
+ after do
29
+ ENV.delete('ARTIFACTORY_USER')
30
+ ENV.delete('ARTIFACTORY_PASSWORD')
31
+ end
32
+
33
+ it 'runs' do
34
+ expect(action).to receive(:publish).twice
35
+
36
+ action.run
37
+ end
38
+
39
+ end
40
+
41
+ context 'without artifactory creds in the environment' do
42
+
43
+ it 'runs' do
44
+ expect(action).to receive(:fetch_art_creds)
45
+ expect(action).to receive(:publish).twice
46
+
47
+ action.run
48
+ end
49
+ end
50
+
51
+ end
52
+
53
+
54
+
@@ -0,0 +1,5 @@
1
+ test.tar:
2
+ echo "this is a test" > test.txt
3
+ tar cf test.tar test.txt
4
+ rm test.txt
5
+
Binary file
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require 'aruba/rspec'
3
+
4
+ Aruba.configure do |c|
5
+ c.activate_announcer_on_command_failure = %i(stderr stdout)
6
+ end
7
+
8
+ describe "remove_matching()", type: :aruba do
9
+ it "removes matching files" do
10
+ here %w(foo bar/baz bar/xyzzy zork)
11
+ there %w(foo bar/baz not)
12
+ remove_matching
13
+ expect(contents_of herepath).to match_array %w(zork bar bar/xyzzy)
14
+ end
15
+
16
+ it "also handles files with spaces in names" do
17
+ here ['foo', 'bar/baz', 'with space', 'with', 'bar/another space']
18
+ there ['with space', 'bar/another space here']
19
+ remove_matching
20
+ expect(contents_of herepath).to match_array ['foo', 'bar', 'bar/baz', 'with', 'bar/another space']
21
+ end
22
+
23
+ # auxiliary methods and setup
24
+ let(:herepath) { Pathname.new Dir.mktmpdir }
25
+ let(:therepath) { Pathname.new Dir.mktmpdir }
26
+ after { [herepath, therepath].each &FileUtils.method(:remove_entry) }
27
+
28
+ def contents_of dir
29
+ Dir.chdir(dir) { Dir['**/*'] }
30
+ end
31
+
32
+ def remove_matching
33
+ run_command_and_stop "bash -c 'source #{DEBIFY_UTILS_PATH}; cd #{herepath}; remove_matching #{therepath}'"
34
+ end
35
+
36
+ def here files
37
+ mkfiles herepath, files
38
+ end
39
+
40
+ def there files
41
+ mkfiles therepath, files
42
+ end
43
+
44
+ def mkfiles dir, files
45
+ return dir if files.empty?
46
+ files.each do |path|
47
+ fullpath = dir + path
48
+ FileUtils.makedirs fullpath.dirname
49
+ FileUtils.touch fullpath
50
+ end
51
+ end
52
+
53
+ DEBIFY_UTILS_PATH = File.expand_path '../../lib/conjur/fpm/debify_utils.sh', __FILE__
54
+ end
55
+
@@ -0,0 +1 @@
1
+ require 'conjur/debify'
@@ -0,0 +1,22 @@
1
+ require 'fakefs/safe'
2
+
3
+ require 'conjur/debify/utils'
4
+
5
+ describe 'Conjur::Debify::Utils.copy_from_container' do
6
+ it "copies a file from the container to the current directory" do
7
+ tar = File.read "#{__dir__}/data/test.tar"
8
+ container = instance_double Docker::Container
9
+ allow(container).to receive(:archive_out).with "/tmp/test.tar" do |&b|
10
+ StringIO.new(tar).each(nil, 512) do |c|
11
+ # docker api sends three arguments, so emulate that
12
+ b[c, nil, nil]
13
+ end
14
+ end
15
+
16
+ FakeFS do
17
+ Conjur::Debify::Utils.copy_from_container container, "/tmp/test.tar"
18
+ expect(File.read 'test.txt').to eq "this is a test\n"
19
+ end
20
+ end
21
+ end
22
+
data/tag-image.sh ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/bash -ex
2
+
3
+ TAG=$(< VERSION)
4
+ for t in $(./image-tags); do
5
+ docker tag debify:$TAG registry.tld/conjurinc/debify:$t
6
+ done
data/test.sh ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/bash -ex
2
+
3
+ VERSION=$(< VERSION)
4
+ docker run --rm debify:$VERSION config script > docker-debify
5
+ chmod +x docker-debify
6
+ DEBIFY_IMAGE=debify:$VERSION DEBIFY_ENTRYPOINT=ci/test.sh ./docker-debify
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjur-debify
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.pre.1118
4
+ version: 3.0.1.pre.1548
5
5
  platform: ruby
6
6
  authors:
7
7
  - CyberArk Software, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-18 00:00:00.000000000 Z
11
+ date: 2023-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -167,11 +167,70 @@ dependencies:
167
167
  description:
168
168
  email:
169
169
  - conj_maintainers@cyberark.com
170
- executables: []
170
+ executables:
171
+ - debify
171
172
  extensions: []
172
173
  extra_rdoc_files: []
173
174
  files:
175
+ - ".dockerignore"
176
+ - ".gitignore"
177
+ - ".project"
178
+ - ".rvmrc"
179
+ - CHANGELOG.md
180
+ - CONTRIBUTING.md
181
+ - Dockerfile
182
+ - Gemfile
183
+ - Jenkinsfile
184
+ - LICENSE.txt
185
+ - README.md
186
+ - Rakefile
174
187
  - VERSION
188
+ - bin/debify
189
+ - build.sh
190
+ - ci/test.sh
191
+ - debify.gemspec
192
+ - distrib/conjur_creds.rb
193
+ - distrib/docker-debify
194
+ - distrib/entrypoint.sh
195
+ - distrib/script
196
+ - distrib/secrets
197
+ - distrib/secrets.yml
198
+ - example/Gemfile
199
+ - example/Gemfile.lock
200
+ - example/debify.sh
201
+ - example/distrib/postinstall.sh
202
+ - example/docker-compose.yml
203
+ - example/net-test.sh
204
+ - example/test.sh
205
+ - features/detect_version.feature
206
+ - features/package.feature
207
+ - features/sandbox.feature
208
+ - features/step_definitions/debify_steps.rb
209
+ - features/support/env.rb
210
+ - features/support/hooks.rb
211
+ - features/support/world.rb
212
+ - features/test.feature
213
+ - image-tags
214
+ - lib/conjur/debify.rb
215
+ - lib/conjur/debify/Dockerfile.fpm
216
+ - lib/conjur/debify/action/publish.rb
217
+ - lib/conjur/debify/utils.rb
218
+ - lib/conjur/debify/version.rb
219
+ - lib/conjur/fpm/Dockerfile
220
+ - lib/conjur/fpm/debify_utils.sh
221
+ - lib/conjur/fpm/package.sh
222
+ - lib/conjur/publish/Dockerfile
223
+ - publish-rubygem.sh
224
+ - push-image.sh
225
+ - secrets.yml
226
+ - spec/action/publish_spec.rb
227
+ - spec/data/Makefile
228
+ - spec/data/test.tar
229
+ - spec/debify_utils_spec.rb
230
+ - spec/spec_helper.rb
231
+ - spec/utils_spec.rb
232
+ - tag-image.sh
233
+ - test.sh
175
234
  homepage: https://github.com/conjurinc/debify
176
235
  licenses:
177
236
  - MIT
@@ -195,4 +254,18 @@ rubygems_version: 3.2.33
195
254
  signing_key:
196
255
  specification_version: 4
197
256
  summary: Utility commands to build and package Conjur services as Debian packages
198
- test_files: []
257
+ test_files:
258
+ - features/detect_version.feature
259
+ - features/package.feature
260
+ - features/sandbox.feature
261
+ - features/step_definitions/debify_steps.rb
262
+ - features/support/env.rb
263
+ - features/support/hooks.rb
264
+ - features/support/world.rb
265
+ - features/test.feature
266
+ - spec/action/publish_spec.rb
267
+ - spec/data/Makefile
268
+ - spec/data/test.tar
269
+ - spec/debify_utils_spec.rb
270
+ - spec/spec_helper.rb
271
+ - spec/utils_spec.rb