Albacore のZipTaskを使用して、rake ビルドのアーティファクトを圧縮しようとしています。私が構築しているソリューションには、個別に圧縮する必要があるアーティファクトを持つ 3 つのプロジェクトがありますが、ここでは ASP.NET MVC プロジェクトについてのみ言及します。ソリューションのディレクトリ構造は次のとおりです。
rakefile.rb
solution.sln
src/
(other projects that are not relevant)
website/
(various folders I don't want included in the artifacts)
bin/
Content/
Scripts/
Views/
Default.aspx
Global.asax
web.config
最初に、私はこのタスクを書きました:
website_directory = File.join '.', 'src', 'website'
website_project_name = 'website'
zip :zip => [ :run_unit_tests, :less ] do |zip|
zip.directories_to_zip = [ 'bin', 'Content', 'Scripts', 'Views' ].map{ |folder| File.join website_directory, folder }
zip.additional_files = [ 'Default.aspx', 'favicon.ico', 'Global.asax', 'web.config'].map{ |file| File.join website_directory, file }
zip.output_file = get_output_file_name
zip.output_path = get_artifacts_output_path website_project_name
end
問題は、このタスクの出力が、フォルダー自体ではなく、これらのフォルダーの内容を含む zip ファイルであることです。これは明らかに望ましくありません。
次に、フィールドを false に切り替えてみました (これは文書化されたフィールドではありませんが、ソースflatten_zip
で見つけることができます)。これにより、上記のフォルダーを含む zip が生成されましたが、フォルダー階層全体の最下部にありました。上記のフォルダーをzipのルートに配置したいので、それも機能しません。./src/website/
だから私の次のショットはexclusions
、これも文書化されていないを使用して、これでした:
zip :zip => [ :run_unit_tests, :less ] do |zip|
zip.directories_to_zip website_directory
zip.exclusions = [ /.git/, /.+\.cs/, /App_Data/, /Attributes/, /AutoMapper/, /Controllers/, /Diagrams/, /Extensions/, /Filters/, /Helpers/, /Models/, /obj/, /Properties/, /StructureMap/, /Templates/, /CompTracker.Web.csproj/, /Default.aspx.cs/, /Global.asax.cs/, /Publish.xml/, /pdb/ ]
zip.output_file = get_output_file_name
zip.output_path = get_artifacts_output_path website_project_name
end
これは私にとってはうまくいきましたが、最近配列に追加/AutoMapper/
し/StructureMap/
たときにexclusions
、AutoMapper.dll と StructureMap.dll も (もちろん) bin フォルダーから除外されました。
上記のタスクを編集して、zip のルートに必要なフォルダーとファイルのみを配置するにはどうすればよいですか?