apt_stage_artifacts 0.5.0 → 0.6.0

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
  SHA256:
3
- metadata.gz: 0e81f4aec93257b9ff5c06aa0cf5e29f4b3331f99c76252140b56e2cd12f721b
4
- data.tar.gz: db1f53e4c5d5dd0b54ae44bc2ce471e04fbaa89bb520a6a7068262713e34d132
3
+ metadata.gz: 8e43d6a863a30baa1254fc13176928c876311967637ee2c94aaa525db1d59434
4
+ data.tar.gz: 04c20925c5ffceac9f3861d0e5783cc3ffec3b30acc992bb7e8384acbcf6fcfa
5
5
  SHA512:
6
- metadata.gz: 7fb6659180b34b6307ff0ec42d5f0759bc37c62292bb85ba03c6365f5a9c403493dae8370e04fc93ab267dd725cb3f8fb2344db7656ec8cce0fc89d1340dc008
7
- data.tar.gz: 4c7042632cfe97bf1cb8716d741b6a7608807157cb47c3faba8792da5dc9acb470f85f27afbfa19d51ad4db65a65163e63ff3d7e237fc9b5ae7688eb72749cb8
6
+ metadata.gz: f9eab7e0f70f96fa3f960a33c3013f7957e0eb863a7cf381b975e7d1de484ea157ad71635e792dbab50b449c7590bfa996e36959fd98d831f0ebb20795f773e8
7
+ data.tar.gz: 71c0f29097b376bb4d7e169e48b97d8e2377cc3a7c0267e7dbd21cba360a78e91b42e1e5aa6626c0b5818ca1b44faf17e1db2b2b4c7d62dd83cc6f1fd58912af
@@ -77,10 +77,12 @@ class AptAddToFreightLibrary
77
77
  logger.info @version_string
78
78
  @puppet_version = @user_options['--puppet-version']
79
79
  fatal "Invalid Puppet version '#{@puppet_version}'" unless
80
- VALID_PUPPET_VERSIONS.include? @puppet_version
80
+ AptStageArtifacts::VALID_PUPPET_VERSIONS.include? @puppet_version
81
81
 
82
82
  @repo_type = @user_options['--repo-type']
83
- fatal "Invalid repo type '#{@repo_type}'" unless VALID_REPO_TYPES.include? @repo_type
83
+ unless AptStageArtifacts::VALID_REPO_TYPES.include? @repo_type
84
+ fatal "Invalid repo type '#{@repo_type}'"
85
+ end
84
86
 
85
87
  @codename = @user_options['--codename']
86
88
  unless AptStageArtifacts::VALID_CODENAMES.include? @codename
@@ -88,7 +90,7 @@ class AptAddToFreightLibrary
88
90
  end
89
91
 
90
92
  freight_config_file = File.join(
91
- FREIGHT_CONFIG_DIRECTORY,
93
+ AptStageArtifacts::FREIGHT_CONFIG_DIRECTORY,
92
94
  "puppet_#{@puppet_version}_#{@repo_type}.conf"
93
95
  )
94
96
  fatal "Cannot read '#{freight_config_file} on #{`hostname`.chomp}." unless
@@ -110,7 +112,7 @@ class AptAddToFreightLibrary
110
112
 
111
113
  freight_add_command = %W[
112
114
  sudo --user=jenkins --set-home
113
- #{FREIGHT_COMMAND} add #{@verbose} --conf="#{freight_config_file}"
115
+ #{AptStageArtifacts::FREIGHT_COMMAND} add #{@verbose} --conf="#{freight_config_file}"
114
116
  #{deb_artifact_path} "apt/#{@codename}"
115
117
  ].join(' ')
116
118
 
@@ -16,14 +16,17 @@ class AptStageArtifacts
16
16
  Stages .deb artifacts into a freight library from a Vanagon or packaging directory.
17
17
 
18
18
  Usage:
19
- apt-stage-artifacts [--version]
20
- apt-stage-artifacts [--version] <top_directory>
19
+ apt-stage-artifacts [--repo-type=<repo-type>] [<top_directory>]
20
+ apt-stage-artifacts --version
21
+ apt-stage-artifacts --help
22
+
21
23
  DOCOPT
22
24
 
23
25
  def initialize(argv)
24
26
  @script_name = File.basename($PROGRAM_NAME)
25
27
  @log_level = Logger::INFO
26
28
  @user_options = parse_options(argv)
29
+ @repo_type = @user_options['--repo-type'] || 'stable'
27
30
  @version_string = "Version #{AptStageArtifacts::VERSION}"
28
31
 
29
32
  @artifacts_tarball_name = 'artifacts.tgz'
@@ -44,6 +47,10 @@ class AptStageArtifacts
44
47
  def run
