[feat] use dynamic version number

This commit is contained in:
dijunkun
2025-08-15 19:35:16 +08:00
parent 8360c1725f
commit f203566b81
5 changed files with 62 additions and 26 deletions

View File

@@ -23,6 +23,24 @@ jobs:
image: crossdesk/ubuntu22.04:latest image: crossdesk/ubuntu22.04:latest
options: --user root options: --user root
steps: steps:
- name: Extract version number
id: version
run: |
VERSION="${GITHUB_REF##*/}"
VERSION_NUM="${VERSION#v}"
echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV
- name: Set legal Debian version
shell: bash
id: set_deb_version
run: |
if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then
LEGAL_VERSION="0.0.0-${VERSION_NUM}"
else
LEGAL_VERSION="${VERSION_NUM}"
fi
echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -45,13 +63,13 @@ jobs:
- name: Package - name: Package
run: | run: |
chmod +x ./scripts/linux/pkg_x86_64.sh chmod +x ./scripts/linux/pkg_x86_64.sh
./scripts/linux/pkg_x86_64.sh ./scripts/linux/pkg_x86_64.sh ${LEGAL_VERSION}
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: crossdesk-linux-x86_64 name: crossdesk-linux-x86_64-${{ env.LEGAL_VERSION }}
path: ${{ github.workspace }}/CrossDesk-0.0.1.deb path: ${{ github.workspace }}/crossdesk-linux-x86_64-${{ env.LEGAL_VERSION }}.deb
# macOS # macOS
build-macos: build-macos:
@@ -64,16 +82,22 @@ jobs:
runner: macos-13 runner: macos-13
cache-key: intel cache-key: intel
out-dir: ./build/macosx/x86_64/release/crossdesk out-dir: ./build/macosx/x86_64/release/crossdesk
artifact-name: crossdesk-macos-x86_64
package_script: ./scripts/macosx/pkg_x86_64.sh package_script: ./scripts/macosx/pkg_x86_64.sh
- arch: arm64 - arch: arm64
runner: macos-14 runner: macos-14
cache-key: arm cache-key: arm
out-dir: ./build/macosx/arm64/release/crossdesk out-dir: ./build/macosx/arm64/release/crossdesk
artifact-name: crossdesk-macos-arm64
package_script: ./scripts/macosx/pkg_arm64.sh package_script: ./scripts/macosx/pkg_arm64.sh
steps: steps:
- name: Extract version number
id: version
run: |
VERSION="${GITHUB_REF##*/}"
VERSION_NUM="${VERSION#v}"
echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV
echo "VERSION_NUM=${VERSION_NUM}"
- name: Cache xmake dependencies - name: Cache xmake dependencies
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
@@ -103,18 +127,18 @@ jobs:
- name: Package CrossDesk app - name: Package CrossDesk app
run: | run: |
chmod +x ${{ matrix.package_script }} chmod +x ${{ matrix.package_script }}
${{ matrix.package_script }} ${{ matrix.package_script }} ${VERSION_NUM}
- name: Upload build artifacts - name: Upload build artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: ${{ matrix.artifact-name }} name: crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}
path: crossdesk-macos-${{ matrix.arch }}-v0.0.1.pkg path: crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}.pkg
- name: Move files to release dir - name: Move files to release dir
run: | run: |
mkdir -p release mkdir -p release
cp crossdesk-macos-${{ matrix.arch }}-v0.0.1.pkg release/ cp crossdesk-macos-${{ matrix.arch }}-${{ env.VERSION_NUM }}.pkg release/
# Windows # Windows
build-windows: build-windows:
@@ -123,6 +147,14 @@ jobs:
env: env:
XMAKE_GLOBALDIR: D:\xmake_global XMAKE_GLOBALDIR: D:\xmake_global
steps: steps:
- name: Extract version number
shell: pwsh
run: |
$ref = $env:GITHUB_REF
$version = $ref -replace '^refs/(tags|heads)/', ''
$version = $version -replace '/', '-'
echo "VERSION_NUM=$version" >> $env:GITHUB_ENV
- name: Cache xmake dependencies - name: Cache xmake dependencies
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
@@ -177,15 +209,16 @@ jobs:
[System.IO.File]::WriteAllBytes('certs\crossdesk.cn_root.crt', [Convert]::FromBase64String('${{ secrets.CROSSDESK_CERT_BASE64 }}')) [System.IO.File]::WriteAllBytes('certs\crossdesk.cn_root.crt', [Convert]::FromBase64String('${{ secrets.CROSSDESK_CERT_BASE64 }}'))
- name: Package - name: Package
shell: pwsh
run: | run: |
cd ${{ github.workspace }}/scripts/windows cd "${{ github.workspace }}\scripts\windows"
makensis nsis_script.nsi makensis /DVERSION=$env:VERSION_NUM nsis_script.nsi
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: crossdesk-win-x86_64 name: crossdesk-win-x86_64-${{ env.VERSION_NUM }}
path: ${{ github.workspace }}/scripts/windows/CrossDesk-0.0.1.exe path: ${{ github.workspace }}/scripts/windows/crossdesk-win-x86_64-${{ env.VERSION_NUM }}.exe
release: release:
name: Publish Release name: Publish Release
@@ -212,10 +245,10 @@ jobs:
- name: Rename artifacts - name: Rename artifacts
run: | run: |
mkdir -p release mkdir -p release
cp artifacts/crossdesk-macos-x86_64/* release/crossdesk-macos-x86_64-v${{ steps.version.outputs.VERSION_NUM }}.pkg cp artifacts/crossdesk-macos-x86_64/* release/crossdesk-macos-x86_64-${{ steps.version.outputs.VERSION_NUM }}.pkg
cp artifacts/crossdesk-macos-arm64/* release/crossdesk-macos-aarch64-v${{ steps.version.outputs.VERSION_NUM }}.pkg cp artifacts/crossdesk-macos-arm64/* release/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg
cp artifacts/crossdesk-linux-x86_64/* release/crossdesk-linux-x86_64-v${{ steps.version.outputs.VERSION_NUM }}.deb cp artifacts/crossdesk-linux-x86_64/* release/crossdesk-linux-x86_64-${{ steps.version.outputs.VERSION_NUM }}.deb
cp artifacts/crossdesk-win-x86_64/* release/crossdesk-win-x86_64-v${{ steps.version.outputs.VERSION_NUM }}.exe cp artifacts/crossdesk-win-x86_64/* release/crossdesk-win-x86_64-${{ steps.version.outputs.VERSION_NUM }}.exe
- name: Upload to Versioned GitHub Release - name: Upload to Versioned GitHub Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2

View File

@@ -3,7 +3,7 @@ set -e
# 配置变量 # 配置变量
APP_NAME="CrossDesk" APP_NAME="CrossDesk"
APP_VERSION="0.0.1" APP_VERSION="$1"
ARCHITECTURE="amd64" ARCHITECTURE="amd64"
MAINTAINER="Junkun Di <junkun.di@hotmail.com>" MAINTAINER="Junkun Di <junkun.di@hotmail.com>"
DESCRIPTION="A simple cross-platform remote desktop client." DESCRIPTION="A simple cross-platform remote desktop client."
@@ -120,6 +120,9 @@ chmod +x "$DEBIAN_DIR/postinst"
# 构建 .deb 包 # 构建 .deb 包
dpkg-deb --build "$DEB_DIR" dpkg-deb --build "$DEB_DIR"
OUTPUT_FILE="crossdesk-linux-x86_64-$APP_VERSION.deb"
mv "$DEB_DIR.deb" "$OUTPUT_FILE"
# 清理构建目录 # 清理构建目录
rm -rf "$DEB_DIR" rm -rf "$DEB_DIR"

View File

@@ -5,7 +5,7 @@ set -e # 遇错退出
APP_NAME="crossdesk" APP_NAME="crossdesk"
APP_NAME_UPPER="CrossDesk" # 这个变量用来指定大写的应用名 APP_NAME_UPPER="CrossDesk" # 这个变量用来指定大写的应用名
EXECUTABLE_PATH="./build/macosx/arm64/release/crossdesk" # 可执行文件路径 EXECUTABLE_PATH="./build/macosx/arm64/release/crossdesk" # 可执行文件路径
APP_VERSION="0.0.1" APP_VERSION="$1"
PLATFORM="macos" PLATFORM="macos"
ARCH="arm64" ARCH="arm64"
IDENTIFIER="cn.crossdesk.app" IDENTIFIER="cn.crossdesk.app"
@@ -20,8 +20,8 @@ CONTENTS_DIR="${APP_BUNDLE}/Contents"
MACOS_DIR="${CONTENTS_DIR}/MacOS" MACOS_DIR="${CONTENTS_DIR}/MacOS"
RESOURCES_DIR="${CONTENTS_DIR}/Resources" RESOURCES_DIR="${CONTENTS_DIR}/Resources"
PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.pkg" # 保持安装包名称小写 PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg" # 保持安装包名称小写
DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.dmg" DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg"
VOL_NAME="Install ${APP_NAME_UPPER}" VOL_NAME="Install ${APP_NAME_UPPER}"
# === 清理旧文件 === # === 清理旧文件 ===

View File

@@ -5,7 +5,7 @@ set -e # 遇错退出
APP_NAME="crossdesk" APP_NAME="crossdesk"
APP_NAME_UPPER="CrossDesk" # 这个变量用来指定大写的应用名 APP_NAME_UPPER="CrossDesk" # 这个变量用来指定大写的应用名
EXECUTABLE_PATH="build/macosx/x86_64/release/crossdesk" # 可执行文件路径 EXECUTABLE_PATH="build/macosx/x86_64/release/crossdesk" # 可执行文件路径
APP_VERSION="0.0.1" APP_VERSION="$1"
PLATFORM="macos" PLATFORM="macos"
ARCH="x86_64" ARCH="x86_64"
IDENTIFIER="cn.crossdesk.app" IDENTIFIER="cn.crossdesk.app"
@@ -20,8 +20,8 @@ CONTENTS_DIR="${APP_BUNDLE}/Contents"
MACOS_DIR="${CONTENTS_DIR}/MacOS" MACOS_DIR="${CONTENTS_DIR}/MacOS"
RESOURCES_DIR="${CONTENTS_DIR}/Resources" RESOURCES_DIR="${CONTENTS_DIR}/Resources"
PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.pkg" # 保持安装包名称小写 PKG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.pkg" # 保持安装包名称小写
DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-v${APP_VERSION}.dmg" DMG_NAME="${APP_NAME}-${PLATFORM}-${ARCH}-${APP_VERSION}.dmg"
VOL_NAME="Install ${APP_NAME_UPPER}" VOL_NAME="Install ${APP_NAME_UPPER}"
# === 清理旧文件 === # === 清理旧文件 ===

View File

@@ -3,7 +3,7 @@
; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E5B3A3> ; <20><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E5B3A3>
!define PRODUCT_NAME "CrossDesk" !define PRODUCT_NAME "CrossDesk"
!define PRODUCT_VERSION "0.0.1" !define PRODUCT_VERSION "${VERSION}"
!define PRODUCT_PUBLISHER "CrossDesk" !define PRODUCT_PUBLISHER "CrossDesk"
!define PRODUCT_WEB_SITE "https://www.crossdesk.cn/" !define PRODUCT_WEB_SITE "https://www.crossdesk.cn/"
!define APP_NAME "CrossDesk" !define APP_NAME "CrossDesk"
@@ -33,7 +33,7 @@ RequestExecutionLevel admin
; ------ MUI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------ ; ------ MUI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "CrossDesk-${PRODUCT_VERSION}.exe" OutFile "crossdesk-win-x86_64-${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\CrossDesk" InstallDir "$PROGRAMFILES\CrossDesk"
ShowInstDetails show ShowInstDetails show