Skip to content

Commit cb33eb3

Browse files
🩹 [Refactor]: Create reusable workflow for testing source code in CI
1 parent 5f03326 commit cb33eb3

File tree

3 files changed

+90
-56
lines changed

3 files changed

+90
-56
lines changed

.github/reusable/Test-SourceCode.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Test-SourceCode
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
RunsOn:
7+
type: string
8+
description: The type of runner to use for the job.
9+
required: true
10+
Name:
11+
type: string
12+
description: The name of the module to process. Scripts default to the repository name if nothing is specified.
13+
required: false
14+
Path:
15+
type: string
16+
description: The path to the source code of the module.
17+
required: false
18+
default: src
19+
Debug:
20+
type: boolean
21+
description: Enable debug output.
22+
required: false
23+
default: false
24+
Verbose:
25+
type: boolean
26+
description: Enable verbose output.
27+
required: false
28+
default: false
29+
Version:
30+
type: string
31+
description: Specifies the version of the GitHub module to be installed. The value must be an exact version.
32+
required: false
33+
Prerelease:
34+
type: boolean
35+
description: Whether to use a prerelease version of the 'GitHub' module.
36+
required: false
37+
default: false
38+
39+
permissions:
40+
contents: read # to checkout the repo and create releases on the repo
41+
42+
jobs:
43+
TestSourceCode:
44+
name: Test source code (pwsh, ${{ inputs.runs-on }})
45+
runs-on: ${{ inputs.runs-on }}
46+
steps:
47+
- name: Checkout Code
48+
uses: actions/checkout@v4
49+
50+
- name: Debug
51+
if: ${{ inputs.Debug }}
52+
uses: PSModule/Debug@v0
53+
54+
- name: Initialize environment
55+
uses: PSModule/Initialize-PSModule@v1
56+
with:
57+
Debug: ${{ inputs.Debug }}
58+
Prerelease: ${{ inputs.Prerelease }}
59+
Verbose: ${{ inputs.Verbose }}
60+
Version: ${{ inputs.Version }}
61+
62+
- name: Test source code
63+
id: test
64+
uses: PSModule/Test-PSModule@v2
65+
with:
66+
Name: ${{ inputs.Name }}
67+
Path: ${{ inputs.Path }}
68+
TestType: SourceCode
69+
Debug: ${{ inputs.Debug }}
70+
Prerelease: ${{ inputs.Prerelease }}
71+
Verbose: ${{ inputs.Verbose }}
72+
Version: ${{ inputs.Version }}

.github/workflows/CI.yml

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -101,34 +101,15 @@ jobs:
101101
TestSourceCode-pwsh-ubuntu-latest:
102102
name: Test source code (pwsh, ubuntu-latest)
103103
if: ${{ !(contains(inputs.SkipTests, 'All') || contains(inputs.SkipTests, 'SourceCode') || contains(inputs.SkipTests, 'Linux')) }}
104-
runs-on: ubuntu-latest
105-
steps:
106-
- name: Checkout Code
107-
uses: actions/checkout@v4
108-
109-
- name: Debug
110-
if: ${{ inputs.Debug }}
111-
uses: PSModule/Debug@v0
112-
113-
- name: Initialize environment
114-
uses: PSModule/Initialize-PSModule@v1
115-
with:
116-
Debug: ${{ inputs.Debug }}
117-
Prerelease: ${{ inputs.Prerelease }}
118-
Verbose: ${{ inputs.Verbose }}
119-
Version: ${{ inputs.Version }}
120-
121-
- name: Test source code
122-
id: test
123-
uses: PSModule/Test-PSModule@v2
124-
with:
125-
Name: ${{ inputs.Name }}
126-
Path: ${{ inputs.Path }}
127-
TestType: SourceCode
128-
Debug: ${{ inputs.Debug }}
129-
Prerelease: ${{ inputs.Prerelease }}
130-
Verbose: ${{ inputs.Verbose }}
131-
Version: ${{ inputs.Version }}
104+
uses: ./.github/reusable/Test-SourceCode.yml
105+
with:
106+
RunsOn: ubuntu-latest
107+
Name: ${{ inputs.Name }}
108+
Path: ${{ inputs.Path }}
109+
Debug: ${{ inputs.Debug }}
110+
Prerelease: ${{ inputs.Prerelease }}
111+
Verbose: ${{ inputs.Verbose }}
112+
Version: ${{ inputs.Version }}
132113

133114
TestSourceCode-pwsh-macos-latest:
134115
name: Test source code (pwsh, macos-latest)

.github/workflows/workflow.yml

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -108,34 +108,15 @@ jobs:
108108
TestSourceCode-pwsh-ubuntu-latest:
109109
name: Test source code (pwsh, ubuntu-latest)
110110
if: ${{ !(contains(inputs.SkipTests, 'All') || contains(inputs.SkipTests, 'SourceCode') || contains(inputs.SkipTests, 'Linux')) }}
111-
runs-on: ubuntu-latest
112-
steps:
113-
- name: Checkout Code
114-
uses: actions/checkout@v4
115-
116-
- name: Debug
117-
if: ${{ inputs.Debug }}
118-
uses: PSModule/Debug@v0
119-
120-
- name: Initialize environment
121-
uses: PSModule/Initialize-PSModule@v1
122-
with:
123-
Debug: ${{ inputs.Debug }}
124-
Prerelease: ${{ inputs.Prerelease }}
125-
Verbose: ${{ inputs.Verbose }}
126-
Version: ${{ inputs.Version }}
127-
128-
- name: Test source code
129-
id: test
130-
uses: PSModule/Test-PSModule@v2
131-
with:
132-
Name: ${{ inputs.Name }}
133-
Path: ${{ inputs.Path }}
134-
TestType: SourceCode
135-
Debug: ${{ inputs.Debug }}
136-
Prerelease: ${{ inputs.Prerelease }}
137-
Verbose: ${{ inputs.Verbose }}
138-
Version: ${{ inputs.Version }}
111+
uses: ./.github/reusable/Test-SourceCode.yml
112+
with:
113+
RunsOn: ubuntu-latest
114+
Name: ${{ inputs.Name }}
115+
Path: ${{ inputs.Path }}
116+
Debug: ${{ inputs.Debug }}
117+
Prerelease: ${{ inputs.Prerelease }}
118+
Verbose: ${{ inputs.Verbose }}
119+
Version: ${{ inputs.Version }}
139120

140121
TestSourceCode-pwsh-macos-latest:
141122
name: Test source code (pwsh, macos-latest)

0 commit comments

Comments
 (0)