Skip to content

Instantly share code, notes, and snippets.

@stknohg
Last active January 30, 2018 04:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stknohg/68697e0e305ff91661962441a0938d67 to your computer and use it in GitHub Desktop.
Save stknohg/68697e0e305ff91661962441a0938d67 to your computer and use it in GitHub Desktop.
PowerShell CoreのCIについてのメモ

PowerShell CoreのCIについてのメモ

基本

PowerShell CoreはCIにAppveyorとTravis CIをつかっている。

  • AppVeyor

    • Windowsのテスト用
    • CIの起点は .\tools\appveyor.psm1Invoke-AppveyorTest
  • Travis CI

    • Linux/macOSのテスト用
    • CIの起点は .\tools\travis.ps1

どちらのCIも内部的には.\build.psm1モジュールのStart-PSPesterを呼んでおり、Start-PSPesterがテストの主処理となっている。

WindowsのCI

AppveyorのCIはAppveyorユーザーで実行され、Appveyorユーザーは昇格済みである。
WindowsのCIでは昇格済みのパターンと通常権限のパターンで2回Start-PSPesterが呼ばれている。

  1. 昇格済みのパターン
# 実行例であり、正確にすべてのパラメーターを記載しているわけではない
Start-PSPester -Tag 'RequireAdminOnWindows' -ExcludeTag 'Slow'

Slowテストを除外しRequireAdminOnWindowsタグだけを実行するパターンとなっている。

  1. 通常権限のパターン
# 実行例であり、正確にすべてのパラメーターを記載しているわけではない
Start-PSPester -Unelevate -Tag '' -ExcludeTag @('Slow', 'RequireAdminOnWindows')

-ExcludeTagパラメーターにRequireAdminOnWindowsが追加されRequireAdminOnWindowsタグ以外のテストをすべて実行している。

※ちなみにこの場合後述のCIタグも実行対象となる。

また-Unelevateパラメーターを指定しており、内部的にrunas.exe /trustlevel:0x20000 pwshが実行されて権限の降格がなされている。

Linux/macOSのCI

Linux/macOSのCIはそれぞれtravisユーザーで行われている。
CIの設定上sudoが可能となっているがビルド環境を作る際に必要な箇所でのみ呼ばれており、CI自体は通常ユーザー権限でのみ実行されている。

この点に関してはGitHubに以下のIssueが上げられており、いずれはLinux/macOSにおいてroot権限でのテストがサポートされる見込みとなっている。

内部的には

# 実行例であり、正確にすべてのパラメーターを記載しているわけではない
Start-PSPester -Tag @('CI') -ExcludeTag 'Slow'

CIタグのついたテストのみを実行している。

フルビルドに関して

通常のビルトとは別にフルビルドを行う際は、Start-PSPesterの実行対象にFEATURESCENARIOタグなどが付与され、テストケースが増やされる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment