Showing posts with label Rake Task. Show all posts
Showing posts with label Rake Task. Show all posts
Friday, December 13, 2013
Thursday, December 20, 2012
Rake task to update build version No. with latest tag name
The following code will help us to automate the process of updating build version No. by considering latest tag name available in git repo.
Assuming, you are deploying your Rails app using Capistrano.
1) In your deploy.rb add the following hook,
And add a task(installed_version:update)
2) Create a new rake task file in your rails app(lib/tasks/update_build_version.rake)
Add below lines,
That's all, we are done !!!
Note: Before every deployment you need to tag your code with some version No.(ex: 1.2.1) and then run cap deploy . The above code will read the latest tag name(1.2.1) and update into versions table.
This post would be really helpful when you want to automate your Build Management process.
Assuming, you are deploying your Rails app using Capistrano.
1) In your deploy.rb add the following hook,
after "deploy", "installed_version:update"
And add a task(installed_version:update)
namespace :installed_version do
task :update, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && RAILS_ENV=#{rails_env} rake update:version"
end
end
task :update, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && RAILS_ENV=#{rails_env} rake update:version"
end
end
2) Create a new rake task file in your rails app(lib/tasks/update_build_version.rake)
Add below lines,
namespace "update" do
desc "This will update the installed version no. in DB from the latest tag name"
task :version => :environment do
tag = `git rev-list --tags --max-count=1`
tag_name = `git describe --tags #{tag}`.chomp
puts "Latest Tag No.#{tag_name}"
attributes = {:version_no => tag_name, :build_dt => Time.now}
Version.create(attributes) # assuming you have versions tbl
puts "Build updated with Version No.\"#{tag_name}\""
end
end
desc "This will update the installed version no. in DB from the latest tag name"
task :version => :environment do
tag = `git rev-list --tags --max-count=1`
tag_name = `git describe --tags #{tag}`.chomp
puts "Latest Tag No.#{tag_name}"
attributes = {:version_no => tag_name, :build_dt => Time.now}
Version.create(attributes) # assuming you have versions tbl
puts "Build updated with Version No.\"#{tag_name}\""
end
end
That's all, we are done !!!
Note: Before every deployment you need to tag your code with some version No.(ex: 1.2.1) and then run cap
This post would be really helpful when you want to automate your Build Management process.
Labels:
build management,
cap,
capistrano,
deploy,
Rake,
Rake Task,
Ruby
Tuesday, December 11, 2012
Rake Task with Arguments
The following example shows how to pass an argument to Rake Task. Here version No(:no) gets passed to task and the same gets saved into versions table. This example can be incorporated with your build management script to update the current version No. for each release.
namespace "build" do
desc "This will update the version No."
task :version, [:no] => :environment do |t, args|
raise "Message: Version Number Required to build !!!" if args.no.nil?
version = Version.first # assume you have a table named versions(:id, :version_no, :updated_at...)
version.update_attributes(:version_no => args.no)
puts "Build updated with Version No.#{args.no}"
end
end
Usage: rake "build:version[1.3.2]"
namespace "build" do
desc "This will update the version No."
task :version, [:no] => :environment do |t, args|
raise "Message: Version Number Required to build !!!" if args.no.nil?
version = Version.first # assume you have a table named versions(:id, :version_no, :updated_at...)
version.update_attributes(:version_no => args.no)
puts "Build updated with Version No.#{args.no}"
end
end
Usage: rake "build:version[1.3.2]"
Subscribe to:
Posts (Atom)