Skip to content

Try fixing publish by calling it all again. #148

Try fixing publish by calling it all again.

Try fixing publish by calling it all again. #148

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
permissions:
contents: write # to tag the repository
checks: write # to create the check runs results
jobs:
build:
runs-on: ubuntu-latest
env:
FORCE_COLOR: 1
steps:
- name: Install EarthBuild
uses: EarthBuild/actions-setup@v2.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
version: 'latest' # or pin to an specific version, e.g. "0.8.1"
- uses: actions/checkout@v6
with:
submodules: true
fetch-depth: 0
- name: earth +test
if: github.ref != 'refs/heads/main'
run: earth --strict +test
- name: earth +push
if: github.ref == 'refs/heads/main'
run: earth --push --secret NUGET_API_KEY --secret PSGALLERY_API_KEY --strict +all
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
PSGALLERY_API_KEY: ${{ secrets.PSGALLERY_API_KEY }}
- name: Upload Built Modules
uses: actions/upload-artifact@v7
with:
name: ModuleBuilder
path: output/ModuleBuilder
- uses: actions/upload-artifact@v7
with:
name: TestResults
path: output/results
# These ones are just for the test matrix
- name: Upload Tests
uses: actions/upload-artifact@v7
with:
name: PesterTests
path: ${{github.workspace}}/Tests
- name: Upload build.requires.psd1
uses: actions/upload-artifact@v7
with:
name: build.requires.psd1
path: ${{github.workspace}}/build.requires.psd1
test:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ windows-latest, ubuntu-latest, macos-latest ]
steps:
- name: Download build.requires.psd1
uses: actions/download-artifact@v8
with:
name: build.requires.psd1
- name: Download Build Output
uses: actions/download-artifact@v8
with:
name: ModuleBuilder
path: output/ModuleBuilder # /home/runner/work/ModuleBuilder/ModuleBuilder/output/ModuleBuilder
- name: Download Pester Tests
uses: actions/download-artifact@v8
with:
name: PesterTests
path: PesterTests
- name: Install Output Modules
shell: pwsh
run: | # PowerShell
# https://docs.github.com/en/actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell#powershell-module-locations
$ModuleDestination = if ($IsWindows) {
Join-Path ([Environment]::GetFolderPath('MyDocuments')) 'PowerShell/Modules'
} else {
Join-Path $HOME '.local/share/powershell/Modules'
}
Get-ChildItem -Directory output -OutVariable Modules
| Move-Item -Destination { Join-Path $ModuleDestination $_.Name } -Force
Write-Host "Installing $($Modules -join ', ') to $ModuleDestination"
Get-ChildItem -Directory $ModuleDestination
Write-Host "PSModulePath:"
$Env:PSModulePath -split ([IO.Path]::PathSeparator) | Out-Host
# Avoid installing ModuleBuilder with ModuleFast, so there's only one copy
@(Get-Content build.requires.psd1)
| Where { $_ -notmatch "ModuleBuilder"}
| Set-Content build.requires.psd1
- name: ⚡ Install Required Modules
uses: JustinGrote/ModuleFast-action@v0.0.1
- name: Invoke-Pester
shell: pwsh
run: | # PowerShell
# For the cross-platform matrix we don't need to do coverage or anything complicated
$Result = Invoke-Pester . -PassThru
@(
"## Pester Tests for ${{ matrix.os }}"
""
$Result.Duration.ToString()
"| Total | Passed | Failed |"
"|------:|-------:|-------:|"
"| $($Result.TotalCount) | $($Result.PassedCount) | $($Result.FailedCount) |"
""
"| Duration | Total | Passed | Failed | Skipped | Name |"
"|---------:|------:|-------:|-------:|--------:|:-----|"
@($Result.Containers).ForEach{
"| $($_.Duration) | $($_.TotalCount) | $($_.PassedCount) | $($_.FailedCount) | $($_.SkippedCount) | $($_.Name) |"
}
) | Out-File -FilePath $env:GITHUB_STEP_SUMMARY