45
48
  logger.info @version_string
46
49
  exit 0 if @user_options['--version']
50
+ unless AptStageArtifacts::VALID_REPO_TYPES.include? @repo_type
51
+ fatal "Unknown repo_type: \"#{@repo_type}\". Valid repo types are: " +
52
+ AptStageArtifacts::VALID_REPO_TYPES.join(', ')
53
+ end
47
54
  load_builder_data_yaml
48
55
  collect_artifacts
49
56
  create_remote_staging_directory
@@ -114,10 +121,11 @@ class AptStageArtifacts
114
121
 
115
122
  # A manifest is a staging to-do list represented in JSON as an array of hashes
116
123
  # containing:
117
- # deb_file_path:
118
- # codename:
119
- # puppet_version:
120
- # repo_type:
124
+ # deb_file_path: relative path to the .deb file
125
+ # codename: debian codename for this artifact, needed by freight
126
+ # puppet_version: part of the destination apt repo. We maintain apt repos by puppet major
127
+ # version
128
+ # repo_type: either 'stable' or 'nightly' typically. 'archive' is supported but unused.
121
129
  def generate_manifest
122
130
  manifest = []
123
131
 
@@ -126,15 +134,8 @@ class AptStageArtifacts
126
134
 
127
135
  repo_name = artifact_components[-2]
128
136
  case repo_name
129
- when /^puppet(\d+)-nightly$/
130
- puppet_version = Regexp.last_match(1)
131
- repo_type = 'nightly'
132
- when /^puppet(\d+)-archive/
133
- puppet_version = Regexp.last_match(1)
134
- repo_type = 'archive'
135
137
  when /^puppet(\d+)+$/
136
138
  puppet_version = Regexp.last_match(1)
137
- repo_type = 'stable'
138
139
  else
139
140
  fatal("Unknown repo name \"#{repo_name}\" in #{deb_file_path}")
140
141
  end
@@ -148,7 +149,7 @@ class AptStageArtifacts
148
149
  deb_file_path: deb_file_path,
149
150
  puppet_version: puppet_version,
150
151
  codename: codename,
151
- repo_type: repo_type
152
+ repo_type: @repo_type
152
153
  }
153
154
  end
154
155
 
@@ -161,12 +162,14 @@ class AptStageArtifacts
161
162
 
162
163
  # Create a tarball that contains the staging manifest and the associated deb files.
163
164
  def create_tarball
165
+ manifest_file_name = AptStageArtifacts::MANIFEST_JSON_FILENAME
166
+
164
167
  tarball_create_command = %W[
165
168
  tar --create --gzip --file #{@local_tarball_path} --directory=#{@top_directory}
166
169
  ].join(' ')
167
- %x(#{tarball_create_command} #{@manifest_file_name} #{@debian_artifacts.join(' ')})
170
+ %x(#{tarball_create_command} #{manifest_file_name} #{@debian_artifacts.join(' ')})
168
171
  unless $CHILD_STATUS.success?
169
- fatal "#{tarball_create_command} #{@manifest_file_name} #{@debian_artifacts.join(' ')} failed."
172
+ fatal "#{tarball_create_command} #{manifest_file_name} #{@debian_artifacts.join(' ')} failed."
170
173
  end
171
174
 
172
175
  logger.info("'#{@local_tarball_path}' created.")
@@ -1,4 +1,5 @@
1
1
  require 'version'
2
+ require 'mixins/constants'
2
3
  require 'mixins/logging'
3
4
 
4
5
  require 'English'
@@ -86,6 +87,8 @@ class AptStageFromTarball
86
87
 
87
88
  # Keep a hash, key by puppet_version, of repo_types so that we can
88
89
  # efficiently build out the freight caches later.
90
+ puppet_version = artifact[:puppet_version]
91
+ repo_type = artifact[:repo_type]
89
92
  @repo_types_updated[puppet_version] = [] unless @repo_types_updated.key?(puppet_version)
90
93
  @repo_types_updated[puppet_version] |= [repo_type]
91
94
  end
@@ -5,6 +5,7 @@
5
5
  class AptStageArtifacts
6
6
  # Details about freight itself
7
7
  FREIGHT_COMMAND = '/usr/bin/freight'
8
+ FREIGHT_CONFIG_DIRECTORY = '/etc/freight.conf.d'
8
9
 
9
10
  # Name of the manifest.json file
10
11
  MANIFEST_JSON_FILENAME = 'apt_stage_manifest.json'
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class AptStageArtifacts
2
- VERSION = '0.5.0'
2
+ VERSION = '0.6.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apt_stage_artifacts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Release Engineering
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-07 00:00:00.000000000 Z
11
+ date: 2021-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry