Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
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/...
Próxima SlideShare
Cargando en…5
×

Psakeちょこっとだけ

2.803 visualizaciones

Publicado el

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

Publicado en: Software
  • Sé el primero en comentar

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)

×