No description
Find a file
2015-10-15 22:50:59 +00:00
docs Updated Pester Tests.md 2015-09-30 23:51:36 +00:00
ext-src Enable XML output for Pester 2015-10-13 15:25:39 -07:00
scripts Clean up cruft 2015-10-14 22:41:00 -07:00
src Add src/omi submodule at OMI-Shell/OMI-PSRP-Support 2015-10-15 13:53:42 -07:00
.gitignore Refactor use of dotnetlibs for reduced rebuilding 2015-10-14 14:03:01 -07:00
.gitmodules Add src/omi submodule at OMI-Shell/OMI-PSRP-Support 2015-10-15 13:53:42 -07:00
README.md Some readme cleanups 2015-10-08 13:44:37 -07:00

PowerShell for Linux

Obtain the source code

Setup Git

Install Git, the version control system. If you're new to Git, peruse the documentation and go through some tutorials; I recommend familiarizing yourself with checkout, branch, pull, push, merge, and after a while, rebase and cherry-pick.

The user name and email must be set to do just about anything with Git.

git config --global user.name "First Last"
git config --global user.email "alias@microsoft.com"

I highly recommend these configurations to help deal with whitespace, rebasing, and general use of Git.

git config --global am.threeWay true
git config --global apply.ignoreWhitespace change
git config --global help.autoCorrect -1
git config --global log.abbrevCommit true
git config --global log.decorate short
git config --global pull.ff only
git config --global push.default current
git config --global rerere.enabled true
git config --global rerere.autoUpdate true

Setup Visual Studio Online authentication

To use Git's https protocol with VSO, you'll want to setup tokens, and have Git remember them.

  1. git config --global credential.helper store
  2. Login to https://msostc.visualstudio.com
  3. Click your name in the upper left corner and click 'My profile'
  4. Click the "Security" tab in the left pane (under "Details")
  5. Click "Add"
  6. Enter "msostc" for "Description"
  7. Set "Expires In" to "1 year"
  8. Choose " msostc" for "Accounts"
  9. Choose "All scopes"
  10. Click "Create Token" (you may want to copy this token somewhere safe, as VSO will not show it again!)
  11. Use this token as the password when cloning (and your username for the username)
  12. Make a token for https://microsoft.visualstudio.com and use it when the monad submodule is cloned

Download source code

Clone our monad-linux source from Visual Studio Online, it's the superproject with a number of submodules.

git clone --recursive https://msostc.visualstudio.com/DefaultCollection/PS/_git/monad-linux

Please read the documentation on submodules if you're not familiar with them.

Setup build environment

Docker

See the official installation documentation on how to install Docker, and don't forget to setup a Docker group.

The Docker container can be updated with docker pull andschwa/magrathea, which downloads it from the automated build repository.

This container isolates all our build dependencies, including Ubuntu 14.04 and Mono. See the Dockerfile to look under the hood.

The build.sh script is a wrapper that starts a temporary container with monad-linux mounted and runs the arguments given to the script as your current user, but inside the container. The build artifacts will exist in your local folder and be owned by your user, essentially making the use of the container invisible. The build-tty.sh allocates a shell for the container, and so allows you to launch Bash or an interactive PowerShell session.

Building

  1. cd scripts since it contains the Makefile and build.sh
  2. ./build.sh make all will build PowerShell for Linux
  3. ./build.sh make run will build and execute a demo, "a","b","c","a","a" | Select-Object -Unique
  4. ./build-tty.sh make run-interactive will open an interactive PowerShell console
  5. ./build.tty make test will execute the unit tests
  6. make clean will remove the built objects
  7. make clean-native will remove libps
  8. make cleanall will also remove the Nuget packages

Adding Pester tests

Pester tests are located in the src/pester-tests folder. The makefile targets test and pester-tests will run all Pester tests.

The steps to add your pester tests are:

  • add *.Tests.ps1 files to src/pester-tests
  • run ./build.sh make pester-tests to run the tests

TODO: Docker shell-in-a-box

TODO: Architecture