Skip to content

fix: add a json serializer to serialize structs to strings #490

fix: add a json serializer to serialize structs to strings

fix: add a json serializer to serialize structs to strings #490

Workflow file for this run

name: Branch Build Using Docker
on:
push:
branches:
- '**'
env:
# solution path needs slashes (use \). When solution file name and path are put together, it should be a valid path
# If Solution is in repo root, leave SOLUTION_PATH empty
# solution name does not include extension. .sln is assumed
SOLUTION_PATH: 3-series\
SOLUTION_FILE: epi-essentials-mobile-control
# Do not edit this, we're just creating it here
VERSION: 0.0.0-buildtype-buildnumber
# Defaults to debug for build type
BUILD_TYPE: Release
# Defaults to master as the release branch. Change as necessary
RELEASE_BRANCH: main
jobs:
GetVersionNumber:
runs-on: ubuntu-latest
outputs:
newVersion: ${{ steps.get_version.outputs.newVersion }}
tag: ${{ steps.get_version.outputs.tag }}
version: ${{ steps.get_version.outputs.version }}
channel: ${{ steps.get_version.outputs.channel }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Get branch name
id: get_branch
run: |
branch=${GITHUB_REF#refs/heads/}
echo "branch=$branch" >> $GITHUB_OUTPUT
echo "prerelease=${branch//\//-}" >> $GITHUB_OUTPUT
env:
GITHUB_REF: ${{ github.ref }}
- name: Replace branch name in .releaserc.json
if: steps.get_branch.outputs.branch != 'main'
uses: jacobtomlinson/gha-find-replace@master
with:
find: 'replace-me-feature-branch'
replace: '${{ steps.get_branch.outputs.branch }}'
include: '.releaserc.json'
- name: Replace prerelease name in .releaserc.json
if: steps.get_branch.outputs.branch != 'main'
uses: jacobtomlinson/gha-find-replace@master
with:
find: 'replace-me-prerelease'
replace: '${{ steps.get_branch.outputs.prerelease }}'
include: '.releaserc.json'
- name: Get version number
id: get_version
run: npx --package=semantic-release --package=@semantic-release/commit-analyzer --package=@semantic-release/release-notes-generator --package=@semantic-release/changelog --package=@semantic-release/exec -- semantic-release
- name: Print summary if no new version
if: steps.get_version.outputs.newVersion != 'true'
run: |
echo "# Summary" >> $GITHUB_STEP_SUMMARY
echo "No new version generated" >> $GITHUB_STEP_SUMMARY
- name: Upload release notes
if: steps.get_version.outputs.newVersion == 'true'
uses: actions/upload-artifact@v3
with:
name: change-log
path: CHANGELOG.md
- name: Upload Release
id: create_release
if: steps.get_version.outputs.newVersion == 'true'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
prerelease: ${{ steps.get_version.outputs.channel != '' }}
tag: ${{ steps.get_version.outputs.tag }}
commit: ${{ github.sha }}
bodyFile: ./CHANGELOG.md
- name: Print results
if: steps.get_version.outputs.newVersion == 'true'
run: |
echo "# Summary" >> $GITHUB_STEP_SUMMARY
echo "Version: ${{ steps.get_version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo "Tag: ${{ steps.get_version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
echo "New Version: ${{ steps.get_version.outputs.newVersion }}" >> $GITHUB_STEP_SUMMARY
echo "Channel: ${{ steps.get_version.outputs.channel }}" >> $GITHUB_STEP_SUMMARY
echo "Type: ${{ steps.get_version.outputs.type }}" >> $GITHUB_STEP_SUMMARY
# Build_Project:
# runs-on: windows-2019
# needs: GetVersionNumber
# if: needs.GetVersionNumber.outputs.newVersion == 'true'
# env:
# VERSION: ${{ needs.GetVersionNumber.outputs.version }}
# steps:
# # First we checkout the source repo
# - name: Checkout repo
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# # Fetch all tags
# - name: Fetch tags
# run: git fetch --tags
# # Generate the appropriate version number
# # - name: Set Version Number
# # shell: powershell
# # run: |
# # $version = ./.github/scripts/GenerateVersionNumber.ps1
# # echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
# # Use the version number to set the version of the assemblies
# - name: Update AssemblyInfo.cs
# shell: powershell
# run: |
# Write-Output ${{ env.VERSION }}
# ./.github/scripts/UpdateAssemblyVersion.ps1 ${{ env.VERSION }}
# - name: restore Nuget Packages
# run: nuget install .\packages.config -OutputDirectory .\packages -ExcludeVersion
# # Login to Docker
# - name: Login to Docker
# uses: azure/docker-login@v1
# with:
# username: ${{ secrets.DOCKERHUB_USER }}
# password: ${{ secrets.DOCKERHUB_PASSWORD }}
# # Build the solutions in the docker image
# - name: Build Solution
# shell: powershell
# run: |
# Invoke-Expression "docker run --rm --mount type=bind,source=""$($Env:GITHUB_WORKSPACE)"",target=""c:/project"" pepperdash/sspbuilder c:\cihelpers\vsidebuild.exe -Solution ""c:\project\$($Env:SOLUTION_PATH)$($Env:SOLUTION_FILE).sln"" -BuildSolutionConfiguration $($ENV:BUILD_TYPE)"
# # Zip up the output files as needed
# - name: Zip Build Output
# shell: powershell
# run: |
# $destination = "$($Env:GITHUB_HOME)\output"
# New-Item -ItemType Directory -Force -Path ($destination)
# Get-ChildItem ($destination)
# $exclusions = @("packages", "4-series")
# # Trying to get any .json schema files (not currently working)
# # Gets any files with the listed extensions.
# Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.clz", "*.cpz", "*.cplz", "*.nuspec" | ForEach-Object {
# $allowed = $true;
# # Exclude any files in submodules
# foreach ($exclude in $exclusions) {
# if ((Split-Path $_.FullName -Parent).contains("$($exclude)")) {
# $allowed = $false;
# break;
# }
# }
# if ($allowed) {
# Write-Host "allowing $($_)"
# $_;
# }
# } | Copy-Item -Destination ($destination) -Force
# Write-Host "Getting matching files..."
# # Get any files from the output folder that match the following extensions
# Get-ChildItem -Path $destination | Where-Object {($_.Extension -eq ".clz") -or ($_.Extension -eq ".cpz" -or ($_.Extension -eq ".cplz"))} | ForEach-Object {
# # Replace the extensions with dll and xml and create an array
# $filenames = @($($_ -replace "cpz|clz|cplz", "dll"), $($_ -replace "cpz|clz|cplz", "xml"))
# Write-Host "Filenames:"
# Write-Host $filenames
# if ($filenames.length -gt 0) {
# # Attempt to get the files and return them to the output directory
# Get-ChildItem -Recurse -Path "$($Env:GITHUB_WORKSPACE)" -include $filenames | Copy-Item -Destination ($destination) -Force
# }
# }
# Get-ChildItem -Path $destination\*.cplz | Rename-Item -NewName { "$($_.BaseName)-$($Env:VERSION)$($_.Extension)" }
# Compress-Archive -Path $destination -DestinationPath "$($Env:GITHUB_WORKSPACE)\$($Env:SOLUTION_FILE)-$($Env:VERSION).zip" -Force
# Write-Host "Output Contents post Zip"
# Get-ChildItem -Path $destination
# # Write the version to a file to be consumed by the push jobs
# - name: Write Version
# run: Write-Output "$($Env:VERSION)" | Out-File -FilePath "$($Env:GITHUB_HOME)\output\version.txt"
# # Upload output files
# - name: Upload Build Output
# uses: actions/upload-artifact@v3
# with:
# name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
# path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
# # Upload the Version file as an artifact
# - name: Upload version.txt
# uses: actions/upload-artifact@v3
# with:
# name: Version
# path: ${{env.GITHUB_HOME}}\output\version.txt
# # Create the release on the source repo
# - name: Get release notes
# uses: actions/download-artifact@v3
# with:
# name: change-log
# - name: Upload Release
# id: create_release
# uses: ncipollo/release-action@v1
# with:
# allowUpdates: true
# artifacts: 'output\*.*(zip)'
# prerelease: ${{ needs.GetVersionNumber.outputs.channel != '' }}
# tag: ${{ needs.GetVersionNumber.outputs.tag }}
# commit: ${{ github.sha }}
# bodyFile: ./CHANGELOG.md
# Push_Nuget_Package:
# needs: [GetVersionNumber, Build_Project]
# runs-on: windows-latest
# env:
# VERSION: ${{ needs.GetVersionNumber.outputs.version }}
# steps:
# - name: Download Build output
# uses: actions/download-artifact@v3
# with:
# name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION }}.zip
# path: ./
# - name: Unzip Build file
# run: |
# Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\
# Remove-Item -Path .\*.zip
# - name: Copy Files to root & delete output directory
# run: |
# Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz")
# Get-ChildItem -Path .\output\* | Copy-Item -Destination .\
# Remove-Item -Path .\output -Recurse
# - name: Add nuget.exe
# uses: nuget/setup-nuget@v1
# - name: Add Github Packages source
# run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username pepperdash -password ${{ secrets.GITHUB_TOKEN }}
# - name: Create nuget package
# run: nuget pack "./epi-essentials-mobile-control.nuspec" -version ${{ env.VERSION }}
# - name: Publish nuget package to Github registry
# run: nuget push **/*.nupkg -source github
# - name: Add nuget.org API Key
# run: nuget setApiKey ${{ secrets.NUGET_API_KEY }}
# - name: Publish nuget package to nuget.org
# run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json
Build_Project_4-Series:
needs: GetVersionNumber
if: needs.GetVersionNumber.outputs.newVersion == 'true'
runs-on: windows-2019
steps:
# First we checkout the source repo
- name: Checkout repo
uses: actions/checkout@v4
- name: Get SLN Info
id: get_sln_info
shell: powershell
run: |
$solution_file = Get-ChildItem .\4-series\*.sln -recurse
Write-Output $solution_file
echo "SOLUTION_FILE=$($solution_file.BaseName)"| Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
$solution_path = Get-ChildItem *.sln -recurse
$solution_path = $solution_path.FullName
$solution_path = $solution_path -replace "(?:[^\\]*\\){4}", ""
Write-Output $solution_path
echo "SOLUTION_PATH=$($solution_path)" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
- name: Setup MS Build
uses: microsoft/setup-msbuild@v1.1
- name: restore Nuget Packages
run: nuget restore .\4-series\${{ steps.get_sln_info.outputs.SOLUTION_FILE }}.sln
- name: Build Solution
run: msbuild .\4-series\${{ steps.get_sln_info.outputs.SOLUTION_FILE }}.sln /p:Platform="Any CPU" /p:Configuration="Debug" /p:Version="${{ needs.GetVersionNumber.outputs.version }}" -m
- name: Get release notes
uses: actions/download-artifact@v3
with:
name: change-log
- name: Upload Release
id: create_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: 'output\*.*(cpz|cplz)'
prerelease: ${{ needs.GetVersionNumber.outputs.channel != '' }}
tag: ${{ needs.GetVersionNumber.outputs.tag }}
commit: ${{ github.sha }}
bodyFile: ./CHANGELOG.md
- name: Setup Nuget
run: |
nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username pepperdash -password ${{ secrets.GITHUB_TOKEN }}
nuget setApiKey ${{ secrets.GITHUB_TOKEN }} -Source github
nuget setApiKey ${{ secrets.NUGET_API_KEY }} -Source https://api.nuget.org/v3/index.json
- name: Publish to Nuget
run: nuget push .\output\*.nupkg -Source https://api.nuget.org/v3/index.json
- name: Publish to Github Nuget
run: nuget push .\output\*.nupkg -Source github