vm/chef/cookbooks/jenkins/recipes/default.rb (99 lines of code) (raw):

# Copyright 2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. include_recipe 'c2d-config' include_recipe 'apache2' include_recipe 'apache2::rm-index' include_recipe 'apache2::security-config' include_recipe 'jenkins::ospo' include_recipe 'openjdk17' apt_update do action :update end package 'Install deps' do package_name ['unzip', 'wget'] action :install end apt_repository 'jenkins_repository' do uri node['jenkins']['repo']['uri'] components node['jenkins']['repo']['components'] keyserver node['jenkins']['repo']['keyserver'] distribution nil trusted true end apt_update do action :update end package 'install_packages' do package_name node['jenkins']['packages'] action :install end apt_package 'install_groovy' do package_name 'groovy' action :install options '--no-install-recommends' end # Upgrade vulnerable dependencies bash 'upgrade_ivy' do user 'root' environment({ 'ivy_version': node['jenkins']['ivy']['version'], 'download_url': node['jenkins']['ivy']['download_url'], }) code <<-EOH mkdir -p /opt/ivy/dist \ && cd /opt/ivy \ && curl -L -o ivy.tar.gz "$download_url" \ && tar -xvf ivy.tar.gz -C dist/ --strip-components=1 \ && cp dist/ivy-*.jar /usr/share/java \ && cd / \ && rm -rf /opt/ivy \ && rm -f /usr/share/java/ivy-*.jar \ && ln -s -f /usr/share/java/ivy-$ivy_version.jar /usr/share/java/ivy.jar EOH end bash 'upgrade_xstream' do user 'root' environment({ 'xstream_version': node['jenkins']['xstream']['version'], 'download_url': node['jenkins']['xstream']['download_url'], }) code <<-EOH mkdir -p /opt/xstream \ && cd /opt/xstream \ && curl -L -o xstream.zip "$download_url" \ && unzip xstream.zip \ && cp xstream-$xstream_version/lib/xstream-$xstream_version.jar /usr/share/java/ \ && rm -f /usr/share/java/xstream-*.jar \ && ln -s -f /usr/share/java/xstream-$xstream_version.jar /usr/share/java/xstream.jar EOH end template '/etc/apache2/conf-available/jenkins.conf' do source 'jenkins-conf.erb' cookbook 'jenkins' owner 'root' group 'root' mode '0644' end execute 'enable_apache_modules' do command 'a2enmod headers proxy proxy_http ssl' end execute 'enable-jenkins-config' do command 'a2enconf jenkins' end service 'apache2' do action [ :enable, :restart ] end service 'jenkins' do action [ :enable, :start ] end bash 'configure_jenkins' do user 'root' code <<-EOH sed -i '/^HTTP_PORT/a HTTP_HOST=127.0.0.1' /etc/default/jenkins sed -i '/^JENKINS_ARGS/ s/"$/ --httpListenAddress=$HTTP_HOST"/' /etc/default/jenkins sed -i '/^JAVA_ARGS/ s/"$/ -Dlog4j2.formatMsgNoLookups=true -Dlog4j2.disable.jmx=true"/' /etc/default/jenkins jenkins_version="$(java -jar /usr/share/jenkins/jenkins.war --version 2> /dev/null)" echo -n "${jenkins_version}" > /var/lib/jenkins/jenkins.install.UpgradeWizard.state EOH end c2d_startup_script 'jenkins' do source 'jenkins' action :cookbook_file end