|
All checks were successful
Build and Publish Docker Image / build (push) Successful in 1m39s
The build cache references were using github.repository directly, which contains uppercase letters (Invoke-Systems). Docker registry requires all lowercase. Added a step to convert the repository name to lowercase and use it for all image and cache references. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .github/workflows | ||
| archetypes | ||
| config/_default | ||
| content | ||
| data/json_resume | ||
| layouts | ||
| node_modules | ||
| public | ||
| resources/_gen/assets | ||
| scripts | ||
| static | ||
| themes | ||
| docker-compose.yml | ||
| Dockerfile | ||
| go.mod | ||
| hugo.toml | ||
| hugo_stats.json | ||
| nginx.conf | ||
| package-lock.json | ||
| package.hugo.json | ||
| package.json | ||
| README.md | ||
Invoke-Wizard Blog
A Hugo blog for the InvokeSystems PowerShell module suite. Documents automation tools for Windows system administration.
Module Suite
This blog documents the following PowerShell modules:
- InvokeSystems.Common - Shared helpers (event log initialization, admin context check)
- InvokeSystems.RestrictedTask - Creates and manages restricted scheduled tasks with hash-verified payloads
- InvokeSystems.UpdateRepair - Windows Update remediation with logging and optional event log integration
- InvokeSystems.Generator - Secure random string, password, and GUID generation
All modules use the InvokeSystems.* prefix following Microsoft Graph naming conventions.
Function Naming Convention
Functions use the Inv prefix (Microsoft.Graph-style convention) so they're easy to spot in a session and don't collide with anything you already have:
| Module | Functions |
|---|---|
| InvokeSystems.Common | Initialize-InvEventLogSource, Test-InvAdministratorContext |
| InvokeSystems.RestrictedTask | Get-InvTask, New-InvTask, Remove-InvTask, Update-InvTask, Invoke-InvTask, Get-InvTaskPrincipal, Set-InvTaskPrincipal |
| InvokeSystems.UpdateRepair | Invoke-InvUpdateRepair |
| InvokeSystems.Generator | New-InvPassword, New-InvRandomString, New-InvGuid, New-InvRandomNumber |
Building and Running the Hugo Site
The Hugo site is fully containerized with Docker. The Dockerfile handles everything:
# Build the image
docker build -t invoke-wizard-blog .
# Run the container
docker run -d -p 8080:80 --name invoke-wizard-blog invoke-wizard-blog
# Or use docker-compose
docker-compose up -d
The Dockerfile:
- Initializes git submodules (Terminal theme)
- Builds the minified Hugo site
- Serves with nginx
Site will be available at http://localhost:8080.
For Nginx Proxy Manager
Point your proxy host to the container:
- Backend:
http://invoke-wizard-blog:80(if using docker network) - Or:
http://localhost:8080(if exposing port directly)
CI/CD with GitHub Actions
Docker Build
Manually build and push Docker image to GitHub Container Registry:
- Run from Actions tab → "Build and Push Docker Image" → Run workflow
- See
.github/workflows/docker-build.yml
Blog Post Ingestion
The blog automatically ingests posts from other repositories:
- Source repos push changes → Triggers ingestion workflow
- Posts land in staging (
masterbranch) - Promote to production manually or on weekly schedule
See .github/workflows/README.md for details.
PowerShell Gallery Publishing
Manually publish modules to PSGallery:
- Run from Actions tab → "Publish to PowerShell Gallery" → Run workflow
- Publishes all modules:
InvokeSystems.Common,InvokeSystems.RestrictedTask,InvokeSystems.UpdateRepair,InvokeSystems.Generator - Skips if version already exists
- Requires
PSGALLERY_API_KEYsecret - See
.github/workflows/publish-psgallery.yml
Quick Start:
- Get API key from https://www.powershellgallery.com/account
- Add as repository secret:
PSGALLERY_API_KEY - Update module manifests (Author, LicenseUri, ProjectUri)
- Run workflow from Actions tab to publish