Skip to content

Add package workflow #29

Add package workflow

Add package workflow #29

name: Build and Test
on:
pull_request:
branches:
- master
push:
branches:
- master
jobs:
build_module:
name: Build Module
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: pwsh
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Build
shell: pwsh
run: |
Invoke-Build -Task Clean, Build
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: Release
path: ./Release/
test_on_windows_v5:
name: Test Module on Windows (PS v5)
needs: build_module
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Download
uses: actions/download-artifact@v3
with:
name: Release
path: ./Release/
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: powershell
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Test
shell: powershell
run: |
Invoke-Build -Task Test
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: ${{ runner.os }}-Unit-Tests
path: Test*.xml
if: ${{ always() }}
test_on_windows_v7:
name: Test Module on Windows (PS v7)
needs: build_module
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Download
uses: actions/download-artifact@v3
with:
name: Release
path: ./Release/
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: pwsh
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Test
shell: pwsh
run: |
Invoke-Build -Task Test
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: ${{ runner.os }}-Unit-Tests
path: Test*.xml
if: ${{ always() }}
test_on_ubuntu:
name: Test Module on Ubuntu
needs: build_module
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download
uses: actions/download-artifact@v3
with:
name: Release
path: ./Release/
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: pwsh
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Test
shell: pwsh
run: |
Invoke-Build -Task Test
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: ${{ runner.os }}-Unit-Tests
path: Test*.xml
if: ${{ always() }}
test_on_macos:
name: Test Module on macOS
needs: build_module
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Download
uses: actions/download-artifact@v3
with:
name: Release
path: ./Release/
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: pwsh
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Test
shell: pwsh
run: |
Invoke-Build -Task Test
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: ${{ runner.os }}-Unit-Tests
path: Test*.xml
if: ${{ always() }}
test_against_cloud:
env:
JiraURI: ${{ secrets.JiraURI }}
JiraUser: ${{ secrets.JiraUser }}
JiraPass: ${{ secrets.JiraPass }}
name: Test Module against Cloud Server
needs: build_module
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download
uses: actions/download-artifact@v3
with:
name: Release
path: ./Release/
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: pwsh
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Test
shell: pwsh
run: |
Invoke-Build -Task Test -Tag "Integration" -ExcludeTag ""
if: ${{ env.JiraURI != '' }}
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: ${{ runner.os }}-Unit-Tests
path: Test*.xml
if: ${{ always() }}
package:
name: Package
needs: [build_module, test_on_windows_v5, test_on_windows_v7, test_on_ubuntu, test_on_macos, test_against_cloud]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download
uses: actions/download-artifact@v3
with:
name: Release
path: ./Release/
- name: Setup PowerShell module cache
id: cacher
uses: actions/cache@v3
with:
path: "~/.local/share/powershell/Modules"
key: ${{ runner.os }}-PSModules
- name: Setup
shell: pwsh
run: |
./Tools/setup.ps1
Invoke-Build -Task ShowInfo
- name: Package
shell: pwsh
run: |
Invoke-Build -Task Package
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: JiraPS.zip
path: ./Release/JiraPS.zip
if: ${{ success() }}