diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f57e1e9..53188fe 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,5 +7,8 @@ version: 2 updates: - package-ecosystem: github-actions # See documentation for possible values directory: / # Location of package manifests + labels: + - dependencies + - github-actions schedule: interval: weekly diff --git a/.github/workflows/Action-Test.yml b/.github/workflows/Action-Test.yml index 51ba34c..664004f 100644 --- a/.github/workflows/Action-Test.yml +++ b/.github/workflows/Action-Test.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Action-Test uses: ./ diff --git a/.github/workflows/Auto-Release.yml b/.github/workflows/Auto-Release.yml index 50a5a41..976b40c 100644 --- a/.github/workflows/Auto-Release.yml +++ b/.github/workflows/Auto-Release.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Auto-Release uses: PSModule/Auto-Release@v1 diff --git a/.github/workflows/Linter.yml b/.github/workflows/Linter.yml index 94f34b0..1962629 100644 --- a/.github/workflows/Linter.yml +++ b/.github/workflows/Linter.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 diff --git a/README.md b/README.md index 17e1969..c48bccc 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,3 @@ # Publish-PSModule -Creates a GitHub release and publishes the PowerShell module to the PowerShell Gallery. - -This GitHub Action is a part of the [PSModule framework](https://github.com/PSModule). It is recommended to use the [Process-PSModule workflow](https://github.com/PSModule/Process-PSModule) to automate the whole process of managing the PowerShell module. - -## Specifications and practices - -Publish-PSModule follows: - -- [SemVer 2.0.0 specifications](https://semver.org) -- [GitHub Flow specifications](https://docs.github.com/en/get-started/using-github/github-flow) -- [Continiuous Delivery practices](https://en.wikipedia.org/wiki/Continuous_delivery) - -... and supports the following practices in the PSModule framework: - -- [PowerShell publishing guidelines](https://learn.microsoft.com/en-us/powershell/gallery/concepts/publishing-guidelines?view=powershellget-3.x) - -## How it works - -The workflow will trigger on pull requests to the repositorys default branch. -When the pull request is opened, the action will decide what to do based on labels on the pull request. - -It will get the latest release version by looking up the versions in GitHub releases, PowerShell Gallery and the module manifest. -The next version is then determined by the labels on the pull request. If a prerelease label is found, the action will create a -prerelease with the branch name (in normalized form) as the prerelease name. By defualt, the following labels are used: - -- For a major release, and increasing the first number in the version use: - - `major` - - `breaking` -- For a minor release, and increasing the second number in the version. - - `minor` - - `feature` -- For a patch release, and increases the third number in the version. - - `patch` - - `fix` - -The types of labels used for the types of prereleases can be configured using the `MajorLabels`, `MinorLabels` and `PatchLabels` -parameters/settings. See the [Usage](#usage) section for more information. - -When a pull request is merged into the default branch, the action will create a release based on the labels and clean up any previous -prereleases that was created. - -## Usage - -The action can be configured using the following settings: - -| Name | Description | Required | Default | -| --- | --- | --- | --- | -| `Name` | Name of the module to publish. Defaults to the repository name. | `false` | | -| `ModulePath` | Path to the folder where the module to publish is located. | `false` | `outputs/modules` | -| `APIKey` | PowerShell Gallery API Key. | `true` | | -| `AutoCleanup`| Control wether to automatically cleanup prereleases. If disabled, the action will not remove any prereleases. | `false` | `true` | -| `AutoPatching` | Control wether to automatically handle patches. If disabled, the action will only create a patch release if the pull request has a 'patch' label. | `false` | `true` | -| `DatePrereleaseFormat` | The format to use for the prerelease number using [.NET DateTime format strings](https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings). | `false` | `''` | -| `IncrementalPrerelease` | Control wether to automatically increment the prerelease number. If disabled, the action will ensure only one prerelease exists for a given branch. | `false` | `true` | -| `VersionPrefix` | The prefix to use for the version number. | `false` | `v` | -| `MajorLabels` | A comma separated list of labels that trigger a major release. | `false` | `major, breaking` | -| `MinorLabels` | A comma separated list of labels that trigger a minor release. | `false` | `minor, feature` | -| `PatchLabels` | A comma separated list of labels that trigger a patch release. | `false` | `patch, fix` | -| `IgnoreLabels` | A comma separated list of labels that do not trigger a release. | `false` | `NoRelease` | -| `WhatIf` | Control wether to simulate the action. If enabled, the action will not create any releases. Used for testing. | `false` | `false` | -| `WorkingDirectory` | The working directory where the script runs. | `'false'` | `'.'` | - -## Example - -```yaml -name: Publish-PSModule - -on: [pull_request] - -jobs: - Publish-PSModule: - name: Publish-PSModule - runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Initialize environment - uses: PSModule/Initialize-PSModule@main - - - name: Publish-PSModule - uses: PSModule/Publish-PSModule@main - env: - GITHUB_TOKEN: ${{ github.token }} - with: - APIKey: ${{ secrets.APIKEY }} -``` - -## Permissions - -The action requires the following permissions: - -If running the action in a restrictive mode, the following permissions needs to be granted to the action: - -```yaml -permissions: - contents: write # Required to create releases - pull-requests: write # Required to create comments on the PRs -``` +This GitHub Action is a part of the [PSModule framework](https://github.com/PSModule). diff --git a/action.yml b/action.yml index 540f3b2..654f6b3 100644 --- a/action.yml +++ b/action.yml @@ -1,9 +1,6 @@ -name: Publish-PSModule (by PSModule) +name: Publish-PSModule description: Publish a PowerShell module to the PowerShell Gallery. author: PSModule -branding: - icon: upload-cloud - color: gray-dark inputs: Name: diff --git a/scripts/main.ps1 b/scripts/main.ps1 index 97b0c50..a1d014d 100644 --- a/scripts/main.ps1 +++ b/scripts/main.ps1 @@ -1,4 +1,4 @@ -[CmdletBinding()] +[CmdletBinding()] param() $retryCount = 5