mirror of
https://github.com/antebudimir/feishin.git
synced 2025-12-31 10:03:33 +00:00
update beta publish
- add increment beta version - fix set prerelease - move delete/cleanup to last step
This commit is contained in:
parent
88cf5f3eb2
commit
7aefe6890d
1 changed files with 74 additions and 29 deletions
103
.github/workflows/publish-beta.yml
vendored
103
.github/workflows/publish-beta.yml
vendored
|
|
@ -25,9 +25,11 @@ jobs:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
- name: Validate and set version with beta suffix
|
- name: Validate and set version with incrementing beta suffix
|
||||||
id: version
|
id: version
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
$inputVersion = "${{ github.event.inputs.version }}"
|
$inputVersion = "${{ github.event.inputs.version }}"
|
||||||
Write-Host "Input version: $inputVersion"
|
Write-Host "Input version: $inputVersion"
|
||||||
|
|
@ -67,8 +69,34 @@ jobs:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add beta suffix
|
# Check for existing beta releases with the same base version
|
||||||
$versionWithBeta = "$inputVersion-beta"
|
Write-Host "Checking for existing beta releases with base version: $inputVersion"
|
||||||
|
$existingReleases = gh release list --limit 100 --json tagName,isPrerelease | ConvertFrom-Json | Where-Object { $_.isPrerelease -eq $true }
|
||||||
|
|
||||||
|
$maxBetaNumber = 0
|
||||||
|
|
||||||
|
foreach ($release in $existingReleases) {
|
||||||
|
$tagName = $release.tagName
|
||||||
|
Write-Host "Checking tag: $tagName"
|
||||||
|
|
||||||
|
# Extract beta number from tag name (format: v1.0.0-beta.1)
|
||||||
|
if ($tagName -match "v$([regex]::Escape($inputVersion))-beta\.(\d+)$") {
|
||||||
|
$betaNumber = [int]$matches[1]
|
||||||
|
Write-Host "Found beta release with number: $betaNumber"
|
||||||
|
|
||||||
|
if ($betaNumber -gt $maxBetaNumber) {
|
||||||
|
$maxBetaNumber = $betaNumber
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Calculate next beta number
|
||||||
|
$nextBetaNumber = $maxBetaNumber + 1
|
||||||
|
Write-Host "Next beta number: $nextBetaNumber"
|
||||||
|
|
||||||
|
# Create beta suffix with incrementing number
|
||||||
|
$betaSuffix = "beta.$nextBetaNumber"
|
||||||
|
$versionWithBeta = "$inputVersion-$betaSuffix"
|
||||||
Write-Host "Setting version to: $versionWithBeta"
|
Write-Host "Setting version to: $versionWithBeta"
|
||||||
|
|
||||||
# Update package.json
|
# Update package.json
|
||||||
|
|
@ -81,32 +109,6 @@ jobs:
|
||||||
# Set output for other jobs
|
# Set output for other jobs
|
||||||
echo "version=$versionWithBeta" >> $env:GITHUB_OUTPUT
|
echo "version=$versionWithBeta" >> $env:GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Delete existing releases and tags
|
|
||||||
shell: pwsh
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: |
|
|
||||||
# Get the version that was set in the previous step
|
|
||||||
$versionWithBeta = "${{ steps.version.outputs.version }}"
|
|
||||||
Write-Host "Checking for existing releases with tag: $versionWithBeta"
|
|
||||||
|
|
||||||
# Find and delete any releases with isPrerelease "true"
|
|
||||||
Write-Host "Deleting existing prereleases..."
|
|
||||||
Write-Host "Searching for releases with isPrerelease 'true'..."
|
|
||||||
|
|
||||||
$betaReleases = gh release list --limit 100 --json tagName,isPrerelease,name | ConvertFrom-Json | Where-Object { $_.isPrerelease -eq $true }
|
|
||||||
|
|
||||||
if ($betaReleases) {
|
|
||||||
Write-Host "Found $($betaReleases.Count) release(s) with isPrerelease 'true':"
|
|
||||||
foreach ($release in $betaReleases) {
|
|
||||||
Write-Host " - Tag: $($release.tagName), Title: $($release.name)"
|
|
||||||
gh release delete $release.tagName --yes --cleanup-tag
|
|
||||||
Write-Host " Deleted release with tag: $($release.tagName)"
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Write-Host "No releases found with isPrerelease 'true'"
|
|
||||||
}
|
|
||||||
|
|
||||||
publish:
|
publish:
|
||||||
needs: prepare
|
needs: prepare
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
@ -328,5 +330,48 @@ jobs:
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
|
# Get the version from the prepare job
|
||||||
|
$versionWithBeta = "${{ needs.prepare.outputs.version }}"
|
||||||
|
$tagVersion = "v" + $versionWithBeta
|
||||||
|
Write-Host "Setting release as prerelease for tag: $tagVersion"
|
||||||
gh release edit $tagVersion --prerelease
|
gh release edit $tagVersion --prerelease
|
||||||
Write-Host "Successfully set release as prerelease"
|
Write-Host "Successfully set release as prerelease"
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
needs: [prepare, publish, edit-release]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout git repo
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Delete existing prereleases
|
||||||
|
shell: pwsh
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
# Get the current version that was just created
|
||||||
|
$versionWithBeta = "${{ needs.prepare.outputs.version }}"
|
||||||
|
Write-Host "Current release version: $versionWithBeta"
|
||||||
|
|
||||||
|
# Find and delete any old prereleases (excluding the current one)
|
||||||
|
Write-Host "Deleting old prereleases..."
|
||||||
|
Write-Host "Searching for releases with isPrerelease 'true'..."
|
||||||
|
|
||||||
|
$betaReleases = gh release list --limit 100 --json tagName,isPrerelease,name | ConvertFrom-Json | Where-Object { $_.isPrerelease -eq $true }
|
||||||
|
|
||||||
|
if ($betaReleases) {
|
||||||
|
Write-Host "Found $($betaReleases.Count) release(s) with isPrerelease 'true':"
|
||||||
|
foreach ($release in $betaReleases) {
|
||||||
|
$tagName = $release.tagName
|
||||||
|
# Skip the current release
|
||||||
|
if ($tagName -ne "v$versionWithBeta") {
|
||||||
|
Write-Host " - Tag: $tagName, Title: $($release.name)"
|
||||||
|
gh release delete $tagName --yes --cleanup-tag
|
||||||
|
Write-Host " Deleted release with tag: $tagName"
|
||||||
|
} else {
|
||||||
|
Write-Host " - Skipping current release: $tagName"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "No releases found with isPrerelease 'true'"
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue