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年ぐらいたっています(笑)