/
package.rake
66 lines (54 loc) · 2.05 KB
/
package.rake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
require_relative '../../deployment'
require 'cdo/chat_client'
require 'cdo/aws/s3_packaging'
# Rake tasks for asset packages (currently only 'apps').
namespace :package do
BUILD_PACKAGE = %i[staging test adhoc].include?(rack_env) && !ENV['CI']
namespace :apps do
def apps_packager
S3Packaging.new('apps', apps_dir, dashboard_dir('public/apps-package'))
end
desc 'Update apps static asset package.'
task 'update' do
# never download if we build our own and we're not building a package ourselves.
next if CDO.use_my_apps && !BUILD_PACKAGE
unless apps_packager.update_from_s3
if BUILD_PACKAGE
Rake::Task['package:apps:build'].invoke
else
raise 'No valid apps package found'
end
end
end
desc 'Build and test apps package and upload to S3.'
task 'build' do
# Don't build apps if there are staged changes
Rake::Task['circle:check_for_unexpected_apps_changes'].invoke
ChatClient.wrap('Building apps') {Rake::Task['build:apps'].invoke}
unless rack_env?(:adhoc)
# Check that building apps did not generate unexpected changes either.
Rake::Task['circle:check_for_unexpected_apps_changes'].invoke
ChatClient.wrap('Testing apps') {Rake::Task['test:apps'].invoke}
end
# upload to s3
packager = apps_packager
package = packager.create_package('/build/package')
unless rack_env?(:adhoc)
packager.upload_package_to_s3(package)
ChatClient.log "Uploaded apps package to S3: #{packager.commit_hash}"
end
packager.decompress_package(package)
end
desc 'Update Dashboard symlink for apps package.'
task 'symlink' do
Dir.chdir(apps_dir) do
target = CDO.use_my_apps ? apps_dir('build/package') : 'apps-package'
RakeUtils.ln_s target, dashboard_dir('public', 'blockly')
end
end
end
desc 'Update apps package and create Dashboard symlink.'
task apps: ['apps:update', 'apps:symlink']
end
desc 'Update all packages (apps).'
task package: ['package:apps']