私は、cvs リポジトリからコードをデプロイするためのパペット マニフェストに取り組んでいます。これまでのところ、次のものがあります。
define codedeploy::cvs ($module, $tag, $copydir) {
file { "$copydir":
owner => www-data,
group => www-data,
mode => 755,
ensure => directory
}
#bypass cvs login, we'll just inject a ~/.cvspass file
# to do
#initial cvs checkout
exec { "cvscheckout-$name":
command => "cvs co -r $tag -d $name $module",
creates => "$copydir/$name/CVS",
require => [Package[cvs], File["$copydir"]],
environment => "CVSROOT=:pserver:robots@codeserver:/cvs/repository",
cwd => "$copydir"
}
#cvs update to tag
exec { "cvsupdate-$name":
command => "cvs up -r $tag",
require => [Package[cvs], File["$copydir"], Exec["cvscheckout-$name"] ],
environment => "CVSROOT=:pserver:robots@codeserver:/cvs/repository",
cwd => "$copydir/$name",
unless => #NEED TO FIGURE THIS PART OUT!
}
}
私が知らない部分は、作業コピーのリビジョンステータスを返す方法です。これにより、パペットが実行されるたびに cvs update が呼び出されなくなります。cvs には、作業ツリー全体の現在のタグまたはリビジョン ID を返すコマンドがありますか? cvs diff を実行すると、そのタグの下にあるすべてのファイルを比較する必要があることがわかっているようですが、チェックアウトした後で作業コピーのタグ ID を返す方法がわかりません。
ありがとう!