09:30

Jenkinsでモジュールをビルドするのにbatファイルを使っていたが、複雑な処理を書こうとすると、記述が面倒になるので、PowerShellを使えないかと思い、スクリプトを書いてみた。

実現したいことは、モジュールをビルドして、できたモジュールをファイルサーバーにコピーするという単純なもの。 作業フォルダとビルド番号はJenkinsの環境変数を使用するつもり。 できれば、Start-Processを使用したかったけど、うまく実行できなかったのでツールをそのまま呼び出している。

#------------------------------------
# モジュールのビルド
#------------------------------------
$wkdir = "..\.."
$buildNumber=999
if ($args.Count -gt 0)
{
    $wkdir = $args[0]
    $buildNumber = $arg[1]
}
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
$buildArgs = "/t:rebuild /p:Configuration=Release $wkdir\src\App.sln"
# $proc = Start-Process -FilePath $msbuild -ArgumentList $buildArgs -Wait -PassThru
 & $msbuild /t:rebuild /p:Configuration=Release $wkdir\src\App.sln

#------------------------------------
# モジュールをファイルサーバーにコピー
#------------------------------------
$tgtDir = "\\fileServer\build\$buildNumber"
if (Test-Path $tgtDir)
{
    Remove-Item $tgtDir\*.* -Recurse
    Remove-Item $tgtDir -Recurse
}
New-Item $tgtDir -ItemType Directory
New-Item $tgtDir\bin -ItemType Directory
#New-Item $tgtDir\setup -ItemType Directory
Copy-Item "$wkdir\src\bin\release\*.*" $tgtDir\bin

10:40

Powershell で git log を実行すると"terminal is not fully functional"が表示される。 TERM環境変数を設定することで解決した。

stackoverflow.com

$env:TERM="msys"

15:20

Start-Process をもう一度実行してみたら問題なく動作した。何か勘違いしてたかな? GitのホスティングにGitBucketを使用しているのだが、ビルド後のタグ追加で認証情報(user/password)が必要になりジョブが失敗する。(これまでのジョブは素のリポジトリだったので認証は不要)

gitcredentials を使えば解決しそうなのだが平文パスワードを残したくないのでやめる。 プラグインを入れる方法もありそうだが、サービスを止めないといけないので今日はあきらめる。

$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
$buildArgs = "/t:rebuild /p:Configuration=Release $wkdir\src\App.sln"
$proc = Start-Process -FilePath $msbuild -ArgumentList $buildArgs -Wait -PassThru

18:07

今度はリモートフォルダのアクセスで問題発生。アクセスはできるのだが10分ぐらい時間がかかってしまう。 うーん、なんでだろう?