Skip to content

Commit 00562e4

Browse files
Refactor documentation across multiple sections for clarity and consistency, including GitHub Actions, PowerShell Modules, Function Apps, DSC, and Scripts.
1 parent 9480d77 commit 00562e4

6 files changed

Lines changed: 59 additions & 110 deletions

File tree

docs/GitHub-Actions/index.md

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,18 @@
11
# GitHub Actions
22

3-
PSModule provides a set of reusable GitHub Actions built with the [PSModule framework](https://github.com/PSModule/PSModule) and published to the [GitHub Marketplace](https://github.com/marketplace?&verification=&query=publisher%3Apsmodule).
3+
## What it is
44

5-
## Getting started
5+
GitHub Actions is a CI/CD and workflow automation platform built into GitHub. Actions are reusable steps that compose into pipelines triggered by repository events — pushes, pull requests, issue comments, schedules, and more. PSModule's actions are composite actions written in PowerShell and published to the [GitHub Marketplace](https://github.com/marketplace?&verification=&query=publisher%3Apsmodule). See the [official GitHub Actions documentation](https://docs.github.com/en/actions).
66

7-
<details>
8-
<summary>About</summary>
7+
## Why we care
98

10-
A composite action is a reusable action that is made up of one or more steps. Composite actions can be used to encapsulate common tasks or workflows that can be reused across multiple repositories. They are a great way to share code and best practices with the community, and they can help to streamline the development process by providing a consistent way to perform common tasks.
11-
We have created a framework that automates the process of creating, testing, and publishing PowerShell based GitHub Actions to the GitHub Marketplace. This framework is designed to make it easy for developers to create and share their GitHub Actions with the community.
9+
Reusable actions are the foundation of a scalable, consistent DevOps practice on GitHub. Encapsulating common tasks — building, testing, releasing, and deploying PowerShell artifacts — into shared, versioned actions eliminates duplication and enforces best practices automatically across every repository in the organization. A single improvement to a shared action benefits all consumers immediately.
1210

13-
</details>
11+
## How we do it
1412

15-
<details>
16-
<summary>How we do it in PSModule</summary>
13+
PSModule actions are built from the [Template-Action](https://github.com/PSModule/Template-Action) repository template, which sets up automated workflows for testing and publishing to the GitHub Marketplace. Each action is a composite action backed by PowerShell logic, following consistent input/output conventions. PR labels control versioning, and the `RepoType: Action` custom property integrates each repository with organization-wide tooling.
1714

18-
Projects based on the `Template-Action` repository template will automatically have the necessary workflows and configurations set up to automate the process of creating, testing, and deploying PowerShell based GitHub Actions. This includes workflows for building, testing, and deploying the action, as well as a configuration file for setting up the action's metadata and dependencies.
19-
Using custom properties we set `RepoType` to `Action`.
20-
We use branch policies to control the flow of changes to the `main` branch, and we use labels to control the versioning of the action when a pull request is merged.
21-
22-
</details>
23-
24-
<details>
25-
<summary>Create a new project</summary>
26-
27-
1. Create a repository based on the template [Template-Action](https://github.com/PSModule/Template-Action).
28-
29-
</details>
30-
31-
## GitHub Actions on the GitHub Marketplace
15+
## What we have delivered
3216

3317
<!-- ACTION_LIST_START -->
3418

docs/PowerShell/DSC/index.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
1-
# DSC
1+
# PowerShell Desired State Configuration
22

3-
PowerShell Desired State Configuration (DSC) resources for declarative system configuration.
3+
## What it is
44

5-
> This section is coming soon. Standards and conventions for DSC resources will be documented here.
5+
PowerShell Desired State Configuration (DSC) is a declarative management platform built into PowerShell that defines what a system should look like and enforces that state continuously. Administrators describe the desired configuration of a node using DSC resources; the DSC engine ensures the system converges to and stays in that state. See the [official DSC documentation](https://learn.microsoft.com/en-us/powershell/dsc/overview).
6+
7+
## Why we care
8+
9+
DSC applies the same repeatability and version-control discipline to infrastructure that code gets from source control. In a DevOps context, declarative configuration means system state is auditable, drift is detectable, and environment provisioning becomes reproducible — closing the gap between application deployment and infrastructure management without resorting to imperative scripts.
10+
11+
## How we do it
12+
13+
> Standards and conventions for DSC resources within the PSModule framework are coming soon.
14+
15+
## What we have delivered
16+
17+
> No DSC resource repositories have been published yet.

docs/PowerShell/FunctionApps/index.md

Lines changed: 8 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,18 @@
1-
# Function Apps
1+
# PowerShell-based Function Apps
22

3-
PSModule Function Apps are PowerShell based Azure Functions that run serverless, event-driven code. They are built with the [PSModule framework](https://github.com/PSModule/PSModule) and follow a consistent layout, naming, and versioning convention.
3+
## What it is
44

5-
## Getting started
5+
Azure Function Apps are a serverless compute service that runs event-driven code without requiring dedicated infrastructure. PSModule function apps are written in PowerShell and deployed to Azure, responding to events such as HTTP requests, timers, or Azure service messages. See the [Azure Functions documentation](https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview).
66

7-
<details>
8-
<summary>About</summary>
7+
## Why we care
98

10-
A PowerShell based Azure Function App is a serverless compute service that enables you to run event-driven code without having to manage the infrastructure. Azure Functions are ideal for processing data, integrating systems, and building simple APIs or microservices. They can be triggered by a variety of events, such as HTTP requests, timers, or messages from Azure services like Azure Storage, Event Grid, or Service Bus.
11-
We have created a framework that automates the process of creating, testing, and deploying PowerShell based Azure Function Apps to Azure. This framework is designed to make it easy for developers to create and deploy their Azure Function Apps without having to worry about the underlying infrastructure.
9+
Serverless PowerShell functions extend automation into cloud-native, event-driven scenarios that traditional scripts and pipelines cannot cover alone. They enable lightweight, always-on integrations — such as GitHub App webhooks, scheduled maintenance tasks, and API bridges — to run reliably without managing servers or paying for idle compute.
1210

13-
</details>
11+
## How we do it
1412

15-
<details>
16-
<summary>How we do it in PSModule</summary>
13+
PSModule function apps are built from the [Template-FunctionApp](https://github.com/PSModule/Template-FunctionApp) repository template, which wires up the [Process-FunctionApp](https://github.com/PSModule/Process-FunctionApp) reusable workflow for automated build, test, and Azure deployment. The `AZURE_CREDENTIALS` secret provides the service principal for deployment, and PR labels control versioning the same way they do for modules. The `RepoType: FunctionApp` custom property integrates each repository with organization-wide tooling.
1714

18-
Projects based on the `Template-FunctionApp` repository template will automatically have the necessary workflows and configurations set up to automate the process of creating, testing, and deploying PowerShell based Azure Function Apps to Azure. This includes workflows for building, testing, and deploying the function app, as well as a configuration file for setting up the function app's metadata and dependencies.
19-
Using custom properties we set `RepoType` to `FunctionApp`.
20-
We use branch policies to control the flow of changes to the `main` branch, and we use labels to control the versioning of the module when a pull request is merged.
21-
22-
</details>
23-
24-
<details>
25-
<summary>Create a new project</summary>
26-
27-
1. Create a repository based on the template [Template-FunctionApp](https://github.com/PSModule/Template-FunctionApp). The module will by default use the name of the repository.
28-
1. Create a repository or organization secret called `AZURE_CREDENTIALS`, holding the credentials for the Azure service principal.
29-
1. Configure the settings you want for the repository including a branch policy for the `main` branch.
30-
1. On a topic branch:
31-
1. develop the code you want to add to your function app.
32-
1. delete the parts you do not need.
33-
1. update the tests in the `tests` folder.
34-
1. Create a PR. Add a label to the PR depending on what you want to do.
35-
- `Major` - Will create a major release (vX.0.0) when merged. If specified with "Prerelease", a major version will be created using the prerelease tag (vX.0.0-\<branchName\>).
36-
- `Minor` - Will create a minor release (vX.Y.0) when merged. If specified with "Prerelease", a minor version will be created using the prerelease tag (vX.Y.0-\<branchName\>).
37-
- `Patch` - Will create a minor release (vX.Y.Z) when merged. If specified with "Prerelease", a minor version will be created using the prerelease tag (vX.Y.Z-\<branchName\>). A patch version bump is the default if nothing is specified for the PR.
38-
- `Prerelease` - CI will create a prerelease of the module using the branch name as a prerelease tag in the version. This will create both a repository release and a prerelease version of the module on the PowerShell Gallery.
39-
1. Once the PR is created, the [Process-FunctionApp](https://github.com/PSModule/Process-FunctionApp) workflow will trigger.
40-
1. When the PR is merged, a release will be created and the function app will be deployed to Azure with a stable version based on the version bump indicator the PR was was labeled with. Prerelease tags will be cleaned up on the repository.
41-
42-
</details>
43-
44-
## Function Apps we maintain
15+
## What we have delivered
4516

4617
<!-- FUNCTIONAPP_LIST_START -->
4718

docs/PowerShell/Modules/index.md

Lines changed: 11 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,22 @@
1-
# Modules
1+
# PowerShell Modules
22

3-
PSModule modules are reusable PowerShell libraries published to the PowerShell Gallery. They are built with the [PSModule framework](https://github.com/PSModule/PSModule) and follow a consistent layout, naming, and versioning convention.
3+
## What it is
44

5-
## What's covered
5+
A PowerShell module is a distributable package of functions, cmdlets, and scripts built to be shared and reused across environments. Modules are published to and installed from the [PowerShell Gallery](https://www.powershellgallery.com/), the official repository for PowerShell packages. See the [official PowerShell modules documentation](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_modules).
66

7-
- **[Standards](Standards.md)** — Repository layout, naming, style, parameter design, comment-based help, and SOLID applied to PowerShell modules.
8-
- **[Test Specification](Test-Specification.md)** — How we write Pester tests: structure, hierarchy, and naming conventions.
9-
- **[Versioning](Versioning.md)** — How changes to the public interface determine the SemVer version bump.
10-
11-
## Getting started
12-
13-
<details>
14-
<summary>About</summary>
15-
16-
A PowerShell module is a set of functions, scripts, and cmdlets that are bundled together in a single package. Modules are used to organize and distribute code in a way that is easy to use and share. They can be used to extend the functionality of PowerShell, automate tasks, and create reusable code that can be shared with others.
17-
We have created a framework that automates the process of creating, testing, and publishing PowerShell modules to the PowerShell Gallery. This framework is designed to make it easy for developers to create and share their PowerShell modules with the community.
7+
## Why we care
188

19-
</details>
9+
Modules are the primary unit of reusable automation in the PowerShell ecosystem. Packaging logic into versioned, tested, and published modules keeps pipelines maintainable and composable — any team or workflow can consume shared functions without copying code. Strong module conventions make the public API surface explicit, so breaking changes are intentional and versioned correctly through SemVer.
2010

21-
<details>
22-
<summary>How we do it in PSModule</summary>
11+
## How we do it
2312

24-
Projects based on the `Template-PSModule` repository template will automatically have the necessary workflows and configurations set up to automate the process of creating, testing, and publishing PowerShell modules to the PowerShell Gallery. This includes workflows for building, testing, and releasing the module, as well as a configuration file for setting up the module's metadata and dependencies.
25-
Using custom properties we set `RepoType` to `Module`.
26-
We use branch policies to control the flow of changes to the `main` branch, and we use labels to control the versioning of the module when a pull request is merged.
13+
PSModule provides a standardized framework based on the [Template-PSModule](https://github.com/new?template_name=Template-PSModule&template_owner=PSModule) repository template. All modules follow a consistent directory layout, naming convention, and coding style. The [Process-PSModule](https://github.com/PSModule/Process-PSModule) reusable workflow automates building, testing, and publishing to the PowerShell Gallery. Version increments are driven by PR labels (`Major`, `Minor`, `Patch`, `Prerelease`), and the `RepoType: Module` custom property integrates each repository with organization-wide tooling.
2714

28-
</details>
29-
30-
<details>
31-
<summary>Create a new project</summary>
32-
33-
1. [Create a repository based on the template Template-PSModule](https://github.com/new?template_name=Template-PSModule&template_owner=PSModule). The module will by default use the name of the repository. See [Process-PSModule](https://github.com/PSModule/Process-PSModule) for more info on choosing another name than the repository name.
34-
1. Create a repository or organization secret called `APIKEY` holding the API key for the PowerShell Gallery.
35-
1. Configure the settings you want for the repository including a branch policy for the `main` branch.
36-
1. On a topic branch:
37-
1. develop the code you want to add to your module.
38-
1. delete the parts you do not need.
39-
1. update the tests in the `tests` folder.
40-
1. Create a PR. Add a label to the PR depending on what you want to do.
41-
- `Major` - Will create a major release (vX.0.0) when merged. If specified with "Prerelease", a major version will be created using the prerelease tag (vX.0.0-\<branchName\>).
42-
- `Minor` - Will create a minor release (vX.Y.0) when merged. If specified with "Prerelease", a minor version will be created using the prerelease tag (vX.Y.0-\<branchName\>).
43-
- `Patch` - Will create a minor release (vX.Y.Z) when merged. If specified with "Prerelease", a minor version will be created using the prerelease tag (vX.Y.Z-\<branchName\>). A patch version bump is the default if nothing is specified for the PR.
44-
- `Prerelease` - CI will create a prerelease of the module using the branch name as a prerelease tag in the version. This will create both a repository release and a prerelease version of the module on the PowerShell Gallery.
45-
1. Once the PR is created, the [Process-PSModule](https://github.com/PSModule/Process-PSModule) workflow will trigger.
46-
1. When the PR is merged, a release will be created and the module will be published to the PowerShell Gallery with a stable version based on the version bump indicator the PR was was labeled with. Prerelease tags will be cleaned up on the repository.
47-
48-
</details>
15+
- **[Standards](Standards.md)** — Repository layout, naming, style, parameter design, comment-based help, and SOLID applied to PowerShell modules.
16+
- **[Test Specification](Test-Specification.md)** — How we write Pester tests: structure, hierarchy, and naming conventions.
17+
- **[Versioning](Versioning.md)** — How changes to the public interface determine the SemVer version bump.
4918

50-
## Modules on the PowerShell Gallery
19+
## What we have delivered
5120

5221
<!-- MODULE_LIST_START -->
5322

docs/PowerShell/Scripts/index.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1-
# Scripts
1+
# PowerShell Scripts
22

3-
Standalone PowerShell scripts used for automation, tooling, and developer workflows across the PSModule ecosystem.
3+
## What it is
44

5-
## What's covered
5+
A PowerShell script is a standalone `.ps1` file that executes a sequence of commands to accomplish a task. Unlike modules, scripts are not packaged for distribution — they run directly in a shell, pipeline, or CI/CD runner. See the [official PowerShell scripting documentation](https://learn.microsoft.com/en-us/powershell/scripting/overview).
6+
7+
## Why we care
8+
9+
Scripts are the fastest path from intent to automation. In GitHub Actions and DevOps pipelines, scripts orchestrate deployment steps, invoke APIs, transform data, and bridge gaps between purpose-built tools. Consistent, well-structured scripts are easier to review, test, and debug — reducing the risk of pipeline failures and onboarding friction for new contributors.
10+
11+
## How we do it
12+
13+
PSModule scripts follow a set of conventions covering naming, parameter design, error handling, and output format. These standards ensure scripts behave predictably in both pipeline and interactive contexts.
614

715
- **[Standards](Standards.md)** — How we write, name, and structure PowerShell scripts.
16+
17+
## What we have delivered
18+
19+
> No standalone script repositories are maintained yet. Scripts are typically co-located with the module or workflow that uses them.

docs/PowerShell/index.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# PowerShell
22

3-
PowerShell is the primary language of the PSModule ecosystem. This section covers how we write, test, version, and distribute PowerShell code across modules, scripts, and DSC resources.
3+
PowerShell is the primary language of the PSModule ecosystem. This section covers how we write, test, version, and distribute PowerShell code across all artifact types.
44

55
## What's covered
66

77
- **[Modules](Modules/index.md)** — Reusable libraries published to the PowerShell Gallery. Standards, test specification, and versioning.
88
- **[Scripts](Scripts/index.md)** — Standalone automation scripts. Standards for how we write and structure them.
9-
- **[DSC](DSC/index.md)** — Desired State Configuration resources. Coming soon.
9+
- **[Function Apps](FunctionApps/index.md)** — Serverless Azure Functions written in PowerShell.
10+
- **[Desired State Configuration](DSC/index.md)** — Declarative system configuration resources.

0 commit comments

Comments
 (0)