lib/packaging/util/ship.rb in packaging-0.88.77 vs lib/packaging/util/ship.rb in packaging-0.99.0

- old
+ new

@@ -22,18 +22,18 @@ # This assumes the working directory is a temporary directory that will # later be cleaned up # # If this is platform_independent the packages will not get reorganized, # just copied under the tmp directory for more consistent workflows - def reorganize_packages(pkgs, tmp, platform_independent = false, nonfinal = false) + def reorganize_packages(pkgs, tmp, platform_independent = false) new_pkgs = [] pkgs.each do |pkg| if platform_independent path = 'pkg' else platform_tag = Pkg::Paths.tag_from_artifact_path(pkg) - path = Pkg::Paths.artifacts_path(platform_tag, 'pkg', nonfinal) + path = Pkg::Paths.artifacts_path(platform_tag, 'pkg') end FileUtils.mkdir_p File.join(tmp, path) FileUtils.cp pkg, File.join(tmp, path) new_pkgs << File.join(path, File.basename(pkg)) end @@ -62,20 +62,19 @@ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize def ship_pkgs(pkg_exts, staging_server, remote_path, opts = {}) options = { excludes: [], chattr: true, - platform_independent: false, - nonfinal: false }.merge(opts) + platform_independent: false }.merge(opts) # First find the packages to be shipped. We must find them before moving # to our temporary staging directory local_packages = collect_packages(pkg_exts, options[:excludes]) - return false if local_packages.empty? + return if local_packages.empty? tmpdir = Dir.mktmpdir - staged_pkgs = reorganize_packages(local_packages, tmpdir, options[:platform_independent], options[:nonfinal]) + staged_pkgs = reorganize_packages(local_packages, tmpdir, options[:platform_independent]) puts staged_pkgs.sort puts "Do you want to ship the above files to (#{staging_server})?" if Pkg::Util.ask_yes_or_no extra_flags = ['--ignore-existing', '--delay-updates'] @@ -84,11 +83,11 @@ staged_pkgs.each do |pkg| Pkg::Util::Execution.retry_on_fail(times: 3) do sub_string = 'pkg' remote_pkg = pkg.sub(sub_string, remote_path) remote_basepath = File.dirname(remote_pkg) - Pkg::Util::Net.remote_execute(staging_server, "mkdir -p #{remote_basepath}") + Pkg::Util::Net.remote_ssh_cmd(staging_server, "mkdir -p #{remote_basepath}") Pkg::Util::Net.rsync_to( File.join(tmpdir, pkg), staging_server, remote_basepath, extra_flags: extra_flags @@ -98,82 +97,16 @@ Pkg::Util::Net.remote_set_permissions(staging_server, '775', [remote_basepath]) Pkg::Util::Net.remote_set_permissions(staging_server, '0664', [remote_pkg]) Pkg::Util::Net.remote_set_immutable(staging_server, [remote_pkg]) if options[:chattr] end end - return true end end - def ship_rpms(local_staging_directory, remote_path, opts = {}) - things_to_ship = [ - "#{local_staging_directory}/**/*.rpm", - "#{local_staging_directory}/**/*.srpm" - ] - ship_pkgs(things_to_ship, Pkg::Config.yum_staging_server, remote_path, opts) - end + def rolling_repo_link_command(platform_tag, repo_path) + base_path, link_path = Pkg::Paths.artifacts_base_path_and_link_path(platform_tag, repo_path) - def ship_debs(local_staging_directory, remote_path, opts = {}) - things_to_ship = [ - "#{local_staging_directory}/**/*.debian.tar.gz", - "#{local_staging_directory}/**/*.orig.tar.gz", - "#{local_staging_directory}/**/*.dsc", - "#{local_staging_directory}/**/*.deb", - "#{local_staging_directory}/**/*.changes" - ] - ship_pkgs(things_to_ship, Pkg::Config.apt_signing_server, remote_path, opts) - end - - def ship_svr4(local_staging_directory, remote_path, opts = {}) - ship_pkgs(["#{local_staging_directory}/**/*.pkg.gz"], Pkg::Config.svr4_host, remote_path, opts) - end - - def ship_p5p(local_staging_directory, remote_path, opts = {}) - ship_pkgs(["#{local_staging_directory}/**/*.p5p"], Pkg::Config.p5p_host, remote_path, opts) - end - - def ship_dmg(local_staging_directory, remote_path, opts = {}) - packages_have_shipped = ship_pkgs(["#{local_staging_directory}/**/*.dmg"], - Pkg::Config.dmg_staging_server, remote_path, opts) - - if packages_have_shipped - Pkg::Platforms.platform_tags_for_package_format('dmg').each do |platform_tag| - # Create the latest symlink for the current supported repo - Pkg::Util::Net.remote_create_latest_symlink( - Pkg::Config.project, - Pkg::Paths.artifacts_path(platform_tag, remote_path, opts[:nonfinal]), - 'dmg' - ) - end - end - end - - def ship_swix(local_staging_directory, remote_path, opts = {}) - ship_pkgs(["#{local_staging_directory}/**/*.swix"], Pkg::Config.swix_staging_server, remote_path, opts) - end - - def ship_msi(local_staging_directory, remote_path, opts = {}) - packages_have_shipped = ship_pkgs(["#{local_staging_directory}/**/*.msi"], Pkg::Config.msi_staging_server, remote_path, opts) - - if packages_have_shipped - # Create the symlinks for the latest supported repo - Pkg::Util::Net.remote_create_latest_symlink(Pkg::Config.project, Pkg::Paths.artifacts_path(Pkg::Platforms.generic_platform_tag('windows'), remote_path, opts[:nonfinal]), 'msi', arch: 'x64') - Pkg::Util::Net.remote_create_latest_symlink(Pkg::Config.project, Pkg::Paths.artifacts_path(Pkg::Platforms.generic_platform_tag('windows'), remote_path, opts[:nonfinal]), 'msi', arch: 'x86') - end - end - - def ship_gem(local_staging_directory, remote_path, opts = {}) - ship_pkgs(["#{local_staging_directory}/*.gem*"], Pkg::Config.gem_host, remote_path, opts) - end - - def ship_tar(local_staging_directory, remote_path, opts = {}) - ship_pkgs(["#{local_staging_directory}/*.tar.gz*"], Pkg::Config.tar_staging_server, remote_path, opts) - end - - def rolling_repo_link_command(platform_tag, repo_path, nonfinal = false) - base_path, link_path = Pkg::Paths.artifacts_base_path_and_link_path(platform_tag, repo_path, nonfinal) - if link_path.nil? puts "No link target set, not creating rolling repo link for #{base_path}" return nil end @@ -197,82 +130,20 @@ fi ln -s #{base_path} #{link_path} CMD end - def create_rolling_repo_link(platform_tag, staging_server, repo_path, nonfinal = false) - command = rolling_repo_link_command(platform_tag, repo_path, nonfinal) + def create_rolling_repo_link(platform_tag, staging_server, repo_path) + command = rolling_repo_link_command(platform_tag, repo_path) - Pkg::Util::Net.remote_execute(staging_server, command) unless command.nil? + Pkg::Util::Net.remote_ssh_cmd(staging_server, command) unless command.nil? rescue => e - fail "Failed to create rolling repo link for '#{platform_tag}'.\n#{e}\n#{e.backtrace}" + fail "Failed to create rolling repo link for '#{platform_tag}'.\n#{e}" end - # create all of the rolling repo links in one step - def create_rolling_repo_links(nonfinal = false) - yum_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'rpm') - dmg_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'dmg') - swix_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'swix') - msi_path = Pkg::Paths.remote_repo_base(nonfinal: nonfinal, package_format: 'msi') - - create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('el'), Pkg::Config.yum_staging_server, yum_path, nonfinal) - create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('osx'), Pkg::Config.dmg_staging_server, dmg_path, nonfinal) - create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('eos'), Pkg::Config.swix_staging_server, swix_path, nonfinal) - create_rolling_repo_link(Pkg::Platforms.generic_platform_tag('windows'), Pkg::Config.msi_staging_server, msi_path, nonfinal) - - # We need to iterate through all the supported platforms here because of - # how deb repos are set up. Each codename will have its own link from the - # current versioned repo (e.g. puppet5) to the rolling repo. The one thing - # we don't care about is architecture, so we just grab the first supported - # architecture for the code name we're working with at the moment. [written - # by Melissa, copied by Molly] - - apt_path = Pkg::Config.apt_repo_staging_path - if nonfinal - apt_path = Pkg::Config.nonfinal_apt_repo_staging_path - end - Pkg::Platforms.codenames.each do |codename| - create_rolling_repo_link(Pkg::Platforms.codename_to_tags(codename)[0], Pkg::Config.apt_signing_server, apt_path, nonfinal) - end - end - - def update_release_package_symlinks(local_staging_directory, nonfinal = false) - local_packages = collect_packages(["#{local_staging_directory}/**/*.rpm", "#{local_staging_directory}/**/*.deb"]) - local_packages.each do |package| - platform_tag = Pkg::Paths.tag_from_artifact_path(package) - package_format = Pkg::Platforms.package_format_for_tag(platform_tag) - case package_format - when 'rpm' - remote_base = Pkg::Paths.artifacts_path(platform_tag, Pkg::Paths.remote_repo_base(platform_tag, nonfinal: nonfinal), nonfinal) - when 'deb' - remote_base = Pkg::Paths.apt_package_base_path(platform_tag, Pkg::Paths.repo_name(nonfinal), Pkg::Config.project, nonfinal) - else - fail "Unexpected package format #{package_format}, cannot create symlinks." - end - remote_path = File.join(remote_base, File.basename(package)) - link_path = Pkg::Paths.release_package_link_path(platform_tag, nonfinal) - link_command = <<-CMD - if [ ! -e #{remote_path} ]; then - echo "Uh oh! #{remote_path} doesn't exist! Can't create symlink." - exit 1 - fi - if [ -e #{link_path} ] && [ ! -L #{link_path} ]; then - echo "Uh oh! #{link_path} exists but isn't a link, I don't know what to do with this." - exit 1 - fi - if [ -L #{link_path} ] && [ ! #{remote_path} -ef #{link_path} ]; then - echo "Removing old link from $(readlink #{link_path}) to #{link_path} . . ." - rm #{link_path} - fi - ln -sf #{remote_path} #{link_path} - CMD - Pkg::Util::Net.remote_execute(Pkg::Config.staging_server, link_command) - end - end - def test_ship(vm, ship_task) command = 'getent group release || groupadd release' - Pkg::Util::Net.remote_execute(vm, command) + Pkg::Util::Net.remote_ssh_cmd(vm, command) hosts_to_override = %w( APT_HOST DMG_HOST GEM_HOST IPS_HOST