Skip to content

Commit a8c717a

Browse files
add: Debugging logs to pyenv installation recipe
1 parent 7092e9a commit a8c717a

File tree

1 file changed

+173
-3
lines changed
  • cookbooks/travis_ci_freebsd_14/recipes

1 file changed

+173
-3
lines changed
Lines changed: 173 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,129 @@
11
# frozen_string_literal: true
22

3+
# Define log color codes
4+
RED = "\e[31m"
5+
GREEN = "\e[32m"
6+
YELLOW = "\e[33m"
7+
BLUE = "\e[34m"
8+
MAGENTA = "\e[35m"
9+
CYAN = "\e[36m"
10+
RESET = "\e[0m"
11+
PREFIX = "[PYENV-SETUP]"
12+
13+
Chef::Log.info("#{CYAN}#{PREFIX} πŸš€ Starting pyenv installation process#{RESET}")
14+
315
pyenv_installer_path = ::File.join(
416
Chef::Config[:file_cache_path], 'pyenv-installer'
517
)
618

19+
Chef::Log.info("#{BLUE}#{PREFIX} πŸ“₯ Downloading pyenv installer to #{pyenv_installer_path}#{RESET}")
720
remote_file pyenv_installer_path do
821
source node['travis_python']['pyenv_install_url']
922
owner node['travis_build_environment']['user']
1023
group node['travis_build_environment']['group']
1124
mode 0o755
25+
notifies :run, 'ruby_block[log_pyenv_download]', :immediately
26+
end
27+
28+
ruby_block 'log_pyenv_download' do
29+
block do
30+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Pyenv installer downloaded successfully to #{pyenv_installer_path}#{RESET}")
31+
end
32+
action :nothing
1233
end
1334

35+
Chef::Log.info("#{BLUE}#{PREFIX} πŸ”§ Running pyenv installer script#{RESET}")
1436
bash 'install_pyenv' do
1537
code pyenv_installer_path.to_s
1638
user node['travis_build_environment']['user']
1739
group node['travis_build_environment']['group']
1840
environment('HOME' => node['travis_build_environment']['home'])
1941
retries 2
2042
retry_delay 30
43+
notifies :run, 'ruby_block[log_pyenv_install_result]', :immediately
2144
end
2245

46+
ruby_block 'log_pyenv_install_result' do
47+
block do
48+
pyenv_path = "#{node['travis_build_environment']['home']}/.pyenv"
49+
if ::File.directory?(pyenv_path)
50+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Pyenv successfully installed to #{pyenv_path}#{RESET}")
51+
else
52+
Chef::Log.error("#{RED}#{PREFIX} ❌ Failed to install pyenv to #{pyenv_path}#{RESET}")
53+
end
54+
end
55+
action :nothing
56+
end
57+
58+
Chef::Log.info("#{BLUE}#{PREFIX} πŸ”„ Creating symlink to pyenv at /opt/pyenv#{RESET}")
2359
link '/opt/pyenv' do
2460
to "#{node['travis_build_environment']['home']}/.pyenv"
2561
owner node['travis_build_environment']['user']
2662
group node['travis_build_environment']['group']
2763
mode 0o755
64+
notifies :run, 'ruby_block[log_symlink_result]', :immediately
65+
end
66+
67+
ruby_block 'log_symlink_result' do
68+
block do
69+
if ::File.symlink?('/opt/pyenv')
70+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Symlink to pyenv created successfully#{RESET}")
71+
else
72+
Chef::Log.error("#{RED}#{PREFIX} ❌ Failed to create symlink to pyenv#{RESET}")
73+
end
74+
end
75+
action :nothing
2876
end
2977

3078
bash_profile = ::File.join(
3179
node['travis_build_environment']['home'],
3280
'.bash_profile'
3381
)
3482

83+
Chef::Log.info("#{BLUE}#{PREFIX} βš™οΈ Adding pyenv to PATH in #{bash_profile}#{RESET}")
3584
bash 'export_path_to_pyenv' do
3685
code "echo 'export PATH=#{node['travis_build_environment']['home']}/.pyenv/bin:$PATH' >> #{bash_profile}"
3786
user node['travis_build_environment']['user']
3887
group node['travis_build_environment']['group']
88+
notifies :run, 'ruby_block[log_path_export]', :immediately
89+
end
90+
91+
ruby_block 'log_path_export' do
92+
block do
93+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Pyenv PATH export added to bash profile#{RESET}")
94+
end
95+
action :nothing
3996
end
4097

