脚本资源中cwd属性的用途是什么?出于某种原因,第一个块运行但第二个块无法正常工作(即在/var/apps
下克隆git仓库)
script 'clone_repo' do
interpreter "bash"
code <<-EOH
cd /var/apps
git clone https://gitlab.com/dsura/test-go-web-app.git
EOH
not_if { ::File.directory?("/var/apps/test-go-web-app") }
end
和
script 'clone_repo' do
interpreter "bash"
cwd ::File.dirname('/var/apps')
code <<-EOH
git clone https://gitlab.com/dsura/test-go-web-app.git
EOH
not_if { ::File.directory?("/var/apps/test-go-web-app") }
end
答案 0 :(得分:1)
我认为File.directory
不是一种存在的方法,但如果你的意思是cwd '/var/apps'
则没有区别。它在运行子进程(也就是脚本)之前设置工作目录。这对execute
资源更为重要,您可能不希望cd
使用script
这样的资源,但execute
继承自execute 'git clone https://gitlab.com/dsura/test-go-web-app.git /var/apps/test-go-web-app' do
creates '/var/apps/test-go-web-app'
end
,因此它只是为了搭载而来。
你可以把整个事情简洁地写成:
git '/var/apps/test-go-web-app' do
action :checkout
repository 'https://gitlab.com/dsura/test-go-web-app.git'
end
或者使用git资源甚至更少:
action :checkout
你离开:sync
,默认master
操作会在每次Chef运行时更新到{{1}}分支,这也可能更好。