Add the Version upgrade pipeline
parent
5a14d4d3a4
commit
462eec558b
|
@ -14,7 +14,16 @@ concurrency:
|
|||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
|
||||
# Run Unity multi-version build unit tests defined in the package
|
||||
Run-Unit-Tests:
|
||||
name: Run Unity Unit Tests
|
||||
uses: ./.github/workflows/rununitybuildmultiversion.yml
|
||||
uses: ./.github/workflows/rununitybuildmultiversion.yml
|
||||
|
||||
# Update the package release version
|
||||
#Update-Version:
|
||||
# name: Update Package Version
|
||||
# uses: ./.github/workflows/tagrelease.yml
|
||||
# with:
|
||||
# build-target: windows
|
||||
# secrets: inherit
|
|
@ -0,0 +1,145 @@
|
|||
name: Package UPM project and deploy
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-target:
|
||||
required: true
|
||||
type: string
|
||||
build-type:
|
||||
required: false
|
||||
default: 'pre-release'
|
||||
type: string
|
||||
# options:
|
||||
# - major
|
||||
# - minor
|
||||
# - patch
|
||||
# - pre-release
|
||||
# - build
|
||||
outputs:
|
||||
packageversion:
|
||||
description: "Returns the version of Unity the UPM package requires"
|
||||
value: ${{ jobs.packageRelease.outputs.packageversion }}
|
||||
secrets:
|
||||
GIT_USER_NAME:
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
packageRelease:
|
||||
name: Package UPM Project and tag
|
||||
runs-on: ${{ inputs.build-target }}
|
||||
outputs:
|
||||
packageversion: ${{ steps.getpackageversion.outputs.packageversion }}
|
||||
steps:
|
||||
- name: Script Version
|
||||
run: |
|
||||
echo "::group::Script Versioning"
|
||||
$scriptVersion = "1.0.2"
|
||||
echo "Build Script Version: $scriptVersion"
|
||||
echo "::endgroup::"
|
||||
shell: pwsh
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
clean: true
|
||||
token: ${{ secrets.GIT_PAT }}
|
||||
- uses: actions/setup-node@v3
|
||||
- name: Set Github vars
|
||||
run: |
|
||||
if([string]::IsNullOrEmpty('${{ secrets.GIT_USER_NAME }}')){
|
||||
if([string]::IsNullOrEmpty('${{ secrets.GIT_USER_NAME }}')){
|
||||
$gitUser = "action"
|
||||
$gitEmail = "action@github.com"
|
||||
}
|
||||
else {
|
||||
$gitUser = "${GITHUB_ACTOR}"
|
||||
$gitEmail = "$gitUser@users.noreply.github.com"
|
||||
}
|
||||
}
|
||||
else {
|
||||
$gitUser = "${{ secrets.GIT_USER_NAME }}"
|
||||
$gitEmail = "$gitUser@users.noreply.github.com"
|
||||
}
|
||||
echo "email $gitUser@users.noreply.github.com"
|
||||
git config --global user.email "$gitUser@users.noreply.github.com"
|
||||
git config --global user.name "$gitUser"
|
||||
shell: pwsh
|
||||
- id: getpackageversion
|
||||
name: Bump UPM Package version
|
||||
run: |
|
||||
function UpdateProjectVersionJSON {
|
||||
param (
|
||||
[Parameter(Mandatory)]
|
||||
$type,
|
||||
$packageFile = 'package.json'
|
||||
)
|
||||
<#
|
||||
Type of build can be one of the following
|
||||
- 'build' # Build release - 1.0.0-pre-release.0+1
|
||||
- 'pre-release' # Pre-Release release - 1.0.0-pre-release.1
|
||||
- 'patch' # Patch release - 1.0.1
|
||||
- 'minor' # Minor release - 1.1.0
|
||||
- 'major' # Major release - 2.0.0
|
||||
#>
|
||||
|
||||
if ( -not (Test-Path -Path $packageFile) ) {
|
||||
Write-Error "Failed to find a valid project manifest at `"$packageFile`""
|
||||
return $null
|
||||
}
|
||||
|
||||
$packageInfo = (Get-Content $packageFile -Raw) | ConvertFrom-Json
|
||||
Write-Host "Detected Project Version:" $packageInfo.version
|
||||
function IfNull($a, $b, $c) { if ($null -eq $a) { return $b } else { return $c } }
|
||||
|
||||
$packageSemVer = [System.Management.Automation.SemanticVersion]$packageInfo.version
|
||||
$majorVersion = if($null -eq $packageSemVer.Major) {0} else {$packageSemVer.Major}
|
||||
$minorVersion = if($null -eq $packageSemVer.Minor) {0} else {$packageSemVer.Minor}
|
||||
$patchVersion = if($null -eq $packageSemVer.Patch) {0} else {$packageSemVer.Patch}
|
||||
$prereleaseVersion = if($null -eq $packageSemVer.PreReleaseLabel) {0} else {$packageSemVer.PreReleaseLabel.Replace('pre-release.','')}
|
||||
$buildVersion = if($null -eq $packageSemVer.BuildLabel) {0} else {$packageSemVer.BuildLabel}
|
||||
|
||||
# work out new version
|
||||
switch ($type) {
|
||||
'build' {
|
||||
[int]$buildVersion += 1
|
||||
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion, "pre-release." + $prereleaseVersion, $buildVersion)
|
||||
}
|
||||
'pre-release' {
|
||||
[int]$prereleaseVersion += 1
|
||||
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion, "pre-release." + $prereleaseVersion)
|
||||
}
|
||||
'patch' {
|
||||
[int]$patchVersion += 1
|
||||
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, $patchVersion)
|
||||
}
|
||||
'minor' {
|
||||
[int]$minorVersion += 1
|
||||
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, $minorVersion, 0)
|
||||
}
|
||||
'major' {
|
||||
[int]$majorVersion += 1
|
||||
$newPackageSemVer = [System.Management.Automation.SemanticVersion]::New($majorVersion, 0, 0)
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Upgrading project version [$packageSemVer] to [$newPackageSemVer]"
|
||||
|
||||
# Write out updated package info
|
||||
|
||||
$packageInfo.version = $newPackageSemVer.ToString()
|
||||
$packageInfo | ConvertTo-Json | Set-Content $packageFile
|
||||
|
||||
return $packageInfo.version
|
||||
}
|
||||
|
||||
$packageFile = 'package.json'
|
||||
$result = UpdateProjectVersionJSON("${{ inputs.build-type }}","$packageFile")
|
||||
if([string]::IsNullOrEmpty($result)) {
|
||||
echo "Version patch failed"
|
||||
exit 1
|
||||
}
|
||||
echo "packageversion=$result" >> $env:GITHUB_OUTPUT
|
||||
git add "$packageFile"
|
||||
git commit -m "Auto increment pre-release version to $result [skip ci]"
|
||||
git push origin --force
|
||||
shell: pwsh
|
Loading…
Reference in New Issue