98+
Chef::Log.info("#{BLUE}#{PREFIX} βš™οΈ Adding pyenv init to bash profile#{RESET}")
4199
bash 'add_pyenv_init_to_bash_profile' do
42100
code "echo 'eval \"$(pyenv init -)\"' >> #{bash_profile}"
43101
user node['travis_build_environment']['user']
44102
group node['travis_build_environment']['group']
103+
notifies :run, 'ruby_block[log_pyenv_init]', :immediately
104+
end
105+
106+
ruby_block 'log_pyenv_init' do
107+
block do
108+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Pyenv init added to bash profile#{RESET}")
109+
end
110+
action :nothing
45111
end
46112

113+
Chef::Log.info("#{BLUE}#{PREFIX} βš™οΈ Adding virtualenv init to bash profile#{RESET}")
47114
bash 'add_virtualenv_init_to_bash_profile' do
48115
code "echo 'eval \"$(pyenv virtualenv-init -)\"' >> #{bash_profile}"
49116
user node['travis_build_environment']['user']
50117
group node['travis_build_environment']['group']
118+
notifies :run, 'ruby_block[log_virtualenv_init]', :immediately
51119
end
52120

121+
ruby_block 'log_virtualenv_init' do
122+
block do
123+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Pyenv virtualenv-init added to bash profile#{RESET}")
124+
end
125+
action :nothing
126+
end
53127

54128
pyenv_versions = %w[
55129
3.7.6
@@ -58,34 +132,130 @@
58132
3.10.9
59133
]
60134

135+
Chef::Log.info("#{MAGENTA}#{PREFIX} πŸ“‹ Installing Python versions: #{pyenv_versions.join(', ')}#{RESET}")
61136
pyenv_versions.each do |version|
137+
Chef::Log.info("#{YELLOW}#{PREFIX} ⏳ Starting installation of Python #{version}#{RESET}")
62138
bash "pyenv_install_#{version}" do
63-
code "source #{bash_profile} && pyenv install #{version}"
139+
code <<-EOH
140+
source #{bash_profile}
141+
echo "#{YELLOW}#{PREFIX} ⏳ Starting installation of Python #{version}#{RESET}"
142+
pyenv install #{version}
143+
if pyenv versions | grep #{version}; then
144+
echo "#{GREEN}#{PREFIX} βœ… Python #{version} installed successfully#{RESET}"
145+
else
146+
echo "#{RED}#{PREFIX} ❌ Failed to install Python #{version}#{RESET}"
147+
exit 1
148+
fi
149+
EOH
64150
user node['travis_build_environment']['user']
65151
group node['travis_build_environment']['group']
66152
environment(
67153
'HOME' => node['travis_build_environment']['home'],
68154
'PATH' => ENV.fetch('PATH', nil)
69155
)
156+
notifies :run, "ruby_block[log_python_#{version}_install]", :immediately
157+
end
158+
159+
ruby_block "log_python_#{version}_install" do
160+
block do
161+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Completed installation attempt of Python #{version}#{RESET}")
162+
end
163+
action :nothing
70164
end
71165
end
72166

167+
Chef::Log.info("#{BLUE}#{PREFIX} πŸ”„ Setting global Python version to 3.8.1#{RESET}")
73168
bash 'pyenv_global_set_to_3.8.1' do
74-
code "source #{bash_profile} && pyenv global 3.8.1"
169+
code <<-EOH
170+
source #{bash_profile}
171+
pyenv global 3.8.1
172+
echo "#{BLUE}#{PREFIX} πŸ” Current Python version: $(python --version)#{RESET}"
173+
if [[ "$(python --version 2>&1)" == *"3.8.1"* ]]; then
174+
echo "#{GREEN}#{PREFIX} βœ… Successfully set global Python version to 3.8.1#{RESET}"
175+
else
176+
echo "#{RED}#{PREFIX} ❌ Failed to set global Python version to 3.8.1#{RESET}"
177+
exit 1
178+
fi
179+
EOH
75180
user node['travis_build_environment']['user']
76181
group node['travis_build_environment']['group']
77182
environment(
78183
'HOME' => node['travis_build_environment']['home'],
79184
'PATH' => ENV.fetch('PATH', nil)
80185
)
186+
notifies :run, 'ruby_block[log_global_python]', :immediately
81187
end
82188

