]> git.openstreetmap.org Git - chef.git/commitdiff
Make matomo updates more robust
authorTom Hughes <tom@compton.nu>
Tue, 2 Aug 2022 08:15:38 +0000 (09:15 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 2 Aug 2022 09:21:14 +0000 (10:21 +0100)
Update schemas automatically, and rebuild tracker script when needed.

cookbooks/matomo/recipes/default.rb

index 35143fce196302e112ad1f795386e43d0ff7ab87..9b2b6302c64278b364ac31a1db670c9ce263e1a6 100644 (file)
@@ -49,15 +49,16 @@ end
 
 remote_file "#{Chef::Config[:file_cache_path]}/matomo-#{version}.zip" do
   source "https://builds.matomo.org/matomo-#{version}.zip"
-  not_if { ::File.exist?("/opt/matomo-#{version}/matomo") }
 end
 
 archive_file "#{Chef::Config[:file_cache_path]}/matomo-#{version}.zip" do
+  action :nothing
   destination "/opt/matomo-#{version}"
   overwrite true
   owner "root"
   group "root"
-  not_if { ::File.exist?("/opt/matomo-#{version}/matomo") }
+  subscribes :extract, "remote_file[#{Chef::Config[:file_cache_path]}/matomo-#{version}.zip]", :immediately
+  notifies :run, "notify_group[matomo-updated]"
 end
 
 node[:matomo][:plugins].each do |plugin_name, plugin_version|
@@ -74,25 +75,10 @@ node[:matomo][:plugins].each do |plugin_name, plugin_version|
     owner "root"
     group "root"
     subscribes :extract, "remote_file[#{Chef::Config[:file_cache_path]}/matomo-#{plugin_name}-#{plugin_version}.zip]", :immediately
+    notifies :run, "notify_group[matomo-updated]"
   end
 end
 
-execute "/opt/matomo-#{version}/matomo/matomo.js" do
-  command "gzip -k -9 /opt/matomo-#{version}/matomo/matomo.js"
-  cwd "/opt/matomo-#{version}"
-  user "root"
-  group "root"
-  not_if { ::File.exist?("/opt/matomo-#{version}/matomo/matomo.js.gz") }
-end
-
-execute "/opt/matomo-#{version}/matomo/piwik.js" do
-  command "gzip -k -9 /opt/matomo-#{version}/matomo/piwik.js"
-  cwd "/opt/matomo-#{version}"
-  user "root"
-  group "root"
-  not_if { ::File.exist?("/opt/matomo-#{version}/matomo/piwik.js.gz") }
-end
-
 directory "/opt/matomo-#{version}/matomo/config" do
   owner "www-data"
   group "www-data"
@@ -107,6 +93,7 @@ template "/opt/matomo-#{version}/matomo/config/config.ini.php" do
   variables :passwords => passwords,
             :directory => "/opt/matomo-#{version}/matomo",
             :plugins => node[:matomo][:plugins].keys.sort
+  notifies :run, "notify_group[matomo-updated]"
 end
 
 directory "/opt/matomo-#{version}/matomo/tmp" do
@@ -121,6 +108,12 @@ directory "/opt/matomo-#{version}/matomo/tmp/assets" do
   mode "0750"
 end
 
+directory "/opt/matomo-#{version}/matomo/tmp/cache" do
+  owner "www-data"
+  group "www-data"
+  mode "0750"
+end
+
 link "/opt/matomo-#{version}/matomo/misc/GeoLite2-ASN.mmdb" do
   to "#{geoip_directory}/GeoLite2-ASN.mmdb"
 end
@@ -133,11 +126,6 @@ link "/opt/matomo-#{version}/matomo/misc/GeoLite2-Country.mmdb" do
   to "#{geoip_directory}/GeoLite2-Country.mmdb"
 end
 
-link "/srv/matomo.openstreetmap.org" do
-  to "/opt/matomo-#{version}/matomo"
-  notifies :restart, "service[php#{node[:php][:version]}-fpm]"
-end
-
 mysql_user "piwik@localhost" do
   password passwords["database"]
 end
@@ -146,6 +134,49 @@ mysql_database "piwik" do
   permissions "piwik@localhost" => :all
 end
 
+notify_group "matomo-updated"
+
+if File.symlink?("/srv/matomo.openstreetmap.org")
+  execute "core:update" do
+    action :nothing
+    command "/opt/matomo-#{version}/matomo/console core:update --yes"
+    user "www-data"
+    group "www-data"
+    subscribes :run, "notify_group[matomo-updated]"
+  end
+
+  execute "custom-matomo-js:update" do
+    action :nothing
+    command "/opt/matomo-#{version}/matomo/console custom-matomo-js:update"
+    user "root"
+    group "root"
+    subscribes :run, "execute[core:update]"
+  end
+
+  execute "/opt/matomo-#{version}/matomo/matomo.js" do
+    action :nothing
+    command "gzip -k -9 /opt/matomo-#{version}/matomo/matomo.js"
+    cwd "/opt/matomo-#{version}"
+    user "root"
+    group "root"
+    subscribes :run, "execute[custom-matomo-js:update]"
+  end
+
+  execute "/opt/matomo-#{version}/matomo/piwik.js" do
+    action :nothing
+    command "gzip -k -9 /opt/matomo-#{version}/matomo/piwik.js"
+    cwd "/opt/matomo-#{version}"
+    user "root"
+    group "root"
+    subscribes :run, "execute[custom-matomo-js:update]"
+  end
+end
+
+link "/srv/matomo.openstreetmap.org" do
+  to "/opt/matomo-#{version}/matomo"
+  notifies :restart, "service[php#{node[:php][:version]}-fpm]"
+end
+
 ssl_certificate "matomo.openstreetmap.org" do
   domains ["matomo.openstreetmap.org", "matomo.osm.org",
            "piwik.openstreetmap.org", "piwik.osm.org"]