Commit f1d8efb7 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'shell_new_style' into 'master'

Use new style shell commands
parents 132c1b4c d6b0ac96
class Admin::BackgroundJobsController < Admin::ApplicationController class Admin::BackgroundJobsController < Admin::ApplicationController
def show def show
@sidekiq_processes = `ps -U #{Settings.gitlab.user} -o euser,pid,pcpu,pmem,stat,start,command | grep sidekiq | grep -v grep` ps_output, _ = Gitlab::Popen.popen(%W(ps -U #{Settings.gitlab.user} -o euser,pid,pcpu,pmem,stat,start,command))
@sidekiq_processes = ps_output.split("\n").grep(/sidekiq/)
end end
end end
module Gitlab module Gitlab
VERSION = File.read(Rails.root.join("VERSION")).strip VERSION = File.read(Rails.root.join("VERSION")).strip
REVISION = `git log --pretty=format:'%h' -n 1` REVISION = Gitlab::Popen.popen(%W(git log --pretty=format:%h -n 1)).first.chomp
def self.config def self.config
Settings Settings
......
...@@ -8,7 +8,7 @@ module Backup ...@@ -8,7 +8,7 @@ module Backup
s[:db_version] = "#{ActiveRecord::Migrator.current_version}" s[:db_version] = "#{ActiveRecord::Migrator.current_version}"
s[:backup_created_at] = Time.now s[:backup_created_at] = Time.now
s[:gitlab_version] = Gitlab::VERSION s[:gitlab_version] = Gitlab::VERSION
s[:tar_version] = %x{tar --version | head -1}.gsub(/\n/,"") s[:tar_version] = tar_version
Dir.chdir(Gitlab.config.backup.path) Dir.chdir(Gitlab.config.backup.path)
...@@ -98,5 +98,10 @@ module Backup ...@@ -98,5 +98,10 @@ module Backup
exit 1 exit 1
end end
end end
def tar_version
tar_version, _ = Gitlab::Popen.popen(%W(tar --version))
tar_version.split("\n").first
end
end end
end end
...@@ -11,12 +11,14 @@ module Gitlab ...@@ -11,12 +11,14 @@ module Gitlab
def self.read_latest def self.read_latest
path = Rails.root.join("log", file_name) path = Rails.root.join("log", file_name)
self.build unless File.exist?(path) self.build unless File.exist?(path)
logs = `tail -n 2000 #{path}`.split("\n") tail_output, _ = Gitlab::Popen.popen(%W(tail -n 2000 #{path}))
tail_output.split("\n")
end end
def self.read_latest_for filename def self.read_latest_for filename
path = Rails.root.join("log", filename) path = Rails.root.join("log", filename)
logs = `tail -n 2000 #{path}`.split("\n") tail_output, _ = Gitlab::Popen.popen(%W(tail -n 2000 #{path}))
tail_output.split("\n")
end end
def self.build def self.build
......
...@@ -42,28 +42,33 @@ module Gitlab ...@@ -42,28 +42,33 @@ module Gitlab
end end
def latest_version_raw def latest_version_raw
git_tags = `git ls-remote --tags origin | grep tags\/v#{current_version.major}` remote_tags, _ = Gitlab::Popen.popen(%W(git ls-remote --tags origin))
git_tags = git_tags.lines.to_a.select { |version| version =~ /v\d\.\d\.\d\Z/ } git_tags = remote_tags.split("\n").grep(/tags\/v#{current_version.major}/)
git_tags = git_tags.select { |version| version =~ /v\d\.\d\.\d\Z/ }
last_tag = git_tags.last.match(/v\d\.\d\.\d/).to_s last_tag = git_tags.last.match(/v\d\.\d\.\d/).to_s
end end
def update_commands def update_commands
{ {
"Stash changed files" => "git stash", "Stash changed files" => %W(git stash),
"Get latest code" => "git fetch", "Get latest code" => %W(git fetch),
"Switch to new version" => "git checkout v#{latest_version}", "Switch to new version" => %W(git checkout v#{latest_version}),
"Install gems" => "bundle", "Install gems" => %W(bundle),
"Migrate DB" => "bundle exec rake db:migrate RAILS_ENV=production", "Migrate DB" => %W(bundle exec rake db:migrate),
"Recompile assets" => "bundle exec rake assets:clean assets:precompile RAILS_ENV=production", "Recompile assets" => %W(bundle exec rake assets:clean assets:precompile),
"Clear cache" => "bundle exec rake cache:clear RAILS_ENV=production" "Clear cache" => %W(bundle exec rake cache:clear)
} }
end end
def env
{'RAILS_ENV' => 'production'}
end
def upgrade def upgrade
update_commands.each do |title, cmd| update_commands.each do |title, cmd|
puts title puts title
puts " -> #{cmd}" puts " -> #{cmd.join(' ')}"
if system(cmd) if system(env, *cmd)
puts " -> OK" puts " -> OK"
else else
puts " -> FAILED" puts " -> FAILED"
......
...@@ -168,7 +168,7 @@ namespace :gitlab do ...@@ -168,7 +168,7 @@ namespace :gitlab do
def check_migrations_are_up def check_migrations_are_up
print "All migrations up? ... " print "All migrations up? ... "
migration_status = `bundle exec rake db:migrate:status` migration_status, _ = Gitlab::Popen.popen(%W(bundle exec rake db:migrate:status))
unless migration_status =~ /down\s+\d{14}/ unless migration_status =~ /down\s+\d{14}/
puts "yes".green puts "yes".green
...@@ -295,7 +295,7 @@ namespace :gitlab do ...@@ -295,7 +295,7 @@ namespace :gitlab do
"user.email" => Gitlab.config.gitlab.email_from "user.email" => Gitlab.config.gitlab.email_from
} }
correct_options = options.map do |name, value| correct_options = options.map do |name, value|
run("git config --global --get #{name}").try(:squish) == value run(%W(git config --global --get #{name})).try(:squish) == value
end end
if correct_options.all? if correct_options.all?
...@@ -628,7 +628,8 @@ namespace :gitlab do ...@@ -628,7 +628,8 @@ namespace :gitlab do
end end
def sidekiq_process_count def sidekiq_process_count
`ps ux`.scan(/sidekiq \d+\.\d+\.\d+/).count ps_ux, _ = Gitlab::Popen.popen(%W(ps ux))
ps_ux.scan(/sidekiq \d+\.\d+\.\d+/).count
end end
end end
...@@ -739,7 +740,7 @@ namespace :gitlab do ...@@ -739,7 +740,7 @@ namespace :gitlab do
def check_git_version def check_git_version
required_version = Gitlab::VersionInfo.new(1, 7, 10) required_version = Gitlab::VersionInfo.new(1, 7, 10)
current_version = Gitlab::VersionInfo.parse(run("#{Gitlab.config.git.bin_path} --version")) current_version = Gitlab::VersionInfo.parse(run(%W(#{Gitlab.config.git.bin_path} --version)))
puts "Your git bin path is \"#{Gitlab.config.git.bin_path}\"" puts "Your git bin path is \"#{Gitlab.config.git.bin_path}\""
print "Git version >= #{required_version} ? ... " print "Git version >= #{required_version} ? ... "
......
namespace :gitlab do namespace :gitlab do
desc "GITLAB | Generate sdocs for project" desc "GITLAB | Generate sdocs for project"
task generate_docs: :environment do task generate_docs: :environment do
system("bundle exec sdoc -o doc/code app lib") system(*%W(bundle exec sdoc -o doc/code app lib))
end end
end end
...@@ -4,20 +4,20 @@ namespace :gitlab do ...@@ -4,20 +4,20 @@ namespace :gitlab do
task info: :environment do task info: :environment do
# check if there is an RVM environment # check if there is an RVM environment
rvm_version = run_and_match("rvm --version", /[\d\.]+/).try(:to_s) rvm_version = run_and_match(%W(rvm --version), /[\d\.]+/).try(:to_s)
# check Ruby version # check Ruby version
ruby_version = run_and_match("ruby --version", /[\d\.p]+/).try(:to_s) ruby_version = run_and_match(%W(ruby --version), /[\d\.p]+/).try(:to_s)
# check Gem version # check Gem version
gem_version = run("gem --version") gem_version = run(%W(gem --version))
# check Bundler version # check Bundler version
bunder_version = run_and_match("bundle --version", /[\d\.]+/).try(:to_s) bunder_version = run_and_match(%W(bundle --version), /[\d\.]+/).try(:to_s)
# check Bundler version # check Bundler version
rake_version = run_and_match("rake --version", /[\d\.]+/).try(:to_s) rake_version = run_and_match(%W(rake --version), /[\d\.]+/).try(:to_s)
puts "" puts ""
puts "System information".yellow puts "System information".yellow
puts "System:\t\t#{os_name || "unknown".red}" puts "System:\t\t#{os_name || "unknown".red}"
puts "Current User:\t#{`whoami`}" puts "Current User:\t#{run(%W(whoami))}"
puts "Using RVM:\t#{rvm_version.present? ? "yes".green : "no"}" puts "Using RVM:\t#{rvm_version.present? ? "yes".green : "no"}"
puts "RVM Version:\t#{rvm_version}" if rvm_version.present? puts "RVM Version:\t#{rvm_version}" if rvm_version.present?
puts "Ruby Version:\t#{ruby_version || "unknown".red}" puts "Ruby Version:\t#{ruby_version || "unknown".red}"
......
...@@ -28,7 +28,7 @@ namespace :gitlab do ...@@ -28,7 +28,7 @@ namespace :gitlab do
# It will primarily use lsb_relase to determine the OS. # It will primarily use lsb_relase to determine the OS.
# It has fallbacks to Debian, SuSE, OS X and systems running systemd. # It has fallbacks to Debian, SuSE, OS X and systems running systemd.
def os_name def os_name
os_name = run("lsb_release -irs") os_name = run(%W(lsb_release -irs))
os_name ||= if File.readable?('/etc/system-release') os_name ||= if File.readable?('/etc/system-release')
File.read('/etc/system-release') File.read('/etc/system-release')
end end
...@@ -39,7 +39,7 @@ namespace :gitlab do ...@@ -39,7 +39,7 @@ namespace :gitlab do
os_name ||= if File.readable?('/etc/SuSE-release') os_name ||= if File.readable?('/etc/SuSE-release')
File.read('/etc/SuSE-release') File.read('/etc/SuSE-release')
end end
os_name ||= if os_x_version = run("sw_vers -productVersion") os_name ||= if os_x_version = run(%W(sw_vers -productVersion))
"Mac OS X #{os_x_version}" "Mac OS X #{os_x_version}"
end end
os_name ||= if File.readable?('/etc/os-release') os_name ||= if File.readable?('/etc/os-release')
...@@ -80,13 +80,12 @@ namespace :gitlab do ...@@ -80,13 +80,12 @@ namespace :gitlab do
# #
# see also #run_and_match # see also #run_and_match
def run(command) def run(command)
unless `#{command} 2>/dev/null`.blank? output, _ = Gitlab::Popen.popen(command)
`#{command}` output
end
end end
def uid_for(user_name) def uid_for(user_name)
run("id -u #{user_name}").chomp.to_i run(%W(id -u #{user_name})).chomp.to_i
end end
def gid_for(group_name) def gid_for(group_name)
...@@ -100,7 +99,7 @@ namespace :gitlab do ...@@ -100,7 +99,7 @@ namespace :gitlab do
def warn_user_is_not_gitlab def warn_user_is_not_gitlab
unless @warned_user_not_gitlab unless @warned_user_not_gitlab
gitlab_user = Gitlab.config.gitlab.user gitlab_user = Gitlab.config.gitlab.user
current_user = run("whoami").chomp current_user = run(%W(whoami)).chomp
unless current_user == gitlab_user unless current_user == gitlab_user
puts "#{Colored.color(:black)+Colored.color(:on_yellow)} Warning #{Colored.extra(:clear)}" puts "#{Colored.color(:black)+Colored.color(:on_yellow)} Warning #{Colored.extra(:clear)}"
puts " You are running as user #{current_user.magenta}, we hope you know what you are doing." puts " You are running as user #{current_user.magenta}, we hope you know what you are doing."
......
...@@ -2,15 +2,15 @@ namespace :gitlab do ...@@ -2,15 +2,15 @@ namespace :gitlab do
desc "GITLAB | Run all tests" desc "GITLAB | Run all tests"
task :test do task :test do
cmds = [ cmds = [
"rake db:setup", %W(rake db:setup),
"rake db:seed_fu", %W(rake db:seed_fu),
"rake spinach", %W(rake spinach),
"rake spec", %W(rake spec),
"rake jasmine:ci" %W(rake jasmine:ci)
] ]
cmds.each do |cmd| cmds.each do |cmd|
system(cmd + " RAILS_ENV=test") system({'RAILS_ENV' => 'test'}, *cmd)
raise "#{cmd} failed!" unless $?.exitstatus.zero? raise "#{cmd} failed!" unless $?.exitstatus.zero?
end end
......
namespace :sidekiq do namespace :sidekiq do
desc "GITLAB | Stop sidekiq" desc "GITLAB | Stop sidekiq"
task :stop do task :stop do
system "script/background_jobs stop" system *%W(script/background_jobs stop)
end end
desc "GITLAB | Start sidekiq" desc "GITLAB | Start sidekiq"
task :start do task :start do
system "script/background_jobs start" system *%W(script/background_jobs start)
end end
desc 'GitLab | Restart sidekiq' desc 'GitLab | Restart sidekiq'
task :restart do task :restart do
system "script/background_jobs restart" system *%W(script/background_jobs restart)
end end
desc "GITLAB | Start sidekiq with launchd on Mac OS X" desc "GITLAB | Start sidekiq with launchd on Mac OS X"
task :launchd do task :launchd do
system "script/background_jobs start_no_deamonize" system *%W(script/background_jobs start_no_deamonize)
end end
end end
...@@ -2,12 +2,6 @@ require "spec_helper" ...@@ -2,12 +2,6 @@ require "spec_helper"
describe GollumWiki do describe GollumWiki do
def create_temp_repo(path)
FileUtils.mkdir_p path
command = "git init --quiet #{path};"
system(command)
end
def remove_temp_repo(path) def remove_temp_repo(path)
FileUtils.rm_rf path FileUtils.rm_rf path
end end
......
...@@ -2,12 +2,6 @@ require "spec_helper" ...@@ -2,12 +2,6 @@ require "spec_helper"
describe WikiPage do describe WikiPage do
def create_temp_repo(path)
FileUtils.mkdir_p path
command = "git init --quiet #{path};"
system(command)
end
def remove_temp_repo(path) def remove_temp_repo(path)
FileUtils.rm_rf path FileUtils.rm_rf path
end end
......
...@@ -104,10 +104,12 @@ module TestEnv ...@@ -104,10 +104,12 @@ module TestEnv
def reset_satellite_dir def reset_satellite_dir
setup_stubs setup_stubs
FileUtils.cd(seed_satellite_path) do [
`git reset --hard --quiet` %W(git reset --hard --quiet),
`git clean -fx` %W(git clean -fx),
`git checkout --quiet origin/master` %W(git checkout --quiet origin/master)
].each do |git_cmd|
system(*git_cmd, chdir: seed_satellite_path)
end end
end end
...@@ -117,7 +119,7 @@ module TestEnv ...@@ -117,7 +119,7 @@ module TestEnv
repo = repo(namespace, name) repo = repo(namespace, name)
# Symlink tmp/repositories/gitlabhq to tmp/test-git-base-path/gitlabhq # Symlink tmp/repositories/gitlabhq to tmp/test-git-base-path/gitlabhq
system("ln -s -f #{seed_repo_path()} #{repo}") FileUtils.ln_sf(seed_repo_path, repo)
create_satellite(repo, namespace, name) create_satellite(repo, namespace, name)
end end
...@@ -181,12 +183,11 @@ module TestEnv ...@@ -181,12 +183,11 @@ module TestEnv
# Symlink tmp/satellite/gitlabhq to tmp/test-git-base-path/satellite/gitlabhq, create the directory if it doesn't exist already # Symlink tmp/satellite/gitlabhq to tmp/test-git-base-path/satellite/gitlabhq, create the directory if it doesn't exist already
satellite_dir = File.dirname(satellite_repo) satellite_dir = File.dirname(satellite_repo)
FileUtils.mkdir_p(satellite_dir) unless File.exists?(satellite_dir) FileUtils.mkdir_p(satellite_dir) unless File.exists?(satellite_dir)
system("ln -s -f #{seed_satellite_path} #{satellite_repo}") FileUtils.ln_sf(seed_satellite_path, satellite_repo)
end end
def create_temp_repo(path) def create_temp_repo(path)
FileUtils.mkdir_p path FileUtils.mkdir_p path
command = "git init --quiet --bare #{path};" system(*%W(git init --quiet --bare -- #{path}))
system(command)
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment