ZIPの圧縮と伸張を使って自動デプロイに活用する
デプロイ作業は自動化するに限ります。VisualStudio で exe が生成されるディレクトリを、そのままZIPアーカイブしてターゲットのディレクトリに配置し、そこでZIPアーカイブを解いてやれば自動デプロイが実現できます。
xcopy とか robocopy を使ってもできるのでしょうが、それらのコマンドはオプションが多すぎてよくわからないので、私は ZIP を使ってやる場合が多いです。
前置きが長くなってしまいましたが、下記のようなスクリプトはいかがでしょうか。
param (
[string]$dirpath_for_archive,
[string]$filepath_zip,
[string]$dirpath_expand
)
write-host $dirpath_src
write-host $filepath_zip
write-host $dirpath_expand
# ZIP圧縮する.
Compress-Archive -Path $dirpath_for_archive -DestinationPath $filepath_zip -CompressionLevel "NoCompression" -Force
# ZIP伸張する.
Expand-Archive -Path $filepath_zip -DestinationPath $dirpath_expand -Force
# 伸張後にZIPファイルを削除したければ下記をコメントインする.
#Remove-Item -Path $filepath_zip
これをコマンドプロンプトで実行するには下記のようにします。VisualStudio のビルドイベントのところに書いておけば、自動でデプロイされることになります。
c:\tmp>powershell -F "./deploy.ps1" -dirpath_for_archive "C:\tmp\the_solution\out\x64" -filepath_zip "c:\abc\out\x64.zip" -dirpath_expand "c:\abc\out"
これをPowerShellコンソールで実行するには下記のようにします。
PS C:\tmp> ./deploy.ps1 -dirpath_for_archive "C:\tmp\the_solution\out\x64" -filepath_zip "c:\abc\out\x64.zip" -dirpath_expand "c:\abc\out"
なんとなく「自動デプロイ」と言いましたけれど、自動でないデプロイってあるんでしょうか。わたくしはニッチな業界の人間なので、このへんのことは実は疎いです。もしかして手動デプロイとかってあるんですか?
実はCIツールを使ったこともないし、使わされたこともないのです。Jenkins とか使えたほうがいいよな、って思いながら、もう5年ぐらいたっています(笑)