Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
psakeちょこっとだけ
2015/05/09 (Sat)
第5回 PowerShell勉強会 @日本マイクロソフト 関西支店
@HIDARI0415
自己紹介など
• 井川 将(いかわしょう)	

• Twitter: @HIDARI0415	

• Facebook: 本名のほうで	

• 大阪市内でエンジニア(VC++6.0)	

• C#、CI(Continuous Integrati...
psakeとは?
psakeとは?
• Powershellで書かれたビルド自動化ツール
• psake (https://github.com/psake/psake)
• Home · psake Wiki (https://github.com/
psak...
psakeとは?
• psake is pronounced sake – as in Japanese
rice wine. It does NOT rhyme with make,
bake, or rake. (https://githu...
psakeとは?
• Powershellの構文でビルドスクリプトを記述
• XMLのカギ括弧地獄から抜け出せる
• .NET Frameworkの力を享受
• AntやMSBuildのようにタスク、タスク同士の
依存関係を定義する
psakeを使うには?
psakeを使うには?
• psakeを以下のどちらかの方法で用意する
• Githubから git clone するかzipでダウンロード
• 現時点での最新はv4.4.1
• chocolateyで choco install psake ...
psakeを使うには?
• psake.psm1 を Import-Module
• ビルドスクリプトを書く
• 以下のどちらかで実行する
• Invoke-psake .YourScript.ps1!
• .psake.ps1 .YourSc...
psakeのビルドスクリプト
ビルドスクリプトの基本形
ビルドスクリプトの基本形
• Task <Name> -Depends <Task>, …{}	
• <Name>にタスク名
• <Task>に依存するタスク名
• Task関数にタスク名とスクリプトブロックを
渡す形で定義
ビルドスクリプトの基本形
# YourScript.ps1	
!
Task default -Depends Compile	
!
Task Compile -Depends Init, Clean {	
# Compile your proj...
ビルドスクリプトの基本形
• Invoke-psake .YourScript.ps1	
• [Init] > [Clean] > [Compile] の順で
実行される
パラメータとプロパティ
パラメータとプロパティ
• 実行時のパラメータ指定が可能
• -Parameter で連想配列で指定
• Invoke-Psake .YourBuild2.ps1 -
Parameters @{"param1"="Hoge";
“param2"...
パラメータとプロパティ
# YourBuild2.ps1	
!
properties{	
$param1 = $null	
$param2 = $null	
}	
!
Task default -depends AwesomePropertyT...
外部コマンドの実行
外部コマンドの実行
• Powershellの動きに引きずられる
• 外部コマンドの実行後には $LastExitCode
をチェックしないといけない
外部コマンドの実行
Task default -Depends MyAwesomeTask, MyNewAwesomeTask	
!
Task MyAwesomeTask{	
	 # これは停止しない	
cmd /c exit(1)	
}	
!...
外部コマンドの実行
• ノイズが多すぎるのでexec関数が存在する
• exec関数には外部コマンドを実行するコード
を含むスクリプトブロックを引数として渡す
外部コマンドの実行
Task default -Depends TaskWithExec	
!
Task TaskWithExec{	
	 # これで停止するようになる	
	 exec{cmd /c exit(1)}	
}
例外でも処理を継続する
例外でも処理を継続する
• 逆に例外が投げられても処理を続けたい
• タスクの定義で -ContinueOnError スイッ
チを使う
例外でも処理を継続する
Task default -Depends TaskA	
!
Task TaskA -Depends TaskB {	
	 "Task A"	
}	
!
Task TaskB -Depends TaskC -Contin...
例外でも処理を継続する
• [TaskC] > [TaskB] > [TaskA]
• TaskBは例外を投げてもTaskAが実行される
参考
• How can I force the build to fail if a command line program I run
from a task fails? (https://github.com/psake/psake/...
Upcoming SlideShare
Loading in …5
×

Psakeちょこっとだけ

2,598 views

Published on

2015/05/09 (Sat)に行われた、第5回 PowerShell勉強会 @日本マイクロソフト 関西支店でのLT資料。

Published in: Software
  • Be the first to comment

Psakeちょこっとだけ

  1. 1. psakeちょこっとだけ 2015/05/09 (Sat) 第5回 PowerShell勉強会 @日本マイクロソフト 関西支店 @HIDARI0415
  2. 2. 自己紹介など • 井川 将(いかわしょう) • Twitter: @HIDARI0415 • Facebook: 本名のほうで • 大阪市内でエンジニア(VC++6.0) • C#、CI(Continuous Integration)に興味があります
  3. 3. psakeとは?
  4. 4. psakeとは? • Powershellで書かれたビルド自動化ツール • psake (https://github.com/psake/psake) • Home · psake Wiki (https://github.com/ psake/psake/wiki)
  5. 5. psakeとは? • psake is pronounced sake – as in Japanese rice wine. It does NOT rhyme with make, bake, or rake. (https://github.com/psake/ psake/wiki/What-Is-psake%3F) • 「酒(さけ)」で p は発音しないようですね (よくわかってない。
  6. 6. psakeとは? • Powershellの構文でビルドスクリプトを記述 • XMLのカギ括弧地獄から抜け出せる • .NET Frameworkの力を享受 • AntやMSBuildのようにタスク、タスク同士の 依存関係を定義する
  7. 7. psakeを使うには?
  8. 8. psakeを使うには? • psakeを以下のどちらかの方法で用意する • Githubから git clone するかzipでダウンロード • 現時点での最新はv4.4.1 • chocolateyで choco install psake する • こっちはv4.3.2
  9. 9. psakeを使うには? • psake.psm1 を Import-Module • ビルドスクリプトを書く • 以下のどちらかで実行する • Invoke-psake .YourScript.ps1! • .psake.ps1 .YourScript.ps1
  10. 10. psakeのビルドスクリプト
  11. 11. ビルドスクリプトの基本形
  12. 12. ビルドスクリプトの基本形 • Task <Name> -Depends <Task>, …{} • <Name>にタスク名 • <Task>に依存するタスク名 • Task関数にタスク名とスクリプトブロックを 渡す形で定義
  13. 13. ビルドスクリプトの基本形 # YourScript.ps1 ! Task default -Depends Compile ! Task Compile -Depends Init, Clean { # Compile your project. } ! Task Clean -Depends Init { # Clean your project’s binaries. } ! Task Init { # Initialize your build process. }
  14. 14. ビルドスクリプトの基本形 • Invoke-psake .YourScript.ps1 • [Init] > [Clean] > [Compile] の順で 実行される
  15. 15. パラメータとプロパティ
  16. 16. パラメータとプロパティ • 実行時のパラメータ指定が可能 • -Parameter で連想配列で指定 • Invoke-Psake .YourBuild2.ps1 - Parameters @{"param1"="Hoge"; “param2"="Fuga"}
  17. 17. パラメータとプロパティ # YourBuild2.ps1 ! properties{ $param1 = $null $param2 = $null } ! Task default -depends AwesomePropertyTest ! Task AwesomePropertyTest{ “param1: $param1” “param2: $param2" }
  18. 18. 外部コマンドの実行
  19. 19. 外部コマンドの実行 • Powershellの動きに引きずられる • 外部コマンドの実行後には $LastExitCode をチェックしないといけない
  20. 20. 外部コマンドの実行 Task default -Depends MyAwesomeTask, MyNewAwesomeTask ! Task MyAwesomeTask{ # これは停止しない cmd /c exit(1) } ! Task MyNewAwesomeTask{ cmd /c exit(1) if($LastExitCode -ne 0){ throw "Your command failed." } }
  21. 21. 外部コマンドの実行 • ノイズが多すぎるのでexec関数が存在する • exec関数には外部コマンドを実行するコード を含むスクリプトブロックを引数として渡す
  22. 22. 外部コマンドの実行 Task default -Depends TaskWithExec ! Task TaskWithExec{ # これで停止するようになる exec{cmd /c exit(1)} }
  23. 23. 例外でも処理を継続する
  24. 24. 例外でも処理を継続する • 逆に例外が投げられても処理を続けたい • タスクの定義で -ContinueOnError スイッ チを使う
  25. 25. 例外でも処理を継続する Task default -Depends TaskA ! Task TaskA -Depends TaskB { "Task A" } ! Task TaskB -Depends TaskC -ContinueOnError { "Task B" throw "I failed on purpose!" } ! Task TaskC { "Task C" }
  26. 26. 例外でも処理を継続する • [TaskC] > [TaskB] > [TaskA] • TaskBは例外を投げてもTaskAが実行される
  27. 27. 参考 • How can I force the build to fail if a command line program I run from a task fails? (https://github.com/psake/psake/wiki/How- can-I-force-the-build-to-fail-if-a-command-line-program-I-run- from-a-task-fails%3F) • The Exec Problem - James Kovacs' Weblog (http:// jameskovacs.com/2010/02/25/the-exec-problem/) • How can I ensure my build script keeps running even if one of my tasks throws an exception? (https://github.com/psake/ psake/wiki/How-can-I-ensure-my-build-script-keeps-running- even-if-one-of-my-tasks-throws-an-exception%3F)

×