Debian-based Docker image derived from Debian-12-slim.
Use case:
- Build: PowerShell modules in the form of
folder,.zip, or.nupkg. - Build: .NET binaries.
- .NET SDK v8.0.412
- Libraries and binaries (AOT)
- .NET SDK v10.0.103
- Libraries and binaries (AOT)
- .NET SDK v8.0.412
- Build: NuGet packages:
- GitLab
.nupkgpackages. - Chocolatey
.nupkgpackages. - ProGet NuGet
.nupkgpackages. - ProGet Chocolatey
.nupkgpackages.
- GitLab
- Send: Codecov results/reports.
- Send: Coveralls results/reports.
- Build: RubyGems gems.
- Build: Jekyll websites.
- Build: Go binaries.
- Build: Rust binaries.
- Build: Elixir applications.
- Build Gem-based Jekyll websites.
This image is intended to be used with the Automator-Devops automation suite to build and deploy PowerShell modules, .NET binaries, NuGet packages, Chocolatey packages, RubyGems packages, and Jekyll websites.
This image is not intended to be used as a standalone image. It is intended to be used with the Automator-Devops automation suite or other similar automation suites or scripts.
Copy Build files:
NOTE! PowerShell module specific
Build-Modulefrom Psmpacker. See the README for more information on how to use Psmpacker.
Build .NET binaries:
dotnet build. See the README for more information on how to usedotnet build.
Package .nupkg packages:
nuget pack. See:- creating-a-package for more information on how to create a NuGet package.
- using nuget pack for more information on how to use
nuget pack.
Package .nupkg packages compatible with psgallery, chocolatey, gitlab packages, github packages:
- Chocolatey
.nupkgpackages:New-ChocoNuspecFileandNew-ChocoPackage. See the README for more details on how to use Nupsforge. - ProGet NuGet
.nupkgpackages:New-NuspecPackageFileandNew-NupkgPackage. See the README for more details on how to use Nupsforge. - ProGet Chocolatey
.nupkgpackages:New-ChocoNuspecFileandNew-ChocoPackage. See the README for more details on how to use Nupsforge.
Generate Verification Checksums:
Generate Semantic Version using Get-GitAutoVersion cmdlet:
- Git semantic versioning generator:
Get-GitAutoVersioncmdlet.
Publish code coverage results to codecov:
- Publish code coverage results to Codecov.
Publish code coverage results to coveralls:
- Publish code coverage results to Coveralls.
Run PowerShell commands and scripts using default shell:
pwsh -c './phellams/myscript.ps1'
Build, pack, and deploy RubyGems:
- [WIP] Build, pack, and deploy RubyGems packages using
GemCommander. See the README for more details on how to use GemCommander.
Build, pack, and deploy Jekyll websites:
- [WIP] Build, pack, and deploy Jekyll websites using
JekyllCommander. See the README for more details on how to use JekyllCommander.
- β .NET SDK v8.0.412
- β .NET SDK v10.0.103
- β PowerShell Core 7.5.2
- β Git
- β
Chocolatey
- For Choco packages
choco packandchoco push, use the official Choco Docker image: https://github.com/chocolatey/choco-docker. You can build the.nuspecfile with Nupsforge and then use the Choco Docker image to pack and deploy. -
Note! Chocolatey is not officially supported on Linux, but it can be run through Mono.
-
Note! Chocolatey can be compiled to run on Mono but requires special configuration.
- For Choco packages
- β
NuGet
- NuGet 6.x is executed through Mono and can be called using the default
nugetexecutable.
- NuGet 6.x is executed through Mono and can be called using the default
- β Codecov
- β curl
- β wget
- β Ruby
- β RubyGems
- β Go
- β Rust
- β Elixir
- β
Pester 5.5.0
- Testing framework for PowerShell.
- β
PSScriptAnalyzer 1.0
- PowerShell script analyzer.
- β
PowerShell-Yaml 1.0
- PowerShell YAML parser.
- β
ColorConsole
- Colorful console output using ANSI escape sequences with the default PowerShell console color palette.
- β
Tadpol
- Progress bars, loaders, and spinners generator.
- β
ShellDock
- Simple runspace executor with progress indicator.
- β
Quicklog
- Console logger with color support.
- β
Nupsforge
- NuGet package generator supporting: psgallery, chocolatey, proget (psgallery, chocolatey), gitlab packages, github packages.
- β
Psmpacker
- Build folder generator.
- β
CSVerify
- Code verification via
VERIFICATION.txt.
- Code verification via
- β
GitAutoVersion
- Git semantic versioning generator.
- β
Phwriter
- Generate Linux man pages for PowerShell cmdlets/functions.
- [WIP] GemCommander
- Build and deploy RubyGems packages.
- [WIP] JekyllCommander
- Build and deploy Jekyll websites.
- β
PowerShell.profile.ps1
- Custom PowerShell profile displaying image information.
- Imports modules and functions from the
./includesfolder.
Clone and run docker buildx build -t phellams-automator -f phellams-automator.dockerfile . to build the image.
git clone https://gitlab.com/phellams/phellams-automator.git
cd phellams-automator
docker buildx build -t phellams-automator -f phellams-automator.dockerfile .
docker image inspect phellams-automator #| jqor alternatively, use the local build script:
# Windows
./phellams-automator-local-builder.ps1 -buildMode Base
# linux
sudo pwsh -c ./phellams-automator-local-builder.ps1 -buildMode BaseLocal builds are tagged with
:localbuild
Default shell is
pwshand will output the container information.
docker run --rm phellams-automator# dynamic path
docker run -it -v .:/phellams-automator docker.io/sgkens/phellams-automator
# absolute path
docker run -it -v $(pwd):/phellams-automator docker.io/sgkens/phellams-automatorOr, if you want to use the absolute path with WSL2:
# Wsl2
docker run -it -v $(wslpath -w $(pwd)):/phellams-automator docker.io/sgkens/phellams-automator# Linux
docker run -it -v $(pwd):/phellams-automator docker.io/sgkens/phellams-automator# nuget
docker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator nuget pack ./
# pester
docker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator invoke-pester -script ./tests/tests.ps1
# psscriptanalyzer
docker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator invoke-psscriptanalyzer -script ./tests/tests.ps1
# dotnet
docker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator dotnet build
# gitautoversion
docker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator (Get-Gitautoversion).Versiondocker run --rm -it -v .:yourfolder docker.io/sgkens/phellams-automator:latest
# Running script in container
docker run -it --rm -v $(pwd):/phellams -w /phellams sgkens/phellams-automator:latest pwsh -c './phellams/myscript.ps1'- Add Ruby support to allow building of jekyll websites
- Add RubyGems support - required dependencies
- Add Jekyll support
- Add Go support
- Add Rust support
- Add Elixir support
- Add toml support with ptoml, and linux toml support
- Add chocolatey support Chocolatey is not officially supported by linux* however it doesnt explicitly say it is not supported, use mono and compile choco for mono, use choco offical package,
docker.io/chocolatey/choco:latest - Fix outstanding Security Vulnerabilities reported by dockerhub vulnerability scanner.
- update nupsforge to support gitlab packages
- Add coveralls
- add codecov
- add nuget via mono to access nuget v 6.x + in debian 12
- use mono to attempt to run choco executable
- opted to use mono docker image to run choco builds and deploy does support all but for build and deploy choco packages to chocolatey is sufficent.
- Start porting binaries to Debian bins 13 slim and test
- Implement high-performance CLI patterns for Go/Rust
- Multi-platform Docker builds using buildx
- Ensure Elixir OTP compliance for applications
Feel free to contribute! Fork the repo and submit a merge request with your improvements. Or, open an issue with the enhancement tag to discuss your ideas.
- Fork the Project from
git clone https://gitlab.com/phellams/phellams-automator.git - Create your Feature Branch check out the branch dev
git switch dev.git switch -c feature/AmazingFeature- or
git checkout -b feature/AmazingFeature
- Commit your Changes
git commit -m 'Add some AmazingFeature' - Push to the Branch
git push origin feature/AmazingFeature - Open a Merge Request
Distributed under the MIT License. See LICENSE.txt for more information.