Skip to content

Merge branch 'main' of https://github.com/PSModule/Process-PSModule i… #6

Merge branch 'main' of https://github.com/PSModule/Process-PSModule i…

Merge branch 'main' of https://github.com/PSModule/Process-PSModule i… #6

Workflow file for this run

name: Process-PSModule

Check failure on line 1 in .github/workflows/workflow.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/workflow.yml

Invalid workflow file

(Line: 167, Col: 5): Unexpected value 'env', (Line: 188, Col: 5): Unexpected value 'uses', (Line: 189, Col: 5): Unexpected value 'with', (Line: 179, Col: 5): Required property is missing: runs-on, (Line: 214, Col: 5): Unexpected value 'uses', (Line: 215, Col: 5): Unexpected value 'with', (Line: 205, Col: 5): Required property is missing: runs-on, (Line: 241, Col: 5): Unexpected value 'uses', (Line: 242, Col: 5): Unexpected value 'secrets', (Line: 243, Col: 5): Unexpected value 'with'
on:
workflow_call:
secrets:
APIKey:
description: The API key for the PowerShell Gallery.
required: true
TEST_APP_ENT_CLIENT_ID:
description: The client ID of an Enterprise GitHub App for running tests.
required: false
TEST_APP_ENT_PRIVATE_KEY:
description: The private key of an Enterprise GitHub App for running tests.
required: false
TEST_APP_ORG_CLIENT_ID:
description: The client ID of an Organization GitHub App for running tests.
required: false
TEST_APP_ORG_PRIVATE_KEY:
description: The private key of an Organization GitHub App for running tests.
required: false
TEST_USER_ORG_FG_PAT:
description: The fine-grained personal access token with org access for running tests.
required: false
TEST_USER_USER_FG_PAT:
description: The fine-grained personal access token with user account access for running tests.
required: false
TEST_USER_PAT:
description: The classic personal access token for running tests.
required: false
inputs:
Name:
type: string
description: The name of the module to process. Scripts default to the repository name if nothing is specified.
required: false
SettingsPath:
type: string
description: The path to the settings file. Settings in the settings file take precedence over the action inputs.
required: false
default: .github/PSModule.yml
Debug:
type: boolean
description: Enable debug output.
required: false
default: false
Verbose:
type: boolean
description: Enable verbose output.
required: false
default: false
Version:
type: string
description: Specifies the version of the GitHub module to be installed. The value must be an exact version.
required: false
default: ''
Prerelease:
type: boolean
description: Whether to use a prerelease version of the 'GitHub' module.
required: false
default: false
WorkingDirectory:
type: string
description: The path to the root of the repo.
required: false
default: '.'
permissions:
contents: write # to checkout the repo and create releases on the repo
pull-requests: write # to write comments to PRs
statuses: write # to update the status of the workflow from linter
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
defaults:
run:
shell: pwsh
jobs:
# Runs on:
# - ✅ Open/Updated PR - Always runs to load configuration
# - ✅ Merged PR - Always runs to load configuration
# - ✅ Abandoned PR - Always runs to load configuration
# - ✅ Manual run - Always runs to load configuration
Get-Settings:
uses: ./.github/workflows/Get-Settings.yml
with:
Name: ${{ inputs.Name }}
SettingsPath: ${{ inputs.SettingsPath }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Lints code changes in active PRs
# - ❌ Merged PR - No need to lint after merge + its a merge commit that causes issues with super-linter
# - ❌ Abandoned PR - No need to lint abandoned changes
# - ❌ Manual run - Only runs for PR events
Lint-Repository:
name: Lint code base
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' && github.event.pull_request.merged != true && github.event.action != 'closed' && fromJson(needs.Get-Settings.outputs.Settings).Linter.Skip != true
needs:
- Get-Settings
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
steps:
- name: Checkout repo
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
fetch-depth: 0
- name: Load dynamic envs
run: |
Write-Host "Loading settings for super-linter:"
$settings = $env:SETTINGS | ConvertFrom-Json -AsHashtable
$linter = $settings.Linter
$env = $linter.env
foreach ($key in $env.Keys) {
$value = $env[$key]
if ($value -is [bool]) {
$value = $value.ToString().ToLower()
}
Write-Host "$key = $value"
# Persist for following steps in this job
"$key=$value" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
}
- name: Lint code base
id: super-linter
uses: super-linter/super-linter@502f4fe48a81a392756e173e39a861f8c8efe056 # v8.3.0
env:
GITHUB_TOKEN: ${{ github.token }}
DEFAULT_WORKSPACE: ${{ inputs.WorkingDirectory }}
FILTER_REGEX_INCLUDE: ${{ inputs.WorkingDirectory }}
ENABLE_GITHUB_ACTIONS_STEP_SUMMARY: false
SAVE_SUPER_LINTER_SUMMARY: true
- name: Post super-linter summary
if: failure() || fromJson(needs.Get-Settings.outputs.Settings).Linter.ShowSummaryOnSuccess == true
shell: pwsh
run: |
$summaryPath = Join-Path $env:GITHUB_WORKSPACE 'super-linter-output' 'super-linter-summary.md'
Get-Content $summaryPath | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8
$failed = '${{ steps.super-linter.outcome }}' -eq 'failure'
if ($failed) {
Write-Host "::error::Super-linter found issues. Please review the summary above."
exit 1
}
# Runs on:
# - ✅ Open/Updated PR - Builds module for testing
# - ✅ Merged PR - Builds module for publishing
# - ❌ Abandoned PR - Skips building abandoned changes
# - ✅ Manual run - Builds module when manually triggered
Build-Module:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && fromJson(needs.Get-Settings.outputs.Settings).Build.Module.Skip != true }}
uses: ./.github/workflows/Build-Module.yml
needs:
- Get-Settings
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
with:
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Tests source code changes
# - ✅ Merged PR - Tests source code before publishing
# - ❌ Abandoned PR - Skips testing abandoned changes
# - ✅ Manual run - Tests source code when manually triggered
Test-SourceCode:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Get-Settings.outputs.SourceCodeTestSuites != '[]' }}
needs:
- Get-Settings
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.Get-Settings.outputs.SourceCodeTestSuites) }}
uses: ./.github/workflows/Test-SourceCode.yml
with:
RunsOn: ${{ matrix.RunsOn }}
OS: ${{ matrix.OSName }}
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Lints source code changes
# - ✅ Merged PR - Lints source code before publishing
# - ❌ Abandoned PR - Skips linting abandoned changes
# - ✅ Manual run - Lints source code when manually triggered
Lint-SourceCode:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Get-Settings.outputs.SourceCodeTestSuites != '[]' }}
needs:
- Get-Settings
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.Get-Settings.outputs.SourceCodeTestSuites) }}
uses: ./.github/workflows/Lint-SourceCode.yml
with:
RunsOn: ${{ matrix.RunsOn }}
OS: ${{ matrix.OSName }}
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Tests built module
# - ✅ Merged PR - Tests built module before publishing
# - ❌ Abandoned PR - Skips testing abandoned changes
# - ✅ Manual run - Tests built module when manually triggered
Test-Module:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Build-Module.result == 'success' && !cancelled() && needs.Get-Settings.outputs.PSModuleTestSuites != '[]' }}
needs:
- Build-Module
- Get-Settings
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.Get-Settings.outputs.PSModuleTestSuites) }}
uses: ./.github/workflows/Test-Module.yml
secrets: inherit
with:
RunsOn: ${{ matrix.RunsOn }}
OS: ${{ matrix.OSName }}
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Runs setup scripts before local module tests
# - ✅ Merged PR - Runs setup scripts before local module tests
# - ❌ Abandoned PR - Skips setup for abandoned changes
# - ✅ Manual run - Runs setup scripts when manually triggered
BeforeAll-ModuleLocal:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Build-Module.result == 'success' && !cancelled() && needs.Get-Settings.outputs.ModuleTestSuites != '[]' }}
name: BeforeAll-ModuleLocal
runs-on: ubuntu-latest
needs:
- Build-Module
- Get-Settings
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
steps:
- name: Checkout Code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
fetch-depth: 0
- name: Run BeforeAll Setup Scripts
uses: PSModule/GitHub-Script@00547bff5a143fbfc23a912a783fbfe9c470815c # v1.7.4
with:
Name: BeforeAll-ModuleLocal
ShowInfo: false
ShowOutput: true
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
Script: |
LogGroup "Running BeforeAll Setup Scripts" {
$beforeAllScript = 'tests/BeforeAll.ps1'
if (-not (Test-Path $beforeAllScript)) {
Write-Host "No BeforeAll.ps1 script found at [$beforeAllScript] - exiting successfully"
exit 0
}
Write-Host "Running BeforeAll setup script: $beforeAllScript"
try {
& $beforeAllScript
Write-Host "BeforeAll script completed successfully: $beforeAllScript"
} catch {
Write-Error "BeforeAll script failed: $beforeAllScript - $_"
throw
}
}
# Runs on:
# - ✅ Open/Updated PR - Tests module in local environment
# - ✅ Merged PR - Tests module in local environment before publishing
# - ❌ Abandoned PR - Skips testing abandoned changes
# - ✅ Manual run - Tests module in local environment when manually triggered
Test-ModuleLocal:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Build-Module.result == 'success' && !cancelled() && needs.Get-Settings.outputs.ModuleTestSuites != '[]' }}
needs:
- Build-Module
- Get-Settings
- BeforeAll-ModuleLocal
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.Get-Settings.outputs.ModuleTestSuites) }}
uses: ./.github/workflows/Test-ModuleLocal.yml
secrets: inherit
with:
RunsOn: ${{ matrix.RunsOn }}
OSName: ${{ matrix.OSName }}
TestPath: ${{ matrix.TestPath }}
TestName: ${{ matrix.TestName }}
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Runs teardown scripts after local module tests
# - ✅ Merged PR - Runs teardown scripts after local module tests
# - ✅ Abandoned PR - Runs teardown if tests were started (cleanup)
# - ✅ Manual run - Runs teardown scripts after local module tests
AfterAll-ModuleLocal:
if: ${{ needs.Test-ModuleLocal.result != 'skipped' && always() }}
name: AfterAll-ModuleLocal
runs-on: ubuntu-latest
needs:
- Get-Settings
- Test-ModuleLocal
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
steps:
- name: Checkout Code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
fetch-depth: 0
- name: Run AfterAll Teardown Scripts
if: always()
uses: PSModule/GitHub-Script@00547bff5a143fbfc23a912a783fbfe9c470815c # v1.7.4
with:
Name: AfterAll-ModuleLocal
ShowInfo: false
ShowOutput: true
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
Script: |
LogGroup "Running AfterAll Teardown Scripts" {
$afterAllScript = 'tests/AfterAll.ps1'
if (-not (Test-Path $afterAllScript)) {
Write-Host "No AfterAll.ps1 script found at [$afterAllScript] - exiting successfully"
exit 0
}
Write-Host "Running AfterAll teardown script: $afterAllScript"
try {
& $afterAllScript
Write-Host "AfterAll script completed successfully: $afterAllScript"
} catch {
Write-Warning "AfterAll script failed: $afterAllScript - $_"
# Don't throw for teardown scripts to ensure other cleanup scripts can run
}
}
# Runs on:
# - ✅ Open/Updated PR - Collects and reports test results
# - ✅ Merged PR - Collects and reports test results before publishing
# - ❌ Abandoned PR - Skips collecting results for abandoned changes
# - ✅ Manual run - Collects and reports test results when manually triggered
Get-TestResults:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Get-Settings.result == 'success' && !fromJson(needs.Get-Settings.outputs.Settings).Test.TestResults.Skip && (needs.Get-Settings.outputs.SourceCodeTestSuites != '[]' || needs.Get-Settings.outputs.PSModuleTestSuites != '[]' || needs.Get-Settings.outputs.ModuleTestSuites != '[]') && (always() && !cancelled()) }}
needs:
- Get-Settings
- Test-SourceCode
- Lint-SourceCode
- Test-Module
- Test-ModuleLocal
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
uses: ./.github/workflows/Get-TestResults.yml
secrets: inherit
with:
ModuleTestSuites: ${{ needs.Get-Settings.outputs.ModuleTestSuites }}
SourceCodeTestSuites: ${{ needs.Get-Settings.outputs.SourceCodeTestSuites }}
PSModuleTestSuites: ${{ needs.Get-Settings.outputs.PSModuleTestSuites }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
# Runs on:
# - ✅ Open/Updated PR - Calculates and reports code coverage
# - ✅ Merged PR - Calculates and reports code coverage before publishing
# - ❌ Abandoned PR - Skips coverage for abandoned changes
# - ✅ Manual run - Calculates and reports code coverage when manually triggered
Get-CodeCoverage:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Get-Settings.result == 'success' && !fromJson(needs.Get-Settings.outputs.Settings).Test.CodeCoverage.Skip && (needs.Get-Settings.outputs.PSModuleTestSuites != '[]' || needs.Get-Settings.outputs.ModuleTestSuites != '[]') && (always() && !cancelled()) }}
needs:
- Get-Settings
- Test-Module
- Test-ModuleLocal
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
uses: ./.github/workflows/Get-CodeCoverage.yml
secrets: inherit
with:
CodeCoveragePercentTarget: ${{ fromJson(needs.Get-Settings.outputs.Settings).Test.CodeCoverage.PercentTarget }}
StepSummary_Mode: ${{ fromJson(needs.Get-Settings.outputs.Settings).Test.CodeCoverage.StepSummaryMode }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
# Runs on:
# - ✅ Open/Updated PR - Publishes prerelease when all tests/coverage/build succeed
# - ✅ Merged PR - Publishes release when all tests/coverage/build succeed
# - ✅ Abandoned PR - Publishes cleanup/retraction version
# - ✅ Manual run - Publishes when all tests/coverage/build succeed
Publish-Module:
if: |
needs.Get-Settings.result == 'success' && !cancelled() && github.event_name == 'pull_request' && (
(github.event.action == 'closed' && github.event.pull_request.merged != true) ||
(needs.Get-TestResults.result == 'success' && needs.Get-CodeCoverage.result == 'success' && needs.Build-Site.result == 'success')
)
needs:
- Get-Settings
- Get-TestResults
- Get-CodeCoverage
- Build-Site
runs-on: ubuntu-latest
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
steps:
- name: Checkout Code
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
with:
persist-credentials: false
fetch-depth: 0
- name: Download module artifact
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: module
path: ${{ inputs.WorkingDirectory }}/outputs/module
- name: Update Microsoft.PowerShell.PSResourceGet
shell: pwsh
run: |
Install-PSResource -Name Microsoft.PowerShell.PSResourceGet -Repository PSGallery -TrustRepository
- name: Publish module
uses: PSModule/Publish-PSModule@6c25d139fe51b890f75c057897bd58ac344b192a # v2.0.8
env:
GH_TOKEN: ${{ github.token }}
with:
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
ModulePath: outputs/module
APIKey: ${{ secrets.APIKEY }}
WhatIf: ${{ github.repository == 'PSModule/Process-PSModule' }}
AutoCleanup: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.AutoCleanup }}
AutoPatching: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.AutoPatching }}
DatePrereleaseFormat: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.DatePrereleaseFormat }}
IgnoreLabels: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.IgnoreLabels }}
IncrementalPrerelease: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.IncrementalPrerelease }}
MajorLabels: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.MajorLabels }}
MinorLabels: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.MinorLabels }}
PatchLabels: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.PatchLabels }}
VersionPrefix: ${{ fromJson(needs.Get-Settings.outputs.Settings).Publish.Module.VersionPrefix }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ✅ Open/Updated PR - Builds documentation for review
# - ✅ Merged PR - Builds documentation for publishing
# - ❌ Abandoned PR - Skips building docs for abandoned changes
# - ✅ Manual run - Builds documentation when manually triggered
Build-Docs:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && fromJson(needs.Get-Settings.outputs.Settings).Build.Docs.Skip != true }}
needs:
- Get-Settings
- Build-Module
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
uses: ./.github/workflows/Build-Docs.yml
with:
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
ShowSummaryOnSuccess: ${{ fromJson(needs.Get-Settings.outputs.Settings).Build.Docs.ShowSummaryOnSuccess }}
# Runs on:
# - ✅ Open/Updated PR - Builds site for preview
# - ✅ Merged PR - Builds site for publishing
# - ❌ Abandoned PR - Skips building site for abandoned changes
# - ✅ Manual run - Builds site when manually triggered
Build-Site:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && fromJson(needs.Get-Settings.outputs.Settings).Build.Site.Skip != true }}
needs:
- Get-Settings
- Build-Docs
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
uses: ./.github/workflows/Build-Site.yml
with:
Name: ${{ fromJson(needs.Get-Settings.outputs.Settings).Name }}
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
# Runs on:
# - ❌ Open/Updated PR - Site not published for PRs in progress
# - ✅ Merged PR - Deploys site to GitHub Pages after successful merge
# - ❌ Abandoned PR - Site not published for abandoned changes
# - ❌ Manual run - Only publishes on merged PRs, not manual runs
Publish-Site:
if: ${{ !(github.event.action == 'closed' && github.event.pull_request.merged != true) && needs.Get-TestResults.result == 'success' && needs.Get-CodeCoverage.result == 'success' && needs.Build-Site.result == 'success' && !cancelled() && github.event_name == 'pull_request' && github.event.pull_request.merged == true }}
needs:
- Get-Settings
- Get-TestResults
- Get-CodeCoverage
- Build-Site
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
env:
SETTINGS: ${{ needs.Get-Settings.outputs.Settings }}
steps:
- uses: actions/configure-pages@v5
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4