{"id":25204743,"url":"https://github.com/phellams/phellams-automator","last_synced_at":"2026-04-10T17:05:19.192Z","repository":{"id":276560049,"uuid":"922309647","full_name":"phellams/phellams-automator","owner":"phellams","description":"Docker image debian base containing .Net Core SDK, PowerShell Core.x, NuGet, Pester, PSScriptAnalyzer, PowerShell-Yaml, ColorConsole, Nupsforge, Psmpacker, CSVerify, GitAutoVersion, and custom PowerShell Profile.","archived":false,"fork":false,"pushed_at":"2025-02-19T23:08:11.000Z","size":103,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-20T00:24:04.885Z","etag":null,"topics":["codecov","docker","dotnet","git","image","modules","nuget","pester","powershell","psscriptanalyzer","semver"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phellams.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-25T21:24:59.000Z","updated_at":"2025-02-19T23:08:15.000Z","dependencies_parsed_at":"2025-02-09T03:22:08.981Z","dependency_job_id":"3349fe51-1323-49da-a5ad-3f45ce0632c2","html_url":"https://github.com/phellams/phellams-automator","commit_stats":null,"previous_names":["phellams/phellams-psm-builder"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phellams%2Fphellams-automator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phellams%2Fphellams-automator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phellams%2Fphellams-automator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phellams%2Fphellams-automator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phellams","download_url":"https://codeload.github.com/phellams/phellams-automator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271496,"owners_count":20911586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codecov","docker","dotnet","git","image","modules","nuget","pester","powershell","psscriptanalyzer","semver"],"created_at":"2025-02-10T09:17:17.139Z","updated_at":"2026-04-10T17:05:19.173Z","avatar_url":"https://github.com/phellams.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐳  Phellams-Automator\r\n\r\n![Static Badge][license-badge]\r\n\r\n## About The Project\r\n\r\nDebian-based Docker image derived from *Debian-12-slim*.\r\n\r\nUse case:\r\n\r\n* Build: **PowerShell** modules in the form of `folder`, `.zip`, or `.nupkg`.\r\n* Build: **.NET** binaries.\r\n  * .NET SDK v8.0.412\r\n    * Libraries and binaries (AOT)\r\n  * .NET SDK v10.0.103\r\n    * Libraries and binaries (AOT)\r\n* Build: **NuGet** packages:\r\n  * GitLab `.nupkg` packages.\r\n  * Chocolatey `.nupkg` packages.\r\n  * ProGet NuGet `.nupkg` packages.\r\n  * ProGet Chocolatey `.nupkg` packages.\r\n* Send: **Codecov** results/reports.\r\n* Send: **Coveralls** results/reports.\r\n* Build: **RubyGems** gems.\r\n* Build: **Jekyll** websites.\r\n* Build: **Go** binaries.\r\n* Build: **Rust** binaries.\r\n* Build: **Elixir** applications.\r\n  * Build **Gem-based** Jekyll websites.\r\n\r\nThis image is intended to be used with the [Automator-Devops](https://gitlab.com/phellams/Automator-Devops) automation suite to build and deploy PowerShell modules, .NET binaries, NuGet packages, Chocolatey packages, RubyGems packages, and Jekyll websites.\r\n\r\nThis 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.\r\n\r\n---\r\n\r\n## Features\r\n\r\n**Copy Build files:**\r\n\r\n\u003e **NOTE!** PowerShell module specific\r\n\r\n* `Build-Module` from **Psmpacker**. See the [README](https://github.com/phellams/psmpacker/blob/main/README.md) for more information on how to use **Psmpacker**.\r\n\r\n**Build .NET binaries:**\r\n\r\n* `dotnet build`. See the [README](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-build) for more information on how to use `dotnet build`.\r\n\r\n**Package .nupkg packages:**\r\n\r\n* `nuget pack`. See:\r\n  * [creating-a-package](https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package) for more information on how to create a NuGet package.\r\n  * [using nuget pack](https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-pack) for more information on how to use `nuget pack`.\r\n\r\n**Package .nupkg packages compatible with `psgallery`, `chocolatey`, `gitlab packages`, `github packages`:**\r\n\r\n* Chocolatey `.nupkg` packages: `New-ChocoNuspecFile` and `New-ChocoPackage`. See the [README](https://github.com/phellams/nupsforge/blob/main/README.md) for more details on how to use Nupsforge.\r\n* ProGet NuGet `.nupkg` packages: `New-NuspecPackageFile` and `New-NupkgPackage`. See the [README](https://github.com/phellams/nupsforge/blob/main/README.md) for more details on how to use Nupsforge.\r\n* ProGet Chocolatey `.nupkg` packages: `New-ChocoNuspecFile` and `New-ChocoPackage`. See the [README](https://github.com/phellams/nupsforge/blob/main/README.md) for more details on how to use Nupsforge.\r\n\r\n**Generate Verification Checksums:**\r\n\r\n* `New-VerificationFile` from [csverify](https://github.com/sgkens/csverify). See the [README](https://github.com/phellams/csverify/blob/main/README.md) for more information on how to use `csverify`.\r\n\r\n**Generate Semantic Version using `Get-GitAutoVersion` cmdlet:**\r\n\r\n* Git semantic versioning generator: `Get-GitAutoVersion` cmdlet.\r\n\r\n**Publish code coverage results to [codecov](https://codecov.io):**\r\n\r\n* Publish code coverage results to Codecov.\r\n\r\n**Publish code coverage results to [coveralls](https://coveralls.io):**\r\n\r\n* Publish code coverage results to Coveralls.\r\n\r\n**Run PowerShell commands and scripts using default shell:**\r\n\r\n* `pwsh -c './phellams/myscript.ps1'`\r\n\r\n**Build, pack, and deploy RubyGems:**\r\n\r\n* [WIP] Build, pack, and deploy RubyGems packages using `GemCommander`. See the [README](https://github.com/phellams/GemCommander/blob/main/README.md) for more details on how to use GemCommander.\r\n\r\n**Build, pack, and deploy Jekyll websites:**\r\n\r\n* [WIP] Build, pack, and deploy Jekyll websites using `JekyllCommander`. See the [README](https://github.com/phellams/JekyllCommander/blob/main/README.md) for more details on how to use JekyllCommander.\r\n\r\n---\r\n\r\n## Image Manifest\r\n\r\n[![arc][arc-version]][arc-url] [![docker][docker-version]][docker-url] ![docker][docker-size] ![docker][docker-pulls]\r\n\r\n### ***🟣 Binaries***\r\n\r\n* ✅ [**.NET SDK v8.0.412**](learn.microsoft.com/en-us/dotnet/core/install/linux-debian?tabs=dotnet9)\r\n* ✅ [**.NET SDK v10.0.103**](learn.microsoft.com/en-us/dotnet/core/install/linux-debian?tabs=dotnet10)\r\n* ✅ [**PowerShell Core 7.5.2**](https://github.com/PowerShell/PowerShell)\r\n* ✅ [**Git**](https://git-scm.com/)\r\n* ✅ [**Chocolatey**](https://chocolatey.org/)\r\n  * For Choco packages `choco pack` and `choco push`, use the official Choco Docker image: [https://github.com/chocolatey/choco-docker](https://github.com/chocolatey/choco-docker). You can build the `.nuspec` file with Nupsforge and then use the Choco Docker image to pack and deploy.\r\n  * \u003e Note! Chocolatey is not officially supported on Linux, but it can be run through Mono.\r\n  * \u003e Note! Chocolatey can be compiled to run on Mono but requires special configuration.\r\n* ✅ [**NuGet**](https://www.nuget.org/downloads)\r\n  * NuGet 6.x is executed through Mono and can be called using the default `nuget` executable.\r\n* ✅ [**Codecov**](https://codecov.io)\r\n* ✅ [**curl**](https://everything.curl.dev/)\r\n* ✅ [**wget**](https://www.gnu.org/software/wget/)\r\n* ✅ [**Ruby**](https://www.ruby-lang.org/en/documentation/installation/#apt)\r\n* ✅ [**RubyGems**](https://rubygems.org/pages/download)\r\n* ✅ [**Go**](https://go.dev/)\r\n* ✅ [**Rust**](https://www.rust-lang.org/)\r\n* ✅ [**Elixir**](https://elixir-lang.org/)\r\n\r\n### ***🟡 Common Binaries***\r\n\r\n* ✅ [**gpg**](https://www.gnupg.org/)\r\n* ✅ [**apt-transport-https**](https://packages.debian.org/bookworm/apt-transport-https)\r\n* ✅ [**software-properties-common**](https://packages.debian.org/bookworm/software-properties-common)\r\n* ✅ [**ca-certificates**](https://packages.debian.org/bookworm/ca-certificates)\r\n\r\n### ***🔵 PowerShell Modules***\r\n\r\n* [**✅ Pester 5.5.0**](https://gitlab.com/pester/Pester)\r\n  * Testing framework for PowerShell.\r\n* ✅ [**PSScriptAnalyzer 1.0**](https://gitlab.com/PowerShell/Psscriptanalyzer)\r\n  * PowerShell script analyzer.\r\n* ✅ [**PowerShell-Yaml 1.0**](https://gitlab.com/cloudbase/powershell-yaml)\r\n  * PowerShell YAML parser.\r\n* ✅ [**ColorConsole**](https://gitlab.com/phellams/colorconsole)\r\n  * Colorful console output using ANSI escape sequences with the default PowerShell console color palette.\r\n* ✅ [**Tadpol**](https://gitlab.com/phellams/tadpol)\r\n  * Progress bars, loaders, and spinners generator.\r\n* ✅ [**ShellDock**](https://gitlab.com/phellams/shelldock)\r\n  * Simple runspace executor with progress indicator.\r\n* ✅ [**Quicklog**](https://gitlab.com/phellams/quicklog)\r\n  * Console logger with color support.\r\n* ✅ [**Nupsforge**](https://gitlab.com/phellams/nupsforge)\r\n  * NuGet package generator supporting: **psgallery**, **chocolatey**, **proget** (psgallery, chocolatey), **gitlab packages**, **github packages**.\r\n* ✅ [**Psmpacker**](https://gitlab.com/phellams/psmpacker)\r\n  * Build folder generator.\r\n* ✅ [**CSVerify**](https://gitlab.com/phellams/csverify)\r\n  * Code verification via `VERIFICATION.txt`.\r\n* ✅ [**GitAutoVersion**](https://gitlab.com/phellams/CommitFusion/blob/main/src/Get-GitAutoVersion.psm1)\r\n  * Git semantic versioning generator.\r\n* ✅ [**Phwriter**](https://gitlab.com/phellams/phwriter)\r\n  * Generate Linux man pages for PowerShell cmdlets/functions.\r\n* [***WIP***] [**GemCommander**](https://gitlab.com/phellams/GemCommander)\r\n  * Build and deploy RubyGems packages.\r\n* [***WIP***] [**JekyllCommander**](https://gitlab.com/phellams/JekyllCommander)\r\n  * Build and deploy Jekyll websites.\r\n\r\n### ***🔵 PowerShell Profile***\r\n\r\n* ✅ ***PowerShell.profile.ps1***\r\n  * Custom PowerShell profile displaying image information.\r\n  * Imports modules and functions from the `./includes` folder.\r\n\r\n## Build\r\n\r\n[![build][build-status]][build-url]\r\n\r\n### Building the image locally\r\n\r\nClone and run `docker buildx build -t phellams-automator -f phellams-automator.dockerfile .` to build the image.\r\n\r\n```bash\r\ngit clone https://gitlab.com/phellams/phellams-automator.git\r\ncd phellams-automator\r\ndocker buildx build -t phellams-automator -f phellams-automator.dockerfile .\r\ndocker image inspect phellams-automator #| jq\r\n```\r\n\r\nor alternatively, use the local build script:\r\n\r\n```powershell\r\n# Windows\r\n./phellams-automator-local-builder.ps1 -buildMode Base\r\n\r\n# linux\r\nsudo pwsh -c ./phellams-automator-local-builder.ps1 -buildMode Base\r\n```\r\n\r\n\u003e Local builds are tagged with `:localbuild`\r\n\r\n## Usage\r\n\r\n### Output image information\r\n\r\n\u003e Default shell is `pwsh` and will output the container information.\r\n\r\n```bash\r\ndocker run --rm phellams-automator\r\n```\r\n\r\n### Mount path examples\r\n\r\n```bash\r\n# dynamic path\r\ndocker run -it -v .:/phellams-automator docker.io/sgkens/phellams-automator \r\n\r\n# absolute path\r\ndocker run -it -v $(pwd):/phellams-automator docker.io/sgkens/phellams-automator\r\n```\r\n\r\nOr, if you want to use the absolute path with WSL2:\r\n\r\n```bash\r\n# Wsl2\r\ndocker run -it -v $(wslpath -w $(pwd)):/phellams-automator docker.io/sgkens/phellams-automator\r\n```\r\n\r\n```bash\r\n# Linux\r\ndocker run -it -v $(pwd):/phellams-automator docker.io/sgkens/phellams-automator\r\n```\r\n\r\n### Examples running commands inside the container\r\n\r\n```bash\r\n# nuget\r\ndocker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator nuget pack ./\r\n\r\n# pester\r\ndocker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator invoke-pester -script ./tests/tests.ps1\r\n\r\n# psscriptanalyzer\r\ndocker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator invoke-psscriptanalyzer -script ./tests/tests.ps1\r\n\r\n# dotnet\r\ndocker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator dotnet build\r\n\r\n# gitautoversion\r\ndocker run --rm -v .:yourfolder docker.io/sgkens/phellams-automator (Get-Gitautoversion).Version\r\n```\r\n\r\n### Interactive shell\r\n\r\n```bash\r\ndocker run --rm -it -v .:yourfolder docker.io/sgkens/phellams-automator:latest\r\n\r\n# Running script in container\r\ndocker run -it --rm -v $(pwd):/phellams -w /phellams sgkens/phellams-automator:latest pwsh -c './phellams/myscript.ps1'\r\n```\r\n\r\n\u003c!-- ROADMAP --\u003e\r\n\r\n## Roadmap\r\n\r\n### 🟡 **Task List**\r\n\r\n- [x] Add Ruby support to allow building of jekyll websites\r\n  - [x] Add RubyGems support - required dependencies\r\n- [x] Add Jekyll support\r\n- [x] Add Go support\r\n- [x] Add Rust support\r\n- [x] Add Elixir support\r\n- [ ] Add toml support with ptoml, and linux toml support\r\n- [x] 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`\r\n- [ ] Fix outstanding Security Vulnerabilities reported by dockerhub vulnerability scanner. \r\n- [x] update nupsforge to support gitlab packages\r\n- [x] Add coveralls\r\n- [x] add codecov\r\n- [x] add nuget via mono to access nuget v 6.x + in debian 12\r\n- [ ] use mono to attempt to run choco executable\r\n  - [x] 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.\r\n- [ ] Start porting binaries to Debian bins 13 slim and test\r\n- [ ] Implement high-performance CLI patterns for Go/Rust\r\n- [ ] Multi-platform Docker builds using buildx\r\n- [ ] Ensure Elixir OTP compliance for applications\r\n\r\n## Contributing\r\n\r\nFeel 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.\r\n\r\n1. Fork the Project from `git clone https://gitlab.com/phellams/phellams-automator.git`\r\n2. Create your Feature Branch check out the branch dev `git switch dev`.\r\n   1. `git switch -c feature/AmazingFeature`\r\n   2. or \r\n   3. `git checkout -b feature/AmazingFeature`\r\n3. Commit your Changes `git commit -m 'Add some AmazingFeature'`\r\n4. Push to the Branch `git push origin feature/AmazingFeature`\r\n5. [Open a Merge Request](https://gitlab.com/phellams/phellams-automator/-/merge_requests/new)\r\n\r\n\u003c!-- LICENSE --\u003e\r\n\r\n## License\r\n\r\nDistributed under the MIT License. See `LICENSE.txt` for more information. \r\n\r\n## Changelog\r\n\r\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\r\n\r\n[arc-version]: https://img.shields.io/badge/Debian-12.13_slim-cyan?logo=ubuntu\u0026color=%232D2D34\u0026labelcolor=red\u0026style=for-the-badge\r\n[arc-url]: https://hub.docker.com/r/sgkens/phellams-automator\r\n[docker-version]: https://img.shields.io/docker/v/sgkens/phellams-automator?style=for-the-badge\u0026logo=docker\u0026logoColor=%233478BD\u0026logoSize=auto\u0026labelColor=%232D2D34\u0026color=%23446878\r\n[docker-url]: https://hub.docker.com/r/sgkens/phellams-automator/tags\r\n[docker-size]: https://img.shields.io/docker/image-size/sgkens/phellams-automator?style=for-the-badge\u0026logo=docker\u0026logoColor=%233478BD\u0026logoSize=auto\u0026labelColor=%232D2D34\u0026color=%23446878\r\n[docker-pulls]: https://img.shields.io/docker/pulls/sgkens/phellams-automator?style=for-the-badge\u0026logo=docker\u0026logoColor=%233478BD\u0026logoSize=auto\u0026labelColor=%232D2D34\u0026color=%23446878\r\n[build-status]: https://img.shields.io/gitlab/pipeline-status/phellams%2Fphellams-automator?style=for-the-badge\u0026logo=Gitlab\u0026logoColor=%233478BD\u0026labelColor=%232D2D34\r\n[build-url]: https://gitlab.com/phellams/phellams-automator/-/pipelines\r\n[gitlab-badge]: https://img.shields.io/badge/gitlab-4B0082?style=for-the-badge\u0026logo=gitlab\u0026logoColor=orange\r\n[github-badge]: https://img.shields.io/badge/github-mirror-383838?style=for-the-badge\u0026logo=github\u0026logoColor=white\r\n[license-badge]: https://img.shields.io/badge/License-MIT-Blue?style=for-the-badge\u0026labelColor=%232D2D34\u0026color=%2317202a\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphellams%2Fphellams-automator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphellams%2Fphellams-automator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphellams%2Fphellams-automator/lists"}