" , ,
", ,
"" _---. ..;%%%;, .
"" .", , .==% %%%%%%% ' .
"", %%% =%% %%%%%%; ; ;-_
%; %%%%% .;%;%%%"%p ---; _ '-_
%; %%%%% __;%%;p/; O --_ "-,_
q; %%% /v \;%p ;%%%%%;--__ "'-__'-._
//\\" // \ % ;%%%%%%%;',/%\_ __ "'-_'\_
\ / // \/ ;%% %; %;/\%%%%;;;;\ "- _\
," %; %%; %%;;' ';% -\-_
-=\=" __% %%;_ |;; %%%\ \
_/ _= \==_;;,_ %%%; % -_ /
/ /- =%- ;%%%%; %%; "--__/
//= ==%-%%; %; %
/ _=_- d ;%; ;%; :F_P:
\ =,-" d%%; ;%%;
// % ;%%;
// d%%%"
\ %%
V
\ \ /\ / / _` / __| '_ \
\ V V / (_| \__ \ |_) |
\_/\_/ \__,_|___/ .__/
| |
|_|
WASP is a PowerShell Module to automatically build and push software packages. All packages are built using chocolatey. The chocolatey manifests are taken from existing community or own-hosted repositories. The built packages will be pushed to a given NuGet repository and the source code will be commited to a defined Git repository.
You need to have the following system and configuration set up:
- Own-hosted NuGet repository e.g. Sonatype Nexus Repository Manager. There should be three NuGet repositories
- dev for hosting the packages which are in development
- test for hosting the packages which are in QA
- prod for hosting the packages which can be deployed to your clients
- Four git repositories
- Packages inbox repository to define the sources as git submodules to get the chocolatey manifests
- Packages wishlist which only consits of a txt file to add your wished software. Software are added with their chocolatey id and each on a new line
- Packages inbox filtered repository to filter only the wished software from all the defined sources in the wishlist
- Packages gallery where your productive package manifests can be changed. This repository has to be a fork of the packages inbox filtered repository because PRs will be create from package inbox filtered
The chocolateyInstall.ps1 should be structured as the following to work best:
$ErrorActionPreference = 'Stop';
$packageName = 'atlassian-companion'
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$packageArgs = @{
packageName = $packageName
unzipLocation = $toolsDir
fileType = 'MSI'
url = 'https://update-nucleus.atlassian.com/Atlassian-Companion/291cb34fe2296e5fb82b83a04704c9b4/latest/win32/ia32/Atlassian%20Companion.msi'
silentArgs = "/qn /norestart /l*v `"$($env:SWP)\$($packageName).$($env:chocolateyPackageVersion).MsiInstall.log`"" # ALLUSERS=1 DISABLEDESKTOPSHORTCUT=1 ADDDESKTOPICON=0 ADDSTARTMENU=0
validExitCodes = @(0, 3010, 1641)
softwareName = 'atlassian-companion*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique
checksum = '37a465886b08a16ae8c3c51509e412b1a2b533189616ed333654ee1fdaa82c92'
checksumType = 'sha256' #default is md5, can also be sha1
}
Install-ChocolateyPackage @packageArgs
- Package update selection
- Combination of internal and public packages due to define your wanted sources
- Build and push NuPkg of the chocolatey packages
- Dedicated development branches for each package and version
- Detect changes of install scripts to automatically rebuild packages
- Binaries are downloaded and included in the NuPkgs
- Configurations and changes from an older version are automatically moved to the new version
- Multiple package sources from the community or your own git repositories
- Live-Log to see what's actually happening
- Configuration via JSON
- Download the sources of the module from this git repository.
- Import the module in your PowerShell session
Import-Module Path-to-the-Module\Wasp
- Configure wasp.json for your environment. It's located in the modules directory
- Run the register cmdlet to set up your packaging client correctly
Register-ChocolateyPackagingClient
- Add some sources to your packages inbox repository
- Wish your software (add package id to the wishlist.txt in the wishlist's repository)
- Run the workflow to see the magic happen
Start-Workflow
- Monitor the progess with the dedicated log watcher cmdlet
Start-ChocoLogWatcher