Skip to content

indented-automation/Indented.Build

Repository files navigation

Indented.Build

Build status

Indented.Build centralises the build processes / scripts used by my modules.

The goal of this module is to act as a means of accessing and executing a well maintained set of steps which can apply across a very large module base (public and private).

My build process avoids use of dedicate build task runners such as psake or Invoke*Build on the basis that managing execution of the process is the smallest problem. The process is a bunch of sequentially executed functions with a very short overall build time.

The executor can only be used with PowerShell 5.0 or higher.

Installation

Install-Module Indented.Build

Required modules

  • Poshcode\Configuration
  • Pester

Optional modules

  • platyPS
  • PSScriptAnalyzer

Tasks

  • Setup
    • UpdateAppVeyorYml
    • UpdateAppVeyorVersion
  • Build
    • Clean
    • TestSyntax
    • TestAttributeSyntax
    • CopyModuleFiles
    • Merge
    • CompileClass
      • When module\class*.cs exist, and module\class*.*proj and module\class*.sln do not exist.
    • BuildProject
      • When module\class*.*proj exists and module\class*.sln does not.
    • BuildSolution
      • When module\class*.sln exists.
    • ImportDependencies
      • When module\modules.config exists.
    • UpdateMetadata
    • UpdateMarkdownHelp
      • When platyPS is available.
  • Test
    • TestModuleImport
    • PSScriptAnalyzer
      • When the release type is minor or greater.
    • TestModule
    • TestSolution
      • When module\class*.sln exists, and the nunitconsole (nuget package) has been restored.
    • AddAppVeyorCommitMessage
      • When Add*AppveyorCompilationMessage is available.
    • UploadAppVeyorTestResults
      • When env:APPVEYOR_JOB_ID is set.
    • ValidateTestResults
  • Release
    • UpdateCatalog
      • When a code signing certificate is available.
    • SignModule
      • When a code signing certificate is available.
  • Publish
    • PublishGitHubRelease
    • PublishToCurrentUser
    • PublishToPSGallery