Full CI/CD PowerShell Module with Plaster

Old Friends

Long time ago I’ve created a little helper function to ease the creation of PowerShell modules (link). Since then I’ve learnt a lot of new stuff, but most importantly I’ve met Plaster (repo). I’ve decided to revisit the idea of scaffolding a PowerShell module with Plaster.

New Friends

I’m using this template for some time now, but never found time to publish it. If You’ve been to our Polish PowerShell User Group #10 Meetup, You could get a sneak peak of it being used in our CI/CD chain both for open source (AppVeyor and GitHub) and closed source (TeamCity in Objectivity). We (with Tomek Dabrowski) had the privilege to show that during PSConfEU 2018 (YouTube and slides ) as well.

The Benefit

What is the benefit of using Plaster? Simplicity and repeatability when creating new modules. It can also be used to create functions and tests files based on another template (that is yet to be discovered by me :)) )

If you’d like to know more, these are the best sources to start from:

Our PPoShTemplate creates basic folder structure, script style rules for PSScriptAnalyzer and adds build scripts to support both local runs and with CI/CD (works well with TeamCity and AppVeyor). The bonus is that if you clone your repo’s wiki it will regenerate it during local build run (details in our video from PSConfEU).

How to Use it

This is VERY simple – just download/clone this repo PlasterModuleTemplate and Invoke-Plaster

This will trigger Plaster. After you answer some questions your new module will be created:

What’s next

Currently we’re preparing to add Azure DevOps Services (a.k.a VSTS) into the mix, so soon additional files in build directory will be added to support that.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s