mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
feat(release): unify cross-platform versioning
This commit is contained in:
26
.github/workflows/apple-release.yml
vendored
26
.github/workflows/apple-release.yml
vendored
@@ -8,20 +8,14 @@ name: Apple release (macOS DMG)
|
||||
# The App Store / TestFlight build is NOT produced here — that goes through Xcode
|
||||
# Organizer / App Store Connect. This workflow only covers direct distribution.
|
||||
#
|
||||
# Trigger: push a tag vMAJOR.MINOR.PATCH (must point at a commit on master), or
|
||||
# run manually with an explicit version (produces artifacts, no Release).
|
||||
# Trigger: push the canonical vMAJOR.MINOR.PATCH tag (must point at a commit on
|
||||
# master), or run manually using the version committed in version.properties.
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: Release version in MAJOR.MINOR.PATCH form
|
||||
required: true
|
||||
default: "0.1.0"
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -58,17 +52,11 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Resolve version
|
||||
- name: Resolve canonical version
|
||||
id: version
|
||||
env:
|
||||
REQUESTED_VERSION: ${{ inputs.version || '' }}
|
||||
run: |
|
||||
if [ "${GITHUB_REF_TYPE:-}" = "tag" ]; then
|
||||
version="${GITHUB_REF_NAME#v}"
|
||||
else
|
||||
version="$REQUESTED_VERSION"
|
||||
fi
|
||||
[[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "bad version '$version'" >&2; exit 1; }
|
||||
packaging/version/resolve-version.sh verify >/dev/null
|
||||
version="$(packaging/version/resolve-version.sh product)"
|
||||
echo "app=$version" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Select Xcode
|
||||
@@ -147,12 +135,12 @@ jobs:
|
||||
echo "SPARKLE_ED_KEY_FILE=$RUNNER_TEMP/sparkle_ed_private_key" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Build, sign & notarize DMG
|
||||
run: apple/scripts/build-dmg.sh "${{ steps.version.outputs.app }}"
|
||||
run: apple/scripts/build-dmg.sh
|
||||
|
||||
- name: Generate appcast
|
||||
env:
|
||||
RELEASE_REPO: ${{ github.repository }}
|
||||
run: apple/scripts/generate-appcast.sh "${{ steps.version.outputs.app }}"
|
||||
run: apple/scripts/generate-appcast.sh
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||
|
||||
4
.github/workflows/apple.yml
vendored
4
.github/workflows/apple.yml
vendored
@@ -4,6 +4,8 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "apple/**"
|
||||
- "version.properties"
|
||||
- "packaging/version/**"
|
||||
- "crates/vnidrop/**"
|
||||
- "crates/uniffi-bindgen/**"
|
||||
- "Cargo.toml"
|
||||
@@ -18,6 +20,8 @@ on:
|
||||
- master
|
||||
paths:
|
||||
- "apple/**"
|
||||
- "version.properties"
|
||||
- "packaging/version/**"
|
||||
- "crates/vnidrop/**"
|
||||
- "crates/uniffi-bindgen/**"
|
||||
- "Cargo.toml"
|
||||
|
||||
24
.github/workflows/linux-packages.yml
vendored
24
.github/workflows/linux-packages.yml
vendored
@@ -5,6 +5,8 @@ on:
|
||||
paths:
|
||||
- ".github/workflows/linux-packages.yml"
|
||||
- "packaging/linux/**"
|
||||
- "packaging/version/**"
|
||||
- "version.properties"
|
||||
- "assets/linux/**"
|
||||
- "desktopApp/**"
|
||||
- "shared/**"
|
||||
@@ -24,12 +26,6 @@ on:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: Release version in MAJOR.MINOR.PATCH form
|
||||
required: true
|
||||
default: "1.0.0"
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -88,16 +84,14 @@ jobs:
|
||||
restore-keys: |
|
||||
linux-deb-x64-cargo-1.91.0-
|
||||
|
||||
- name: Resolve version
|
||||
- name: Resolve canonical version
|
||||
id: version
|
||||
env:
|
||||
REQUESTED_VERSION: ${{ inputs.version || '1.0.0' }}
|
||||
run: |
|
||||
version=$(packaging/linux/resolve-version.sh "$REQUESTED_VERSION")
|
||||
version=$(packaging/linux/resolve-version.sh)
|
||||
echo "app=$version" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Test and build Debian package
|
||||
run: make package-deb VERSION=${{ steps.version.outputs.app }}
|
||||
run: make package-deb
|
||||
|
||||
- name: Upload Debian artifact
|
||||
if: github.event_name != 'pull_request'
|
||||
@@ -193,16 +187,14 @@ jobs:
|
||||
restore-keys: |
|
||||
linux-rpm-x64-cargo-1.91.0-
|
||||
|
||||
- name: Resolve version
|
||||
- name: Resolve canonical version
|
||||
id: version
|
||||
env:
|
||||
REQUESTED_VERSION: ${{ inputs.version || '1.0.0' }}
|
||||
run: |
|
||||
version=$(packaging/linux/resolve-version.sh "$REQUESTED_VERSION")
|
||||
version=$(packaging/linux/resolve-version.sh)
|
||||
echo "app=$version" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Build RPM package
|
||||
run: make package-rpm VERSION=${{ steps.version.outputs.app }}
|
||||
run: make package-rpm
|
||||
|
||||
- name: Upload RPM artifact
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
4
.github/workflows/rust-core.yml
vendored
4
.github/workflows/rust-core.yml
vendored
@@ -6,6 +6,8 @@ on:
|
||||
- "Cargo.toml"
|
||||
- "Cargo.lock"
|
||||
- "crates/vnidrop/**"
|
||||
- "version.properties"
|
||||
- "packaging/version/**"
|
||||
- "Makefile"
|
||||
- "config.mk"
|
||||
- "make/**"
|
||||
@@ -19,6 +21,8 @@ on:
|
||||
- "Cargo.toml"
|
||||
- "Cargo.lock"
|
||||
- "crates/vnidrop/**"
|
||||
- "version.properties"
|
||||
- "packaging/version/**"
|
||||
- "Makefile"
|
||||
- "config.mk"
|
||||
- "make/**"
|
||||
|
||||
4
.github/workflows/shared-kmp.yml
vendored
4
.github/workflows/shared-kmp.yml
vendored
@@ -4,6 +4,8 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- "shared/**"
|
||||
- "version.properties"
|
||||
- "packaging/version/**"
|
||||
- "crates/vnidrop/**"
|
||||
- "Cargo.toml"
|
||||
- "Cargo.lock"
|
||||
@@ -24,6 +26,8 @@ on:
|
||||
- master
|
||||
paths:
|
||||
- "shared/**"
|
||||
- "version.properties"
|
||||
- "packaging/version/**"
|
||||
- "crates/vnidrop/**"
|
||||
- "Cargo.toml"
|
||||
- "Cargo.lock"
|
||||
|
||||
42
.github/workflows/windows-store.yml
vendored
42
.github/workflows/windows-store.yml
vendored
@@ -5,6 +5,8 @@ on:
|
||||
paths:
|
||||
- ".github/workflows/windows-store.yml"
|
||||
- "packaging/windows/**"
|
||||
- "packaging/version/**"
|
||||
- "version.properties"
|
||||
- "assets/windows/**"
|
||||
- "desktopApp/**"
|
||||
- "shared/**"
|
||||
@@ -21,12 +23,6 @@ on:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: Release version in MAJOR.MINOR.PATCH form
|
||||
required: true
|
||||
default: "1.0.0"
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -77,37 +73,13 @@ jobs:
|
||||
restore-keys: |
|
||||
windows-x64-cargo-1.91.0-
|
||||
|
||||
- name: Resolve Store version
|
||||
- name: Resolve canonical version
|
||||
id: version
|
||||
shell: pwsh
|
||||
env:
|
||||
REQUESTED_VERSION: ${{ inputs.version || '1.0.0' }}
|
||||
run: |
|
||||
$version = $env:REQUESTED_VERSION
|
||||
if ($env:GITHUB_REF_TYPE -eq "tag") {
|
||||
if ($env:GITHUB_REF_NAME -notmatch "^v[0-9]+\.[0-9]+\.[0-9]+$") {
|
||||
throw "Store release tags must use vMAJOR.MINOR.PATCH"
|
||||
}
|
||||
$version = $env:GITHUB_REF_NAME.Substring(1)
|
||||
}
|
||||
|
||||
if ($version -notmatch "^[0-9]+\.[0-9]+\.[0-9]+$") {
|
||||
throw "Version must use MAJOR.MINOR.PATCH"
|
||||
}
|
||||
$parts = $version.Split(".")
|
||||
for ($index = 0; $index -lt $parts.Count; $index++) {
|
||||
$part = $parts[$index]
|
||||
$number = 0
|
||||
if (-not [int]::TryParse($part, [ref] $number) -or $number.ToString() -ne $part) {
|
||||
throw "Version components must be canonical integers"
|
||||
}
|
||||
if ($number -lt $(if ($index -eq 0) { 1 } else { 0 }) -or $number -gt 65535) {
|
||||
throw "Version components must be between 0 and 65535, with a non-zero major"
|
||||
}
|
||||
}
|
||||
|
||||
"app=$version" >> $env:GITHUB_OUTPUT
|
||||
"package=$version.0" >> $env:GITHUB_OUTPUT
|
||||
$version = .\packaging\version\resolve-version.ps1 -Field Json -VerifyTag | ConvertFrom-Json
|
||||
"app=$($version.productVersion)" >> $env:GITHUB_OUTPUT
|
||||
"package=$($version.windowsPackageVersion)" >> $env:GITHUB_OUTPUT
|
||||
|
||||
- name: Test and build release app image
|
||||
shell: pwsh
|
||||
@@ -115,7 +87,6 @@ jobs:
|
||||
$arguments = @(
|
||||
":shared:jvmTest"
|
||||
":desktopApp:createReleaseDistributable"
|
||||
"-Pvnidrop.version=${{ steps.version.outputs.app }}"
|
||||
"-Pvnidrop.desktop.rustVariant=release"
|
||||
"-Pvnidrop.diagnostics.included=false"
|
||||
"--no-daemon"
|
||||
@@ -131,7 +102,6 @@ jobs:
|
||||
shell: pwsh
|
||||
run: |
|
||||
$arguments = @{
|
||||
Version = "${{ steps.version.outputs.app }}"
|
||||
AppImage = ".\desktopApp\build\compose\binaries\main-release\app\VniDrop"
|
||||
OutputDirectory = ".\build\release\windows"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user