189+
ruby_block 'log_global_python' do
190+
block do
191+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Global Python version set to 3.8.1#{RESET}")
192+
end
193+
action :nothing
194+
end
195+
196+
Chef::Log.info("#{BLUE}#{PREFIX} πŸ“¦ Installing virtualenv#{RESET}")
83197
bash 'pip_install_virtualenv' do
84-
code "source #{bash_profile} && pip install virtualenv==15.1.0"
198+
code <<-EOH
199+
source #{bash_profile}
200+
echo "#{BLUE}#{PREFIX} πŸ“¦ Installing virtualenv 15.1.0#{RESET}"
201+
pip install virtualenv==15.1.0
202+
if pip list | grep virtualenv; then
203+
echo "#{GREEN}#{PREFIX} βœ… Virtualenv 15.1.0 installed successfully#{RESET}"
204+
else
205+
echo "#{RED}#{PREFIX} ❌ Failed to install virtualenv#{RESET}"
206+
exit 1
207+
fi
208+
EOH
85209
user node['travis_build_environment']['user']
86210
group node['travis_build_environment']['group']
87211
environment(
88212
'HOME' => node['travis_build_environment']['home'],
89213
'PATH' => ENV.fetch('PATH', nil)
90214
)
215+
notifies :run, 'ruby_block[log_virtualenv_install]', :immediately
216+
end
217+
218+
ruby_block 'log_virtualenv_install' do
219+
block do
220+
Chef::Log.info("#{GREEN}#{PREFIX} βœ… Virtualenv installation completed#{RESET}")
221+
end
222+
action :nothing
223+
end
224+
225+
Chef::Log.info("#{CYAN}#{PREFIX} 🏁 Pyenv and Python installation process completed#{RESET}")
226+
227+
ruby_block 'verify_full_installation' do
228+
block do
229+
Chef::Log.info("#{MAGENTA}#{PREFIX} πŸ” Verifying full installation#{RESET}")
230+
pyenv_installed = ::File.directory?("#{node['travis_build_environment']['home']}/.pyenv")
231+
symlink_created = ::File.symlink?('/opt/pyenv')
232+
233+
Chef::Log.info("#{pyenv_installed ? GREEN : RED}#{PREFIX} πŸ”Ή Pyenv installed: #{pyenv_installed ? 'βœ…' : '❌'}#{RESET}")
234+
Chef::Log.info("#{symlink_created ? GREEN : RED}#{PREFIX} πŸ”Ή Symlink created: #{symlink_created ? 'βœ…' : '❌'}#{RESET}")
235+
236+
if pyenv_installed && symlink_created
237+
Chef::Log.info("#{GREEN}#{PREFIX} πŸŽ‰ Installation verification passed#{RESET}")
238+
else
239+
Chef::Log.error("#{RED}#{PREFIX} β›” Installation verification failed#{RESET}")
240+
end
241+
end
242+
action :run
243+
end
244+
245+
# Final installation report
246+
ruby_block 'installation_summary' do
247+
block do
248+
puts "\n"
249+
puts "#{MAGENTA}#{PREFIX} =============================================#{RESET}"
250+
puts "#{MAGENTA}#{PREFIX} 🎯 PYENV INSTALLATION SUMMARY#{RESET}"
251+
puts "#{MAGENTA}#{PREFIX} =============================================#{RESET}"
252+
puts "#{BLUE}#{PREFIX} πŸ“Œ Pyenv location: #{node['travis_build_environment']['home']}/.pyenv#{RESET}"
253+
puts "#{BLUE}#{PREFIX} πŸ“Œ Symlink: /opt/pyenv#{RESET}"
254+
puts "#{BLUE}#{PREFIX} πŸ“Œ Python versions installed: #{pyenv_versions.join(', ')}#{RESET}"
255+
puts "#{BLUE}#{PREFIX} πŸ“Œ Global Python version: 3.8.1#{RESET}"
256+
puts "#{BLUE}#{PREFIX} πŸ“Œ Bash profile: #{bash_profile}#{RESET}"
257+
puts "#{MAGENTA}#{PREFIX} =============================================#{RESET}"
258+
puts "\n"
259+
end
260+
action :run
91261
end

0 commit comments

Comments
Β (0)