From eae1e83a630affbf284c074ed408093c85a88922 Mon Sep 17 00:00:00 2001 From: luke Date: Thu, 15 Jan 2026 16:22:32 +0100 Subject: [PATCH 1/2] Add macOS ARM64 (Apple Silicon) support --- .github/workflows/release.yml | 393 +++++++++--------- .../SQLSchemaCompare.UI.csproj | 2 +- SQLSchemaCompare/package.json | 268 ++++++------ 3 files changed, 341 insertions(+), 322 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5d3e2b5..7c60e73 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,187 +1,206 @@ -name: Release - -on: - push: - tags: - - 'v*.*.*' - -jobs: - build_artifacts: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v2 - - - name: Restore win-x64 dependencies - run: dotnet restore -r win-x64 - - name: Build win-x64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=win-x64 - - name: Publish win-x64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r win-x64 - working-directory: SQLSchemaCompare.UI - - name: Upload SQLSchemaCompare artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Upload win-x64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-win - path: .publish - - - name: Restore linux-x64 dependencies - run: dotnet restore -r linux-x64 - - name: Build linux-x64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=linux-x64 - - name: Publish linux-x64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r linux-x64 - working-directory: SQLSchemaCompare.UI - - name: Upload linux-x64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-linux - path: .publish - - - name: Restore osx-x64 dependencies - run: dotnet restore -r osx-x64 - - name: Build osx-x64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-x64 - - name: Publish osx-x64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-x64 - working-directory: SQLSchemaCompare.UI - - name: Upload osx-x64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-osx - path: .publish - - installer_win_x64: - runs-on: windows-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Download SQLSchemaCompare artifact - uses: actions/download-artifact@v4 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Download publish-win artifact - uses: actions/download-artifact@v4 - with: - name: publish-win - path: .publish - - name: Create installer - run: yarn dist-win-x64 - working-directory: SQLSchemaCompare - - name: Upload installer to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.exe - tag: ${{ github.ref }} - - installer_linux_x64: - runs-on: ubuntu-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Download SQLSchemaCompare artifact - uses: actions/download-artifact@v4 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Download publish-linux artifact - uses: actions/download-artifact@v4 - with: - name: publish-linux - path: .publish - - name: Prepare artifacts - run: | - chmod -R a+rwx SQLSchemaCompare/node_modules - chmod +x .publish/TiCodeX.SQLSchemaCompare.UI - chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI - - name: Create installer - run: yarn dist-linux-x64 - working-directory: SQLSchemaCompare - - name: Upload installer to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.{deb,rpm,tar.gz} - tag: ${{ github.ref }} - - installer_osx_x64: - runs-on: macos-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Download SQLSchemaCompare artifact - uses: actions/download-artifact@v4 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Download publish-osx artifact - uses: actions/download-artifact@v4 - with: - name: publish-osx - path: .publish - - name: Prepare artifacts - run: | - chmod -R a+rwx SQLSchemaCompare/node_modules - chmod +x .publish/TiCodeX.SQLSchemaCompare.UI - chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI - cd SQLSchemaCompare - yarn install --frozen-lockfile - - name: Create installer - run: yarn dist-osx-x64 - working-directory: SQLSchemaCompare - - name: Upload installer to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.dmg - tag: ${{ github.ref }} - - clean_artifacts: - runs-on: windows-latest - if: always() - needs: [installer_win_x64, installer_linux_x64, installer_osx_x64] - steps: - - uses: geekyeggo/delete-artifact@v5 - with: - name: | - SQLSchemaCompare - publish-win - publish-linux - publish-osx +name: Release + +on: + push: + tags: + - 'v*.*.*' + +jobs: + build_artifacts: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: Restore win-x64 dependencies + run: dotnet restore -r win-x64 + - name: Build win-x64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=win-x64 + - name: Publish win-x64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r win-x64 + working-directory: SQLSchemaCompare.UI + - name: Upload SQLSchemaCompare artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Upload win-x64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-win + path: .publish + + - name: Restore linux-x64 dependencies + run: dotnet restore -r linux-x64 + - name: Build linux-x64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=linux-x64 + - name: Publish linux-x64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r linux-x64 + working-directory: SQLSchemaCompare.UI + - name: Upload linux-x64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-linux + path: .publish + + - name: Restore osx-x64 dependencies + run: dotnet restore -r osx-x64 + - name: Build osx-x64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-x64 + - name: Publish osx-x64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-x64 + working-directory: SQLSchemaCompare.UI + - name: Upload osx-x64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-osx-x64 + path: .publish + + - name: Restore osx-arm64 dependencies + run: dotnet restore -r osx-arm64 + - name: Build osx-arm64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-arm64 + - name: Publish osx-arm64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-arm64 + working-directory: SQLSchemaCompare.UI + - name: Upload osx-arm64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-osx-arm64 + path: .publish + + installer_win_x64: + runs-on: windows-latest + needs: build_artifacts + defaults: + run: + shell: bash + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Download SQLSchemaCompare artifact + uses: actions/download-artifact@v4 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Download publish-win artifact + uses: actions/download-artifact@v4 + with: + name: publish-win + path: .publish + - name: Create installer + run: yarn dist-win-x64 + working-directory: SQLSchemaCompare + - name: Upload installer to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.exe + tag: ${{ github.ref }} + + installer_linux_x64: + runs-on: ubuntu-latest + needs: build_artifacts + defaults: + run: + shell: bash + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Download SQLSchemaCompare artifact + uses: actions/download-artifact@v4 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Download publish-linux artifact + uses: actions/download-artifact@v4 + with: + name: publish-linux + path: .publish + - name: Prepare artifacts + run: | + chmod -R a+rwx SQLSchemaCompare/node_modules + chmod +x .publish/TiCodeX.SQLSchemaCompare.UI + chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI + - name: Create installer + run: yarn dist-linux-x64 + working-directory: SQLSchemaCompare + - name: Upload installer to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.{deb,rpm,tar.gz} + tag: ${{ github.ref }} + + installer_osx: + runs-on: macos-latest + needs: build_artifacts + strategy: + matrix: + arch: [x64, arm64] + defaults: + run: + shell: bash + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Download SQLSchemaCompare artifact + uses: actions/download-artifact@v4 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Download publish-osx-${{ matrix.arch }} artifact + uses: actions/download-artifact@v4 + with: + name: publish-osx-${{ matrix.arch }} + path: .publish + - name: Prepare artifacts + run: | + chmod -R a+rwx SQLSchemaCompare/node_modules + chmod +x .publish/TiCodeX.SQLSchemaCompare.UI + chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI + cd SQLSchemaCompare + yarn install --frozen-lockfile + - name: Create installer + run: yarn dist-osx + working-directory: SQLSchemaCompare + env: + ARCH_SUFFIX: ${{ matrix.arch }} + - name: Upload installer to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.dmg + tag: ${{ github.ref }} + + clean_artifacts: + runs-on: windows-latest + if: always() + needs: [installer_win_x64, installer_linux_x64, installer_osx] + steps: + - uses: geekyeggo/delete-artifact@v5 + with: + name: | + SQLSchemaCompare + publish-win + publish-linux + publish-osx-x64 + publish-osx-arm64 diff --git a/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj b/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj index a6b6b93..744de27 100644 --- a/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj +++ b/SQLSchemaCompare.UI/SQLSchemaCompare.UI.csproj @@ -4,7 +4,7 @@ TiCodeX.SQLSchemaCompare.UI latest Exe - win-x64;linux-x64;osx-x64 + win-x64;linux-x64;osx-x64;osx-arm64 ..\.publish true diff --git a/SQLSchemaCompare/package.json b/SQLSchemaCompare/package.json index 4104148..6731bb4 100644 --- a/SQLSchemaCompare/package.json +++ b/SQLSchemaCompare/package.json @@ -1,134 +1,134 @@ -{ - "name": "sqlschemacompare", - "version": "2025.12.1", - "license": "GPL-3.0-only", - "description": "The Swiss Army Knife of Database Schema Comparison for Microsoft SQL, mySQL and PostgreSQL which runs on Windows, Linux and macOS systems.", - "main": "app.js", - "homepage": "https://github.com/TiCodeX/SQLSchemaCompare", - "author": { - "name": "TiCodeX", - "email": "ticodex@protonmail.com" - }, - "private": true, - "build": { - "appId": "ch.ticodex.sqlschemacompare", - "productName": "SQL Schema Compare", - "copyright": "Copyright @ 2025 TiCodeX", - "win": { - "target": "nsis", - "artifactName": "SQLSchemaCompare-${version}.${ext}", - "publish": { - "provider": "generic", - "url": "" - }, - "fileAssociations": [ - { - "ext": "tcxsc", - "name": "TCXSC" - } - ] - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": true, - "runAfterFinish": true, - "installerHeader": "installerHeader.bmp", - "installerSidebar": "installerSidebar.bmp", - "uninstallerSidebar": "installerSidebar.bmp", - "include": "installer.nsh" - }, - "linux": { - "target": [ - "deb", - "rpm", - "tar.gz" - ], - "category": "Utility", - "synopsis": "The Swiss Army Knife of Database Schema Comparison", - "executableName": "SQLSchemaCompare", - "artifactName": "SQLSchemaCompare-${version}.${ext}", - "publish": { - "provider": "generic", - "url": "" - } - }, - "mac": { - "target": "default", - "category": "public.app-category.productivity", - "artifactName": "SQLSchemaCompare-${version}.${ext}", - "publish": { - "provider": "generic", - "url": "" - } - }, - "files": [ - "!app.ts", - "!*.njsproj", - "!*.njsproj.user", - "!tsconfig.json", - "!bin", - "!obj", - "!build", - "font/*", - "img/*", - "splash.html", - "app.js" - ], - "extraFiles": [ - { - "from": "../.publish", - "to": "bin", - "filter": [ - "**/*" - ] - }, - { - "from": "../", - "filter": [ - "LICENSE" - ] - } - ], - "directories": { - "output": "../installer" - } - }, - "scripts": { - "preclean": "yarn install --frozen-lockfile", - "clean": "shx rm -f app.js app.js.map", - "prelint": "yarn clean", - "lint": "eslint . --cache", - "lint-vs": "yarn lint --quiet --format visualstudio", - "prebuild": "yarn lint", - "build": "tsc --build", - "prebuild-vs": "yarn lint-vs", - "build-vs": "yarn build", - "start": "electron .", - "dist-win-x64": "electron-builder --win --publish always", - "dist-linux-x64": "electron-builder --linux --publish always", - "dist-osx-x64": "electron-builder --mac --publish always" - }, - "postinstall": "electron-builder install-app-deps", - "devDependencies": { - "@eslint/js": "^9.39.2", - "@tsconfig/recommended": "^1.0.13", - "@tsconfig/strictest": "^2.0.8", - "electron": "^39.2.7", - "electron-builder": "^26.0.12", - "eslint": "^9.39.2", - "eslint-formatter-visualstudio": "^9.0.1", - "eslint-plugin-only-error": "^1.0.2", - "eslint-plugin-sonarjs": "^3.0.5", - "eslint-plugin-unicorn": "^62.0.0", - "shx": "^0.4.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.50.0" - }, - "dependencies": { - "@electron/remote": "^2.1.3", - "detect-port": "^2.1.0", - "electron-window-state": "^5.0.3", - "glob": "^13.0.0", - "log4js": "^6.1.0" - } -} +{ + "name": "sqlschemacompare", + "version": "2025.12.1", + "license": "GPL-3.0-only", + "description": "The Swiss Army Knife of Database Schema Comparison for Microsoft SQL, mySQL and PostgreSQL which runs on Windows, Linux and macOS systems.", + "main": "app.js", + "homepage": "https://github.com/TiCodeX/SQLSchemaCompare", + "author": { + "name": "TiCodeX", + "email": "ticodex@protonmail.com" + }, + "private": true, + "build": { + "appId": "ch.ticodex.sqlschemacompare", + "productName": "SQL Schema Compare", + "copyright": "Copyright @ 2025 TiCodeX", + "win": { + "target": "nsis", + "artifactName": "SQLSchemaCompare-${version}.${ext}", + "publish": { + "provider": "generic", + "url": "" + }, + "fileAssociations": [ + { + "ext": "tcxsc", + "name": "TCXSC" + } + ] + }, + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true, + "runAfterFinish": true, + "installerHeader": "installerHeader.bmp", + "installerSidebar": "installerSidebar.bmp", + "uninstallerSidebar": "installerSidebar.bmp", + "include": "installer.nsh" + }, + "linux": { + "target": [ + "deb", + "rpm", + "tar.gz" + ], + "category": "Utility", + "synopsis": "The Swiss Army Knife of Database Schema Comparison", + "executableName": "SQLSchemaCompare", + "artifactName": "SQLSchemaCompare-${version}.${ext}", + "publish": { + "provider": "generic", + "url": "" + } + }, + "mac": { + "target": "default", + "category": "public.app-category.productivity", + "artifactName": "SQLSchemaCompare-${version}-${env.ARCH_SUFFIX}.${ext}", + "publish": { + "provider": "generic", + "url": "" + } + }, + "files": [ + "!app.ts", + "!*.njsproj", + "!*.njsproj.user", + "!tsconfig.json", + "!bin", + "!obj", + "!build", + "font/*", + "img/*", + "splash.html", + "app.js" + ], + "extraFiles": [ + { + "from": "../.publish", + "to": "bin", + "filter": [ + "**/*" + ] + }, + { + "from": "../", + "filter": [ + "LICENSE" + ] + } + ], + "directories": { + "output": "../installer" + } + }, + "scripts": { + "preclean": "yarn install --frozen-lockfile", + "clean": "shx rm -f app.js app.js.map", + "prelint": "yarn clean", + "lint": "eslint . --cache", + "lint-vs": "yarn lint --quiet --format visualstudio", + "prebuild": "yarn lint", + "build": "tsc --build", + "prebuild-vs": "yarn lint-vs", + "build-vs": "yarn build", + "start": "electron .", + "dist-win-x64": "electron-builder --win --publish always", + "dist-linux-x64": "electron-builder --linux --publish always", + "dist-osx": "electron-builder --mac --publish always" + }, + "postinstall": "electron-builder install-app-deps", + "devDependencies": { + "@eslint/js": "^9.39.2", + "@tsconfig/recommended": "^1.0.13", + "@tsconfig/strictest": "^2.0.8", + "electron": "^39.2.7", + "electron-builder": "^26.0.12", + "eslint": "^9.39.2", + "eslint-formatter-visualstudio": "^9.0.1", + "eslint-plugin-only-error": "^1.0.2", + "eslint-plugin-sonarjs": "^3.0.5", + "eslint-plugin-unicorn": "^62.0.0", + "shx": "^0.4.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.50.0" + }, + "dependencies": { + "@electron/remote": "^2.1.3", + "detect-port": "^2.1.0", + "electron-window-state": "^5.0.3", + "glob": "^13.0.0", + "log4js": "^6.1.0" + } +} From ad0b6729e32fa385f768b516a3e8faf4e2f070a8 Mon Sep 17 00:00:00 2001 From: luke Date: Thu, 15 Jan 2026 17:34:51 +0100 Subject: [PATCH 2/2] Restore line endings --- .github/workflows/release.yml | 412 +++++++++++++++++----------------- SQLSchemaCompare/package.json | 268 +++++++++++----------- 2 files changed, 340 insertions(+), 340 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c60e73..35743a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,206 +1,206 @@ -name: Release - -on: - push: - tags: - - 'v*.*.*' - -jobs: - build_artifacts: - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v2 - - - name: Restore win-x64 dependencies - run: dotnet restore -r win-x64 - - name: Build win-x64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=win-x64 - - name: Publish win-x64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r win-x64 - working-directory: SQLSchemaCompare.UI - - name: Upload SQLSchemaCompare artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Upload win-x64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-win - path: .publish - - - name: Restore linux-x64 dependencies - run: dotnet restore -r linux-x64 - - name: Build linux-x64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=linux-x64 - - name: Publish linux-x64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r linux-x64 - working-directory: SQLSchemaCompare.UI - - name: Upload linux-x64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-linux - path: .publish - - - name: Restore osx-x64 dependencies - run: dotnet restore -r osx-x64 - - name: Build osx-x64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-x64 - - name: Publish osx-x64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-x64 - working-directory: SQLSchemaCompare.UI - - name: Upload osx-x64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-osx-x64 - path: .publish - - - name: Restore osx-arm64 dependencies - run: dotnet restore -r osx-arm64 - - name: Build osx-arm64 - run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-arm64 - - name: Publish osx-arm64 - run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-arm64 - working-directory: SQLSchemaCompare.UI - - name: Upload osx-arm64 artifacts - uses: actions/upload-artifact@v4.3.5 - with: - name: publish-osx-arm64 - path: .publish - - installer_win_x64: - runs-on: windows-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Download SQLSchemaCompare artifact - uses: actions/download-artifact@v4 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Download publish-win artifact - uses: actions/download-artifact@v4 - with: - name: publish-win - path: .publish - - name: Create installer - run: yarn dist-win-x64 - working-directory: SQLSchemaCompare - - name: Upload installer to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.exe - tag: ${{ github.ref }} - - installer_linux_x64: - runs-on: ubuntu-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Download SQLSchemaCompare artifact - uses: actions/download-artifact@v4 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Download publish-linux artifact - uses: actions/download-artifact@v4 - with: - name: publish-linux - path: .publish - - name: Prepare artifacts - run: | - chmod -R a+rwx SQLSchemaCompare/node_modules - chmod +x .publish/TiCodeX.SQLSchemaCompare.UI - chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI - - name: Create installer - run: yarn dist-linux-x64 - working-directory: SQLSchemaCompare - - name: Upload installer to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.{deb,rpm,tar.gz} - tag: ${{ github.ref }} - - installer_osx: - runs-on: macos-latest - needs: build_artifacts - strategy: - matrix: - arch: [x64, arm64] - defaults: - run: - shell: bash - steps: - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 22 - - name: Download SQLSchemaCompare artifact - uses: actions/download-artifact@v4 - with: - name: SQLSchemaCompare - path: SQLSchemaCompare - - name: Download publish-osx-${{ matrix.arch }} artifact - uses: actions/download-artifact@v4 - with: - name: publish-osx-${{ matrix.arch }} - path: .publish - - name: Prepare artifacts - run: | - chmod -R a+rwx SQLSchemaCompare/node_modules - chmod +x .publish/TiCodeX.SQLSchemaCompare.UI - chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI - cd SQLSchemaCompare - yarn install --frozen-lockfile - - name: Create installer - run: yarn dist-osx - working-directory: SQLSchemaCompare - env: - ARCH_SUFFIX: ${{ matrix.arch }} - - name: Upload installer to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.dmg - tag: ${{ github.ref }} - - clean_artifacts: - runs-on: windows-latest - if: always() - needs: [installer_win_x64, installer_linux_x64, installer_osx] - steps: - - uses: geekyeggo/delete-artifact@v5 - with: - name: | - SQLSchemaCompare - publish-win - publish-linux - publish-osx-x64 - publish-osx-arm64 +name: Release + +on: + push: + tags: + - 'v*.*.*' + +jobs: + build_artifacts: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: Restore win-x64 dependencies + run: dotnet restore -r win-x64 + - name: Build win-x64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=win-x64 + - name: Publish win-x64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r win-x64 + working-directory: SQLSchemaCompare.UI + - name: Upload SQLSchemaCompare artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Upload win-x64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-win + path: .publish + + - name: Restore linux-x64 dependencies + run: dotnet restore -r linux-x64 + - name: Build linux-x64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=linux-x64 + - name: Publish linux-x64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r linux-x64 + working-directory: SQLSchemaCompare.UI + - name: Upload linux-x64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-linux + path: .publish + + - name: Restore osx-x64 dependencies + run: dotnet restore -r osx-x64 + - name: Build osx-x64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-x64 + - name: Publish osx-x64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-x64 + working-directory: SQLSchemaCompare.UI + - name: Upload osx-x64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-osx-x64 + path: .publish + + - name: Restore osx-arm64 dependencies + run: dotnet restore -r osx-arm64 + - name: Build osx-arm64 + run: msbuild SQLSchemaCompare.sln /p:Configuration=Release /p:RuntimeIdentifier=osx-arm64 + - name: Publish osx-arm64 + run: dotnet publish SQLSchemaCompare.UI.csproj --no-build --no-restore -c Release -r osx-arm64 + working-directory: SQLSchemaCompare.UI + - name: Upload osx-arm64 artifacts + uses: actions/upload-artifact@v4.3.5 + with: + name: publish-osx-arm64 + path: .publish + + installer_win_x64: + runs-on: windows-latest + needs: build_artifacts + defaults: + run: + shell: bash + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Download SQLSchemaCompare artifact + uses: actions/download-artifact@v4 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Download publish-win artifact + uses: actions/download-artifact@v4 + with: + name: publish-win + path: .publish + - name: Create installer + run: yarn dist-win-x64 + working-directory: SQLSchemaCompare + - name: Upload installer to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.exe + tag: ${{ github.ref }} + + installer_linux_x64: + runs-on: ubuntu-latest + needs: build_artifacts + defaults: + run: + shell: bash + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Download SQLSchemaCompare artifact + uses: actions/download-artifact@v4 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Download publish-linux artifact + uses: actions/download-artifact@v4 + with: + name: publish-linux + path: .publish + - name: Prepare artifacts + run: | + chmod -R a+rwx SQLSchemaCompare/node_modules + chmod +x .publish/TiCodeX.SQLSchemaCompare.UI + chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI + - name: Create installer + run: yarn dist-linux-x64 + working-directory: SQLSchemaCompare + - name: Upload installer to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.{deb,rpm,tar.gz} + tag: ${{ github.ref }} + + installer_osx: + runs-on: macos-latest + needs: build_artifacts + strategy: + matrix: + arch: [x64, arm64] + defaults: + run: + shell: bash + steps: + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + - name: Download SQLSchemaCompare artifact + uses: actions/download-artifact@v4 + with: + name: SQLSchemaCompare + path: SQLSchemaCompare + - name: Download publish-osx-${{ matrix.arch }} artifact + uses: actions/download-artifact@v4 + with: + name: publish-osx-${{ matrix.arch }} + path: .publish + - name: Prepare artifacts + run: | + chmod -R a+rwx SQLSchemaCompare/node_modules + chmod +x .publish/TiCodeX.SQLSchemaCompare.UI + chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI + cd SQLSchemaCompare + yarn install --frozen-lockfile + - name: Create installer + run: yarn dist-osx + working-directory: SQLSchemaCompare + env: + ARCH_SUFFIX: ${{ matrix.arch }} + - name: Upload installer to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.dmg + tag: ${{ github.ref }} + + clean_artifacts: + runs-on: windows-latest + if: always() + needs: [installer_win_x64, installer_linux_x64, installer_osx] + steps: + - uses: geekyeggo/delete-artifact@v5 + with: + name: | + SQLSchemaCompare + publish-win + publish-linux + publish-osx-x64 + publish-osx-arm64 diff --git a/SQLSchemaCompare/package.json b/SQLSchemaCompare/package.json index 6731bb4..06f6789 100644 --- a/SQLSchemaCompare/package.json +++ b/SQLSchemaCompare/package.json @@ -1,134 +1,134 @@ -{ - "name": "sqlschemacompare", - "version": "2025.12.1", - "license": "GPL-3.0-only", - "description": "The Swiss Army Knife of Database Schema Comparison for Microsoft SQL, mySQL and PostgreSQL which runs on Windows, Linux and macOS systems.", - "main": "app.js", - "homepage": "https://github.com/TiCodeX/SQLSchemaCompare", - "author": { - "name": "TiCodeX", - "email": "ticodex@protonmail.com" - }, - "private": true, - "build": { - "appId": "ch.ticodex.sqlschemacompare", - "productName": "SQL Schema Compare", - "copyright": "Copyright @ 2025 TiCodeX", - "win": { - "target": "nsis", - "artifactName": "SQLSchemaCompare-${version}.${ext}", - "publish": { - "provider": "generic", - "url": "" - }, - "fileAssociations": [ - { - "ext": "tcxsc", - "name": "TCXSC" - } - ] - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": true, - "runAfterFinish": true, - "installerHeader": "installerHeader.bmp", - "installerSidebar": "installerSidebar.bmp", - "uninstallerSidebar": "installerSidebar.bmp", - "include": "installer.nsh" - }, - "linux": { - "target": [ - "deb", - "rpm", - "tar.gz" - ], - "category": "Utility", - "synopsis": "The Swiss Army Knife of Database Schema Comparison", - "executableName": "SQLSchemaCompare", - "artifactName": "SQLSchemaCompare-${version}.${ext}", - "publish": { - "provider": "generic", - "url": "" - } - }, - "mac": { - "target": "default", - "category": "public.app-category.productivity", - "artifactName": "SQLSchemaCompare-${version}-${env.ARCH_SUFFIX}.${ext}", - "publish": { - "provider": "generic", - "url": "" - } - }, - "files": [ - "!app.ts", - "!*.njsproj", - "!*.njsproj.user", - "!tsconfig.json", - "!bin", - "!obj", - "!build", - "font/*", - "img/*", - "splash.html", - "app.js" - ], - "extraFiles": [ - { - "from": "../.publish", - "to": "bin", - "filter": [ - "**/*" - ] - }, - { - "from": "../", - "filter": [ - "LICENSE" - ] - } - ], - "directories": { - "output": "../installer" - } - }, - "scripts": { - "preclean": "yarn install --frozen-lockfile", - "clean": "shx rm -f app.js app.js.map", - "prelint": "yarn clean", - "lint": "eslint . --cache", - "lint-vs": "yarn lint --quiet --format visualstudio", - "prebuild": "yarn lint", - "build": "tsc --build", - "prebuild-vs": "yarn lint-vs", - "build-vs": "yarn build", - "start": "electron .", - "dist-win-x64": "electron-builder --win --publish always", - "dist-linux-x64": "electron-builder --linux --publish always", - "dist-osx": "electron-builder --mac --publish always" - }, - "postinstall": "electron-builder install-app-deps", - "devDependencies": { - "@eslint/js": "^9.39.2", - "@tsconfig/recommended": "^1.0.13", - "@tsconfig/strictest": "^2.0.8", - "electron": "^39.2.7", - "electron-builder": "^26.0.12", - "eslint": "^9.39.2", - "eslint-formatter-visualstudio": "^9.0.1", - "eslint-plugin-only-error": "^1.0.2", - "eslint-plugin-sonarjs": "^3.0.5", - "eslint-plugin-unicorn": "^62.0.0", - "shx": "^0.4.0", - "typescript": "^5.9.3", - "typescript-eslint": "^8.50.0" - }, - "dependencies": { - "@electron/remote": "^2.1.3", - "detect-port": "^2.1.0", - "electron-window-state": "^5.0.3", - "glob": "^13.0.0", - "log4js": "^6.1.0" - } -} +{ + "name": "sqlschemacompare", + "version": "2025.12.1", + "license": "GPL-3.0-only", + "description": "The Swiss Army Knife of Database Schema Comparison for Microsoft SQL, mySQL and PostgreSQL which runs on Windows, Linux and macOS systems.", + "main": "app.js", + "homepage": "https://github.com/TiCodeX/SQLSchemaCompare", + "author": { + "name": "TiCodeX", + "email": "ticodex@protonmail.com" + }, + "private": true, + "build": { + "appId": "ch.ticodex.sqlschemacompare", + "productName": "SQL Schema Compare", + "copyright": "Copyright @ 2025 TiCodeX", + "win": { + "target": "nsis", + "artifactName": "SQLSchemaCompare-${version}.${ext}", + "publish": { + "provider": "generic", + "url": "" + }, + "fileAssociations": [ + { + "ext": "tcxsc", + "name": "TCXSC" + } + ] + }, + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true, + "runAfterFinish": true, + "installerHeader": "installerHeader.bmp", + "installerSidebar": "installerSidebar.bmp", + "uninstallerSidebar": "installerSidebar.bmp", + "include": "installer.nsh" + }, + "linux": { + "target": [ + "deb", + "rpm", + "tar.gz" + ], + "category": "Utility", + "synopsis": "The Swiss Army Knife of Database Schema Comparison", + "executableName": "SQLSchemaCompare", + "artifactName": "SQLSchemaCompare-${version}.${ext}", + "publish": { + "provider": "generic", + "url": "" + } + }, + "mac": { + "target": "default", + "category": "public.app-category.productivity", + "artifactName": "SQLSchemaCompare-${version}-${env.ARCH_SUFFIX}.${ext}", + "publish": { + "provider": "generic", + "url": "" + } + }, + "files": [ + "!app.ts", + "!*.njsproj", + "!*.njsproj.user", + "!tsconfig.json", + "!bin", + "!obj", + "!build", + "font/*", + "img/*", + "splash.html", + "app.js" + ], + "extraFiles": [ + { + "from": "../.publish", + "to": "bin", + "filter": [ + "**/*" + ] + }, + { + "from": "../", + "filter": [ + "LICENSE" + ] + } + ], + "directories": { + "output": "../installer" + } + }, + "scripts": { + "preclean": "yarn install --frozen-lockfile", + "clean": "shx rm -f app.js app.js.map", + "prelint": "yarn clean", + "lint": "eslint . --cache", + "lint-vs": "yarn lint --quiet --format visualstudio", + "prebuild": "yarn lint", + "build": "tsc --build", + "prebuild-vs": "yarn lint-vs", + "build-vs": "yarn build", + "start": "electron .", + "dist-win-x64": "electron-builder --win --publish always", + "dist-linux-x64": "electron-builder --linux --publish always", + "dist-osx": "electron-builder --mac --publish always" + }, + "postinstall": "electron-builder install-app-deps", + "devDependencies": { + "@eslint/js": "^9.39.2", + "@tsconfig/recommended": "^1.0.13", + "@tsconfig/strictest": "^2.0.8", + "electron": "^39.2.7", + "electron-builder": "^26.0.12", + "eslint": "^9.39.2", + "eslint-formatter-visualstudio": "^9.0.1", + "eslint-plugin-only-error": "^1.0.2", + "eslint-plugin-sonarjs": "^3.0.5", + "eslint-plugin-unicorn": "^62.0.0", + "shx": "^0.4.0", + "typescript": "^5.9.3", + "typescript-eslint": "^8.50.0" + }, + "dependencies": { + "@electron/remote": "^2.1.3", + "detect-port": "^2.1.0", + "electron-window-state": "^5.0.3", + "glob": "^13.0.0", + "log4js": "^6.1.0" + } +}