diff --git a/config/packaging.yml b/config/packaging.yml index a789bd3bb7..915f9df6d7 100644 --- a/config/packaging.yml +++ b/config/packaging.yml @@ -194,10 +194,15 @@ takipi_agent: release_notes: '[Release Notes](https://doc.overops.com/docs/whats-new)' tomcat: - name: Tomcat + name: Tomcat 9 cve_notes: '[Security](https://tomcat.apache.org/security-9.html)' release_notes: '[ChangeLog](https://tomcat.apache.org/tomcat-9.0-doc/changelog.html)' +tomcat-10: + name: Tomcat 10.1 + cve_notes: '[Security](https://tomcat.apache.org/security-10.html)' + release_notes: '[ChangeLog](https://tomcat.apache.org/tomcat-10.1-doc/changelog.html)' + your_kit_profiler: name: YourKit Profiler release_notes: '[Release Notes](https://www.yourkit.com/download/yjp_2023_9_builds.jsp)' diff --git a/config/tomcat.yml b/config/tomcat.yml index c05fcdeb09..ac2df4789a 100644 --- a/config/tomcat.yml +++ b/config/tomcat.yml @@ -17,6 +17,9 @@ --- tomcat: version: 9.+ + version_lines: + - 9.+ + - 10.1.+ repository_root: "{default.repository.root}/tomcat" context_path: external_configuration_enabled: false diff --git a/rakelib/dependency_cache_task.rb b/rakelib/dependency_cache_task.rb index 12d3d54845..421f0df323 100644 --- a/rakelib/dependency_cache_task.rb +++ b/rakelib/dependency_cache_task.rb @@ -164,6 +164,9 @@ def pin_version(old_configuration, version) if Utils::VersionUtils.openjdk_jre? old_configuration rake_output_message "Pinning JRE #{sub_component_id || component_id} version to #{version}" pin_jre(component_id, sub_component_id, version) + elsif Utils::VersionUtils.tomcat? old_configuration + rake_output_message "Pinning Tomcat #{sub_component_id || component_id} version to #{version}" + pin_tomcat(component_id, sub_component_id, version) else rake_output_message "Pinning #{sub_component_id || component_id} version to #{version}" pin_component(component_id, sub_component_id, version) @@ -187,6 +190,17 @@ def pin_jre(component_id, sub_component_id, version) JavaBuildpack::Util::ConfigurationUtils.write(component_id, configuration_to_update) end + def pin_tomcat(component_id, sub_component_id, version) + # update configuration file, pin version & version lines + configuration_to_update = JavaBuildpack::Util::ConfigurationUtils.load(component_id, false, true) + update_configuration(configuration_to_update, version, sub_component_id) + configuration_to_update['tomcat']['version_lines'].each_with_index do |version_pattern, index| + configuration_to_update['tomcat']['version_lines'][index] = version \ + if Utils::VersionUtils.version_matches?(version_pattern, [version]) + end + JavaBuildpack::Util::ConfigurationUtils.write(component_id, configuration_to_update) + end + def update_configuration(config, version, sub_component) if sub_component.nil? config['version'] = version diff --git a/rakelib/package.rb b/rakelib/package.rb index 5e38fbfbe1..f3948ee189 100644 --- a/rakelib/package.rb +++ b/rakelib/package.rb @@ -38,6 +38,9 @@ def configurations(component_id, configuration, sub_component_id = nil) Utils::VersionUtils.java_version_lines(configuration, configurations) \ if Utils::VersionUtils.openjdk_jre? configuration + Utils::VersionUtils.tomcat_version_lines(configuration, configurations) \ + if Utils::VersionUtils.tomcat? configuration + configurations << configuration else configuration.each { |k, v| configurations << configurations(component_id, v, k) if v.is_a? Hash } diff --git a/rakelib/utils.rb b/rakelib/utils.rb index 98a40fef8f..0202066f25 100644 --- a/rakelib/utils.rb +++ b/rakelib/utils.rb @@ -39,6 +39,10 @@ def openjdk_jre?(configuration) configuration['component_id'].end_with?('_jre') && configuration['sub_component_id'].start_with?('jre') end + def tomcat?(configuration) + configuration['component_id'].end_with?('tomcat') && configuration['sub_component_id'].start_with?('tomcat') + end + def java_version_lines(configuration, configurations) configuration['version_lines'].each do |v| next if version_line_matches?(configuration, v) @@ -50,6 +54,17 @@ def java_version_lines(configuration, configurations) end end + def tomcat_version_lines(configuration, configurations) + configuration['version_lines'].each do |v| + next if version_line_matches?(configuration, v) + + c1 = configuration.clone + c1['sub_component_id'] = "tomcat-#{v.split('.')[0]}" + c1['version'] = v + configurations << c1 + end + end + def version_line_matches?(configuration, v) return true if v == configuration['version'] return false if version_wildcard? v