Skip to content

CI

CI #71

Workflow file for this run

name: CI
on:
push:
branches: [ "main" ]
tags:
- 'v*'
paths-ignore:
- 'CHANGELOG.md'
- 'README.md'
- '.github/workflows/main.yml'
pull_request:
branches: [ "main" ]
paths-ignore:
- 'CHANGELOG.md'
workflow_dispatch:
jobs:
prepare:
runs-on: windows-latest
outputs:
semVer: ${{ steps.version.outputs.semVer }}
fullSemVer: ${{ steps.version.outputs.fullSemVer }}
major: ${{ steps.version.outputs.major }}
minor: ${{ steps.version.outputs.minor }}
patch: ${{ steps.version.outputs.patch }}
steps:
# Checkout code
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
# Install GitVersion and calculate version
- name: Setup GitVersion
uses: gittools/actions/gitversion/setup@v3.2.1
with:
versionSpec: '5.12.0'
- name: Determine Version
id: version # step id used as a reference for output values
uses: gittools/actions/gitversion/execute@v3.2.1
with:
useConfigFile: true
configFilePath: 'GitVersion.yml'
- name: Display GitVersion outputs
run: |
echo "SemVer: ${{ steps.version.outputs.semVer }}"
echo "FullSemVer: ${{ steps.version.outputs.fullSemVer }}"
echo "Major: ${{ steps.version.outputs.major }}"
echo "Minor: ${{ steps.version.outputs.minor }}"
echo "Patch: ${{ steps.version.outputs.patch }}"
test_powershell_core:
runs-on: windows-latest
needs: prepare
steps:
# Checkout code
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
# Resolve Dependency and Build Module
- name: Resolve Dependency and Build Module
env:
ModuleVersion: ${{ needs.prepare.outputs.semVer }}
ModuleFullVersion: ${{ needs.prepare.outputs.fullSemVer }}
ModuleMajor: ${{ needs.prepare.outputs.major }}
ModuleMinor: ${{ needs.prepare.outputs.minor }}
ModulePatch: ${{ needs.prepare.outputs.patch }}
run: |
./build.ps1 -tasks noop -ResolveDependency -UseModuleFast
./build.ps1 -tasks build
shell: pwsh
# Run Tests and Publish Test Results
- name: Run Tests and Publish Test Results
env:
ModuleVersion: ${{ needs.prepare.outputs.semVer }}
ModuleFullVersion: ${{ needs.prepare.outputs.fullSemVer }}
ModuleMajor: ${{ needs.prepare.outputs.major }}
ModuleMinor: ${{ needs.prepare.outputs.minor }}
ModulePatch: ${{ needs.prepare.outputs.patch }}
run: ./build.ps1 -tasks test
shell: pwsh
# # Publish Test Results Artifact
# - name: Publish Test Results Artifact
# if: always()
# uses: actions/upload-artifact@v2
# with:
# name: CodeCoverageWinPS5
# path: ${{ secrets.buildFolderName }}/${{ secrets.testResultFolderName }}/NUnit*.xml
# test_windows_powershell:
# runs-on: windows-latest
# needs: [prepare, test_powershell_core]
# steps:
# # Checkout code
# - name: Checkout code
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# # Resolve Dependency and Build Module
# - name: Resolve Dependency and Build Module
# env:
# ModuleVersion: ${{ needs.prepare.outputs.semVer }}
# ModuleFullVersion: ${{ needs.prepare.outputs.fullSemVer }}
# ModuleMajor: ${{ needs.prepare.outputs.major }}
# ModuleMinor: ${{ needs.prepare.outputs.minor }}
# ModulePatch: ${{ needs.prepare.outputs.patch }}
# run: |
# ./build.ps1 -tasks noop -ResolveDependency -UseModuleFast
# ./build.ps1 -tasks build
# shell: pwsh
# # Run Tests and Publish Test Results
# - name: Run Tests and Publish Test Results
# env:
# ModuleVersion: ${{ needs.prepare.outputs.semVer }}
# ModuleFullVersion: ${{ needs.prepare.outputs.fullSemVer }}
# ModuleMajor: ${{ needs.prepare.outputs.major }}
# ModuleMinor: ${{ needs.prepare.outputs.minor }}
# ModulePatch: ${{ needs.prepare.outputs.patch }}
# run: ./build.ps1 -tasks test
# shell: powershell
# # Publish Test Results Artifact for PS7
# - name: Publish Test Results Artifact for PS7
# if: always()
# uses: actions/upload-artifact@v2
# with:
# name: CodeCoverageWinPS7
# path: ${{ secrets.buildFolderName }}/${{ secrets.testResultFolderName }}/NUnit*.xml
deploy:
runs-on: windows-latest
# needs: [prepare, test_powershell_core, test_windows_powershell]
needs: [prepare, test_powershell_core]
env:
ModuleVersion: ${{ needs.prepare.outputs.semVer }}
ModuleFullVersion: ${{ needs.prepare.outputs.fullSemVer }}
ModuleMajor: ${{ needs.prepare.outputs.major }}
ModuleMinor: ${{ needs.prepare.outputs.minor }}
ModulePatch: ${{ needs.prepare.outputs.patch }}
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
steps:
# Checkout code and set up .NET Core environment for deployment stage.
- name: Checkout code and set up .NET Core environment.
uses: actions/checkout@v2
# # Check PSRepository for deployment stage.
# - name: Check PSRepository
# run: |
# if (Get-PSResourceRepository -Name ${{ secrets.repositoryName }} -ErrorAction SilentlyContinue) {
# Unregister-PSResourceRepository -Name ${{ secrets.repositoryName }}
# }
# Register-PSResourceRepository -Name ${{ secrets.repositoryName }} -Uri ${{ secrets.repositoryUri }} -Trusted
# Get-PSResourceRepository -Name ${{ secrets.repositoryName }} -ErrorAction Stop
# shell: pwsh
# Build Release package using the build script.
- name: Build Release
run: ./build.ps1 -tasks pack -ResolveDependency -UseModuleFast
shell: pwsh
# Publish Release package to the repository.
- name: Publish Release
run: ./build.ps1 -tasks publish -UseModuleFast
shell: pwsh
env:
# ReleaseBranch: ${{ secrets.defaultBranch }}
# MainGitBranch: ${{ secrets.defaultBranch }}
GalleryApiToken: ${{ secrets.GalleryApiToken }}
# PSModuleFeed: ${{ secrets.repositoryName }}