build tasks

This commit is contained in:
Tommy Parnell
2014-05-30 02:02:03 -04:00
parent 4898652c46
commit 9d52cec901
7 changed files with 128 additions and 0 deletions

6
Gemfile Normal file
View File

@@ -0,0 +1,6 @@
source 'https://rubygems.org'
gem 'rake'
gem 'os'
gem 'albacore'
gem 'nokogiri'

44
Rakefile.rb Normal file
View File

@@ -0,0 +1,44 @@
require 'albacore'
require 'open-uri'
require 'fileutils'
require 'os'
require 'nokogiri'
import 'assets/rake/tools.rb'
import 'assets/rake/build.rb'
import 'assets/rake/test.rb'
import 'assets/rake/files.rb'
BUILD_CONFIG = (ARGV.include?('preflight') || ARGV.include?('fly')) ? 'Release' : (ENV['BUILD_CONFIG'] || 'Debug')
PACKAGES = File.expand_path("packages")
TOOLS = File.expand_path("tools")
NUGET = File.expand_path("#{TOOLS}/NuGet")
NUNIT = File.expand_path("#{PACKAGES}/NUnit.Runners.2.6.3/tools")
#<runnable tasks>
desc 'Bootstrap, fetch, build, test'
task :preflight => [:nuget, :build, :test ]
desc 'Bootstrap, fetch, build, test,'
desc 'Build the whole solution'
task :build do
# Use msbuild in .net and xbuild in mono
if OS.windows?
Rake::Task["build:net_clean"].execute
Rake::Task["build:net_build"].execute
else
Rake::Task["build:mon_clean"].execute
Rake::Task["build:mon_build"].execute
end
end
desc 'Clean build artifacts'
task :clean => ["files:clean_artifacts"]
desc 'Retrieve nuget dependencies'
task :nuget => ["tools:nuget_fetch"]
desc 'Run the unit tests'
task :test => "test:unit_tests"

27
assets/rake/build.rb Normal file
View File

@@ -0,0 +1,27 @@
namespace :build do
# Build the solution
msbuild :net_build do |b|
b.verbosity = 'normal'
b.solution = "tparnell.ContentBundling.sln"
b.properties = { :Configuration => BUILD_CONFIG }
end
xbuild :mon_build do |b|
b.verbosity = 'normal'
b.solution = "tparnell.ContentBundling.sln"
b.properties = { :Configuration => BUILD_CONFIG }
end
# Clean the solution
msbuild :net_clean do |b|
b.verbosity = 'normal'
b.solution = "tparnell.ContentBundling.sln"
b.targets = [:Clean]
end
xbuild :mon_clean do |b|
b.verbosity = 'normal'
b.solution = 'tparnell.ContentBundling.sln'
b.targets = [:Clean]
end
end

9
assets/rake/files.rb Normal file
View File

@@ -0,0 +1,9 @@
namespace :files do
task :clean_artifacts do
puts 'Deleting all build artifacts from src/**/bin and src/**/obj. Removing output directory.'
FileUtils.rm_r Dir.glob("src/**/bin")
FileUtils.rm_r Dir.glob("src/**/obj")
end
end

9
assets/rake/test.rb Normal file
View File

@@ -0,0 +1,9 @@
namespace :test do
# Run unit tests with nunit
nunit :unit_tests do |cmd|
cmd.command = "#{NUNIT}/nunit-console.exe"
cmd.assemblies = FileList[Dir.glob("src/*.UnitTest/bin/#{BUILD_CONFIG}/*UnitTest.dll")]
#cmd.result_path = "output/tests"
#cmd.no_logo
end
end

33
assets/rake/tools.rb Normal file
View File

@@ -0,0 +1,33 @@
namespace :tools do
# If we don't have a copy of nuget, download it
task :nuget_bootstrap do
puts 'Ensuring NuGet exists in tools/NuGet'
if !FileTest.exist?("#{NUGET}/nuget.exe")
puts 'Downloading nuget from nuget.org'
FileUtils.mkdir_p("#{NUGET}")
File.open("#{NUGET}/nuget.exe", "wb") do |file|
file.write open('http://nuget.org/nuget.exe').read
end
end
end
# Fetch nuget dependencies for all packages
task :nuget_fetch => :nuget_bootstrap do
# If we aren't running under windows, assume we're using mono
CMD_PREFIX = ""
if !OS.windows?
CMD_PREFIX = "mono"
end
# Make sure we get solution-level deps
sh "#{CMD_PREFIX} #{NUGET}/nuget.exe i .nuget/packages.config -o packages"
FileList["**/packages.config"].each { |filepath|
sh "#{CMD_PREFIX} #{NUGET}/nuget.exe i #{filepath} -o packages"
}
end
end

0
tools/NuGet/nuget.exe Normal file
View File