From 28bec7e993c1e850dc07c49b3390d8edc40d9b7e Mon Sep 17 00:00:00 2001 From: Daniele Debernardi Date: Mon, 18 May 2026 22:05:15 +0200 Subject: [PATCH 1/3] test --- .github/workflows/release.yml | 484 +++++++++++++++++----------------- docker-compose.yml | 23 +- 2 files changed, 269 insertions(+), 238 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 55a5841..b46d958 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,230 +7,230 @@ on: workflow_dispatch: jobs: - build_artifacts: - runs-on: windows-latest - steps: - - uses: actions/checkout@v6 - - name: Setup .NET - uses: actions/setup-dotnet@v5 - with: - dotnet-version: '10.0.2xx' - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22' - cache: 'yarn' - cache-dependency-path: | - SQLSchemaCompare/yarn.lock - SQLSchemaCompare.UI/yarn.lock - - - name: Restore win-x64 dependencies - run: dotnet restore --locked-mode -r win-x64 - - name: Build win-x64 - run: dotnet build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release - - name: Publish win-x64 - run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release - - name: Upload win-x64 artifacts - uses: actions/upload-artifact@v7 - with: - name: publish-win - path: .publish - if-no-files-found: 'error' - include-hidden-files: true - - - name: Restore linux-x64 dependencies - run: dotnet restore --locked-mode -r linux-x64 - - name: Build linux-x64 - run: dotnet build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release - - name: Publish linux-x64 - run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release - - name: Upload linux-x64 artifacts - uses: actions/upload-artifact@v7 - with: - name: publish-linux - path: .publish - if-no-files-found: 'error' - include-hidden-files: true - - - name: Restore osx-x64 dependencies - run: dotnet restore --locked-mode -r osx-x64 - - name: Build osx-x64 - run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release - - name: Publish osx-x64 - run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release - - name: Upload osx-x64 artifacts - uses: actions/upload-artifact@v7 - with: - name: publish-osx-x64 - path: .publish - if-no-files-found: 'error' - include-hidden-files: true - - - name: Restore osx-arm64 dependencies - run: dotnet restore --locked-mode -r osx-arm64 - - name: Build osx-arm64 - run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release - - name: Publish osx-arm64 - run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release - - name: Upload osx-arm64 artifacts - uses: actions/upload-artifact@v7 - with: - name: publish-osx-arm64 - path: .publish - if-no-files-found: 'error' - include-hidden-files: true - - installer_win_x64: - runs-on: windows-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v6 - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22' - cache: 'yarn' - cache-dependency-path: | - SQLSchemaCompare/yarn.lock - SQLSchemaCompare.UI/yarn.lock - - name: Download publish-win artifact - uses: actions/download-artifact@v8 - with: - name: publish-win - path: .publish - - name: Create installer - run: yarn dist-win-x64 - working-directory: SQLSchemaCompare - - name: Upload installer to release - if: github.event_name == 'push' - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.exe - tag: ${{ github.ref }} - - name: Upload installer to artifacts - if: github.event_name == 'workflow_dispatch' - uses: actions/upload-artifact@v7 - with: - name: installer-win-x64 - path: installer/*.exe - retention-days: 7 - if-no-files-found: 'error' - - installer_linux_x64: - runs-on: ubuntu-latest - needs: build_artifacts - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v6 - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22' - cache: 'yarn' - cache-dependency-path: | - SQLSchemaCompare/yarn.lock - SQLSchemaCompare.UI/yarn.lock - - name: Download publish-linux artifact - uses: actions/download-artifact@v8 - with: - name: publish-linux - path: .publish - - name: Prepare artifacts - run: | - 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 - if: github.event_name == 'push' - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.{deb,rpm,tar.gz} - tag: ${{ github.ref }} - - name: Upload installer to artifacts - if: github.event_name == 'workflow_dispatch' - uses: actions/upload-artifact@v7 - with: - name: installer-linux-x64 - path: | - installer/*.deb - installer/*.rpm - installer/*.tar.gz - retention-days: 7 - if-no-files-found: 'error' - - installer_osx: - runs-on: macos-latest - needs: build_artifacts - strategy: - matrix: - arch: [x64, arm64] - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v6 - - name: Setup Node.js - uses: actions/setup-node@v6 - with: - node-version: '22' - cache: 'yarn' - cache-dependency-path: | - SQLSchemaCompare/yarn.lock - SQLSchemaCompare.UI/yarn.lock - - name: Download publish-osx-${{ matrix.arch }} artifact - uses: actions/download-artifact@v8 - with: - name: publish-osx-${{ matrix.arch }} - path: .publish - - name: Prepare artifacts - run: | - chmod +x .publish/TiCodeX.SQLSchemaCompare.UI - chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI - - name: Create installer - run: yarn dist-osx - working-directory: SQLSchemaCompare - env: - ARCH_SUFFIX: ${{ matrix.arch }} - - name: Upload installer to release - if: github.event_name == 'push' - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file_glob: true - file: installer/*.dmg - tag: ${{ github.ref }} - - name: Upload installer to artifacts - if: github.event_name == 'workflow_dispatch' - uses: actions/upload-artifact@v7 - with: - name: installer-osx-${{ matrix.arch }} - path: installer/*.dmg - retention-days: 7 - if-no-files-found: 'error' - - 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: | - publish-win - publish-linux - publish-osx-x64 - publish-osx-arm64 +# build_artifacts: +# runs-on: windows-latest +# steps: +# - uses: actions/checkout@v6 +# - name: Setup .NET +# uses: actions/setup-dotnet@v5 +# with: +# dotnet-version: '10.0.2xx' +# - name: Setup Node.js +# uses: actions/setup-node@v6 +# with: +# node-version: '22' +# cache: 'yarn' +# cache-dependency-path: | +# SQLSchemaCompare/yarn.lock +# SQLSchemaCompare.UI/yarn.lock +# +# - name: Restore win-x64 dependencies +# run: dotnet restore --locked-mode -r win-x64 +# - name: Build win-x64 +# run: dotnet build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release +# - name: Publish win-x64 +# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release +# - name: Upload win-x64 artifacts +# uses: actions/upload-artifact@v7 +# with: +# name: publish-win +# path: .publish +# if-no-files-found: 'error' +# include-hidden-files: true +# +# - name: Restore linux-x64 dependencies +# run: dotnet restore --locked-mode -r linux-x64 +# - name: Build linux-x64 +# run: dotnet build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release +# - name: Publish linux-x64 +# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release +# - name: Upload linux-x64 artifacts +# uses: actions/upload-artifact@v7 +# with: +# name: publish-linux +# path: .publish +# if-no-files-found: 'error' +# include-hidden-files: true +# +# - name: Restore osx-x64 dependencies +# run: dotnet restore --locked-mode -r osx-x64 +# - name: Build osx-x64 +# run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release +# - name: Publish osx-x64 +# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release +# - name: Upload osx-x64 artifacts +# uses: actions/upload-artifact@v7 +# with: +# name: publish-osx-x64 +# path: .publish +# if-no-files-found: 'error' +# include-hidden-files: true +# +# - name: Restore osx-arm64 dependencies +# run: dotnet restore --locked-mode -r osx-arm64 +# - name: Build osx-arm64 +# run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release +# - name: Publish osx-arm64 +# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release +# - name: Upload osx-arm64 artifacts +# uses: actions/upload-artifact@v7 +# with: +# name: publish-osx-arm64 +# path: .publish +# if-no-files-found: 'error' +# include-hidden-files: true +# +# installer_win_x64: +# runs-on: windows-latest +# needs: build_artifacts +# defaults: +# run: +# shell: bash +# steps: +# - uses: actions/checkout@v6 +# - name: Setup Node.js +# uses: actions/setup-node@v6 +# with: +# node-version: '22' +# cache: 'yarn' +# cache-dependency-path: | +# SQLSchemaCompare/yarn.lock +# SQLSchemaCompare.UI/yarn.lock +# - name: Download publish-win artifact +# uses: actions/download-artifact@v8 +# with: +# name: publish-win +# path: .publish +# - name: Create installer +# run: yarn dist-win-x64 +# working-directory: SQLSchemaCompare +# - name: Upload installer to release +# if: github.event_name == 'push' +# uses: svenstaro/upload-release-action@v2 +# with: +# repo_token: ${{ secrets.GITHUB_TOKEN }} +# file_glob: true +# file: installer/*.exe +# tag: ${{ github.ref }} +# - name: Upload installer to artifacts +# if: github.event_name == 'workflow_dispatch' +# uses: actions/upload-artifact@v7 +# with: +# name: installer-win-x64 +# path: installer/*.exe +# retention-days: 7 +# if-no-files-found: 'error' +# +# installer_linux_x64: +# runs-on: ubuntu-latest +# needs: build_artifacts +# defaults: +# run: +# shell: bash +# steps: +# - uses: actions/checkout@v6 +# - name: Setup Node.js +# uses: actions/setup-node@v6 +# with: +# node-version: '22' +# cache: 'yarn' +# cache-dependency-path: | +# SQLSchemaCompare/yarn.lock +# SQLSchemaCompare.UI/yarn.lock +# - name: Download publish-linux artifact +# uses: actions/download-artifact@v8 +# with: +# name: publish-linux +# path: .publish +# - name: Prepare artifacts +# run: | +# 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 +# if: github.event_name == 'push' +# uses: svenstaro/upload-release-action@v2 +# with: +# repo_token: ${{ secrets.GITHUB_TOKEN }} +# file_glob: true +# file: installer/*.{deb,rpm,tar.gz} +# tag: ${{ github.ref }} +# - name: Upload installer to artifacts +# if: github.event_name == 'workflow_dispatch' +# uses: actions/upload-artifact@v7 +# with: +# name: installer-linux-x64 +# path: | +# installer/*.deb +# installer/*.rpm +# installer/*.tar.gz +# retention-days: 7 +# if-no-files-found: 'error' +# +# installer_osx: +# runs-on: macos-latest +# needs: build_artifacts +# strategy: +# matrix: +# arch: [x64, arm64] +# defaults: +# run: +# shell: bash +# steps: +# - uses: actions/checkout@v6 +# - name: Setup Node.js +# uses: actions/setup-node@v6 +# with: +# node-version: '22' +# cache: 'yarn' +# cache-dependency-path: | +# SQLSchemaCompare/yarn.lock +# SQLSchemaCompare.UI/yarn.lock +# - name: Download publish-osx-${{ matrix.arch }} artifact +# uses: actions/download-artifact@v8 +# with: +# name: publish-osx-${{ matrix.arch }} +# path: .publish +# - name: Prepare artifacts +# run: | +# chmod +x .publish/TiCodeX.SQLSchemaCompare.UI +# chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI +# - name: Create installer +# run: yarn dist-osx +# working-directory: SQLSchemaCompare +# env: +# ARCH_SUFFIX: ${{ matrix.arch }} +# - name: Upload installer to release +# if: github.event_name == 'push' +# uses: svenstaro/upload-release-action@v2 +# with: +# repo_token: ${{ secrets.GITHUB_TOKEN }} +# file_glob: true +# file: installer/*.dmg +# tag: ${{ github.ref }} +# - name: Upload installer to artifacts +# if: github.event_name == 'workflow_dispatch' +# uses: actions/upload-artifact@v7 +# with: +# name: installer-osx-${{ matrix.arch }} +# path: installer/*.dmg +# retention-days: 7 +# if-no-files-found: 'error' +# +# 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: | +# publish-win +# publish-linux +# publish-osx-x64 +# publish-osx-arm64 docker_image: runs-on: ubuntu-latest @@ -240,15 +240,24 @@ jobs: id: meta uses: docker/metadata-action@v6 with: - images: ${{ vars.DOCKERHUB_USERNAME }}/sqlschemacompare + images: | + ${{ vars.DOCKERHUB_USERNAME }}/sqlschemacompare + ghcr.io/${{ github.repository }} tags: | - type=semver,pattern={{version}} + type=semver,pattern={{version}},value=1.0.0-test - name: Login to Docker Hub - if: github.event_name == 'push' +# if: github.event_name == 'push' uses: docker/login-action@v4 with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Login to GitHub Container Registry +# if: github.event_name == 'push' + uses: docker/login-action@v4 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Build and push @@ -258,13 +267,14 @@ jobs: file: ./SQLSchemaCompare.CLI/Dockerfile tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - push: ${{ github.event_name == 'push' }} - outputs: ${{ github.event_name == 'workflow_dispatch' && 'type=docker,dest=/tmp/docker.tar' || '' }} - - name: Upload docker to artifacts - if: github.event_name == 'workflow_dispatch' - uses: actions/upload-artifact@v7 - with: - name: docker - path: /tmp/docker.tar - retention-days: 7 - if-no-files-found: 'error' +# push: ${{ github.event_name == 'push' }} + push: true +# outputs: ${{ github.event_name == 'workflow_dispatch' && 'type=docker,dest=/tmp/docker.tar' || '' }} +# - name: Upload docker to artifacts +# if: github.event_name == 'workflow_dispatch' +# uses: actions/upload-artifact@v7 +# with: +# name: docker +# path: /tmp/docker.tar +# retention-days: 7 +# if-no-files-found: 'error' diff --git a/docker-compose.yml b/docker-compose.yml index aa9dfda..7a59a89 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -47,6 +47,8 @@ services: command: - | set -e + expected=$(printf "ALTER TABLE [business].[staff] ADD [last_name] [varchar](45) NOT NULL\nGO") + projectFile=$(mktemp) { echo '' @@ -69,7 +71,6 @@ services: /app/TiCodeX.SQLSchemaCompare.CLI -p $$projectFile -o $$outputFile output=$(cat $$outputFile) - expected=$(printf "ALTER TABLE [business].[staff] ADD [last_name] [varchar](45) NOT NULL\nGO") if [ "$$output" != "$$expected" ]; then echo "Output does not match expected" @@ -79,3 +80,23 @@ services: printf "%s" "$$output" | hexdump -C exit 1 fi + + outputFile=$(mktemp) + + /app/TiCodeX.SQLSchemaCompare.CLI \ + --type MicrosoftSql \ + --source 'Server=mssql;Database=sakila_source;User ID=sa;Password=Test1234!;TrustServerCertificate=True;' \ + --target 'Server=mssql;Database=sakila_target;User ID=sa;Password=Test1234!;TrustServerCertificate=True;' \ + -o $$outputFile + + output=$(cat $$outputFile) + + if [ "$$output" != "$$expected" ]; then + echo "Output does not match expected" + echo "Expected:" + printf "%s" "$$expected" | hexdump -C + echo "Actual:" + printf "%s" "$$output" | hexdump -C + exit 1 + fi + From a3b39fa0587a48fe65351209ca0c0700bb562e1d Mon Sep 17 00:00:00 2001 From: Daniele Debernardi Date: Mon, 18 May 2026 22:27:13 +0200 Subject: [PATCH 2/3] x --- .github/workflows/release.yml | 478 +++++++++++++++++----------------- 1 file changed, 240 insertions(+), 238 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b46d958..0e4345d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,230 +7,230 @@ on: workflow_dispatch: jobs: -# build_artifacts: -# runs-on: windows-latest -# steps: -# - uses: actions/checkout@v6 -# - name: Setup .NET -# uses: actions/setup-dotnet@v5 -# with: -# dotnet-version: '10.0.2xx' -# - name: Setup Node.js -# uses: actions/setup-node@v6 -# with: -# node-version: '22' -# cache: 'yarn' -# cache-dependency-path: | -# SQLSchemaCompare/yarn.lock -# SQLSchemaCompare.UI/yarn.lock -# -# - name: Restore win-x64 dependencies -# run: dotnet restore --locked-mode -r win-x64 -# - name: Build win-x64 -# run: dotnet build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release -# - name: Publish win-x64 -# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release -# - name: Upload win-x64 artifacts -# uses: actions/upload-artifact@v7 -# with: -# name: publish-win -# path: .publish -# if-no-files-found: 'error' -# include-hidden-files: true -# -# - name: Restore linux-x64 dependencies -# run: dotnet restore --locked-mode -r linux-x64 -# - name: Build linux-x64 -# run: dotnet build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release -# - name: Publish linux-x64 -# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release -# - name: Upload linux-x64 artifacts -# uses: actions/upload-artifact@v7 -# with: -# name: publish-linux -# path: .publish -# if-no-files-found: 'error' -# include-hidden-files: true -# -# - name: Restore osx-x64 dependencies -# run: dotnet restore --locked-mode -r osx-x64 -# - name: Build osx-x64 -# run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release -# - name: Publish osx-x64 -# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release -# - name: Upload osx-x64 artifacts -# uses: actions/upload-artifact@v7 -# with: -# name: publish-osx-x64 -# path: .publish -# if-no-files-found: 'error' -# include-hidden-files: true -# -# - name: Restore osx-arm64 dependencies -# run: dotnet restore --locked-mode -r osx-arm64 -# - name: Build osx-arm64 -# run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release -# - name: Publish osx-arm64 -# run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release -# - name: Upload osx-arm64 artifacts -# uses: actions/upload-artifact@v7 -# with: -# name: publish-osx-arm64 -# path: .publish -# if-no-files-found: 'error' -# include-hidden-files: true -# -# installer_win_x64: -# runs-on: windows-latest -# needs: build_artifacts -# defaults: -# run: -# shell: bash -# steps: -# - uses: actions/checkout@v6 -# - name: Setup Node.js -# uses: actions/setup-node@v6 -# with: -# node-version: '22' -# cache: 'yarn' -# cache-dependency-path: | -# SQLSchemaCompare/yarn.lock -# SQLSchemaCompare.UI/yarn.lock -# - name: Download publish-win artifact -# uses: actions/download-artifact@v8 -# with: -# name: publish-win -# path: .publish -# - name: Create installer -# run: yarn dist-win-x64 -# working-directory: SQLSchemaCompare -# - name: Upload installer to release -# if: github.event_name == 'push' -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file_glob: true -# file: installer/*.exe -# tag: ${{ github.ref }} -# - name: Upload installer to artifacts -# if: github.event_name == 'workflow_dispatch' -# uses: actions/upload-artifact@v7 -# with: -# name: installer-win-x64 -# path: installer/*.exe -# retention-days: 7 -# if-no-files-found: 'error' -# -# installer_linux_x64: -# runs-on: ubuntu-latest -# needs: build_artifacts -# defaults: -# run: -# shell: bash -# steps: -# - uses: actions/checkout@v6 -# - name: Setup Node.js -# uses: actions/setup-node@v6 -# with: -# node-version: '22' -# cache: 'yarn' -# cache-dependency-path: | -# SQLSchemaCompare/yarn.lock -# SQLSchemaCompare.UI/yarn.lock -# - name: Download publish-linux artifact -# uses: actions/download-artifact@v8 -# with: -# name: publish-linux -# path: .publish -# - name: Prepare artifacts -# run: | -# 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 -# if: github.event_name == 'push' -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file_glob: true -# file: installer/*.{deb,rpm,tar.gz} -# tag: ${{ github.ref }} -# - name: Upload installer to artifacts -# if: github.event_name == 'workflow_dispatch' -# uses: actions/upload-artifact@v7 -# with: -# name: installer-linux-x64 -# path: | -# installer/*.deb -# installer/*.rpm -# installer/*.tar.gz -# retention-days: 7 -# if-no-files-found: 'error' -# -# installer_osx: -# runs-on: macos-latest -# needs: build_artifacts -# strategy: -# matrix: -# arch: [x64, arm64] -# defaults: -# run: -# shell: bash -# steps: -# - uses: actions/checkout@v6 -# - name: Setup Node.js -# uses: actions/setup-node@v6 -# with: -# node-version: '22' -# cache: 'yarn' -# cache-dependency-path: | -# SQLSchemaCompare/yarn.lock -# SQLSchemaCompare.UI/yarn.lock -# - name: Download publish-osx-${{ matrix.arch }} artifact -# uses: actions/download-artifact@v8 -# with: -# name: publish-osx-${{ matrix.arch }} -# path: .publish -# - name: Prepare artifacts -# run: | -# chmod +x .publish/TiCodeX.SQLSchemaCompare.UI -# chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI -# - name: Create installer -# run: yarn dist-osx -# working-directory: SQLSchemaCompare -# env: -# ARCH_SUFFIX: ${{ matrix.arch }} -# - name: Upload installer to release -# if: github.event_name == 'push' -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file_glob: true -# file: installer/*.dmg -# tag: ${{ github.ref }} -# - name: Upload installer to artifacts -# if: github.event_name == 'workflow_dispatch' -# uses: actions/upload-artifact@v7 -# with: -# name: installer-osx-${{ matrix.arch }} -# path: installer/*.dmg -# retention-days: 7 -# if-no-files-found: 'error' -# -# 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: | -# publish-win -# publish-linux -# publish-osx-x64 -# publish-osx-arm64 + build_artifacts: + runs-on: windows-latest + steps: + - uses: actions/checkout@v6 + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: '10.0.2xx' + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '22' + cache: 'yarn' + cache-dependency-path: | + SQLSchemaCompare/yarn.lock + SQLSchemaCompare.UI/yarn.lock + + - name: Restore win-x64 dependencies + run: dotnet restore --locked-mode -r win-x64 + - name: Build win-x64 + run: dotnet build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release + - name: Publish win-x64 + run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r win-x64 -c Release + - name: Upload win-x64 artifacts + uses: actions/upload-artifact@v7 + with: + name: publish-win + path: .publish + if-no-files-found: 'error' + include-hidden-files: true + + - name: Restore linux-x64 dependencies + run: dotnet restore --locked-mode -r linux-x64 + - name: Build linux-x64 + run: dotnet build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release + - name: Publish linux-x64 + run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r linux-x64 -c Release + - name: Upload linux-x64 artifacts + uses: actions/upload-artifact@v7 + with: + name: publish-linux + path: .publish + if-no-files-found: 'error' + include-hidden-files: true + + - name: Restore osx-x64 dependencies + run: dotnet restore --locked-mode -r osx-x64 + - name: Build osx-x64 + run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release + - name: Publish osx-x64 + run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-x64 -c Release + - name: Upload osx-x64 artifacts + uses: actions/upload-artifact@v7 + with: + name: publish-osx-x64 + path: .publish + if-no-files-found: 'error' + include-hidden-files: true + + - name: Restore osx-arm64 dependencies + run: dotnet restore --locked-mode -r osx-arm64 + - name: Build osx-arm64 + run: dotnet build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release + - name: Publish osx-arm64 + run: dotnet publish --no-build --no-restore SQLSchemaCompare.UI -r osx-arm64 -c Release + - name: Upload osx-arm64 artifacts + uses: actions/upload-artifact@v7 + with: + name: publish-osx-arm64 + path: .publish + if-no-files-found: 'error' + include-hidden-files: true + + installer_win_x64: + runs-on: windows-latest + needs: build_artifacts + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v6 + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '22' + cache: 'yarn' + cache-dependency-path: | + SQLSchemaCompare/yarn.lock + SQLSchemaCompare.UI/yarn.lock + - name: Download publish-win artifact + uses: actions/download-artifact@v8 + with: + name: publish-win + path: .publish + - name: Create installer + run: yarn dist-win-x64 + working-directory: SQLSchemaCompare + - name: Upload installer to release + if: github.event_name == 'push' + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.exe + tag: ${{ github.ref }} + - name: Upload installer to artifacts + if: github.event_name == 'workflow_dispatch' + uses: actions/upload-artifact@v7 + with: + name: installer-win-x64 + path: installer/*.exe + retention-days: 7 + if-no-files-found: 'error' + + installer_linux_x64: + runs-on: ubuntu-latest + needs: build_artifacts + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v6 + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '22' + cache: 'yarn' + cache-dependency-path: | + SQLSchemaCompare/yarn.lock + SQLSchemaCompare.UI/yarn.lock + - name: Download publish-linux artifact + uses: actions/download-artifact@v8 + with: + name: publish-linux + path: .publish + - name: Prepare artifacts + run: | + 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 + if: github.event_name == 'push' + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.{deb,rpm,tar.gz} + tag: ${{ github.ref }} + - name: Upload installer to artifacts + if: github.event_name == 'workflow_dispatch' + uses: actions/upload-artifact@v7 + with: + name: installer-linux-x64 + path: | + installer/*.deb + installer/*.rpm + installer/*.tar.gz + retention-days: 7 + if-no-files-found: 'error' + + installer_osx: + runs-on: macos-latest + needs: build_artifacts + strategy: + matrix: + arch: [x64, arm64] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v6 + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: '22' + cache: 'yarn' + cache-dependency-path: | + SQLSchemaCompare/yarn.lock + SQLSchemaCompare.UI/yarn.lock + - name: Download publish-osx-${{ matrix.arch }} artifact + uses: actions/download-artifact@v8 + with: + name: publish-osx-${{ matrix.arch }} + path: .publish + - name: Prepare artifacts + run: | + chmod +x .publish/TiCodeX.SQLSchemaCompare.UI + chmod +x .publish/TiCodeX.SQLSchemaCompare.CLI + - name: Create installer + run: yarn dist-osx + working-directory: SQLSchemaCompare + env: + ARCH_SUFFIX: ${{ matrix.arch }} + - name: Upload installer to release + if: github.event_name == 'push' + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file_glob: true + file: installer/*.dmg + tag: ${{ github.ref }} + - name: Upload installer to artifacts + if: github.event_name == 'workflow_dispatch' + uses: actions/upload-artifact@v7 + with: + name: installer-osx-${{ matrix.arch }} + path: installer/*.dmg + retention-days: 7 + if-no-files-found: 'error' + + 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: | + publish-win + publish-linux + publish-osx-x64 + publish-osx-arm64 docker_image: runs-on: ubuntu-latest @@ -244,20 +244,22 @@ jobs: ${{ vars.DOCKERHUB_USERNAME }}/sqlschemacompare ghcr.io/${{ github.repository }} tags: | - type=semver,pattern={{version}},value=1.0.0-test + type=semver,pattern={{version}} - name: Login to Docker Hub -# if: github.event_name == 'push' + if: github.event_name == 'push' uses: docker/login-action@v4 with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry -# if: github.event_name == 'push' + if: github.event_name == 'push' uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Build and push @@ -265,16 +267,16 @@ jobs: with: context: . file: ./SQLSchemaCompare.CLI/Dockerfile + platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} -# push: ${{ github.event_name == 'push' }} - push: true -# outputs: ${{ github.event_name == 'workflow_dispatch' && 'type=docker,dest=/tmp/docker.tar' || '' }} -# - name: Upload docker to artifacts -# if: github.event_name == 'workflow_dispatch' -# uses: actions/upload-artifact@v7 -# with: -# name: docker -# path: /tmp/docker.tar -# retention-days: 7 -# if-no-files-found: 'error' + push: ${{ github.event_name == 'push' }} + outputs: ${{ github.event_name == 'workflow_dispatch' && 'type=docker,dest=/tmp/docker.tar' || '' }} + - name: Upload docker to artifacts + if: github.event_name == 'workflow_dispatch' + uses: actions/upload-artifact@v7 + with: + name: docker + path: /tmp/docker.tar + retention-days: 7 + if-no-files-found: 'error' From f1e1b6a6114c276ff59d9aa4610413885aff4d59 Mon Sep 17 00:00:00 2001 From: Daniele Debernardi Date: Mon, 18 May 2026 22:36:32 +0200 Subject: [PATCH 3/3] new version --- Directory.Build.props | 2 +- SQLSchemaCompare.CLI/packages.lock.json | 4 ++-- SQLSchemaCompare.Infrastructure/packages.lock.json | 2 +- SQLSchemaCompare.Test/packages.lock.json | 4 ++-- SQLSchemaCompare.UI/packages.lock.json | 4 ++-- SQLSchemaCompare/package.json | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index bd1673a..34deef1 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -4,7 +4,7 @@ SQL Schema Compare https://github.com/TiCodeX/SQLSchemaCompare TiCodeX - 2026.3.1 + 2026.5.1 true true enable diff --git a/SQLSchemaCompare.CLI/packages.lock.json b/SQLSchemaCompare.CLI/packages.lock.json index c362069..be855e6 100644 --- a/SQLSchemaCompare.CLI/packages.lock.json +++ b/SQLSchemaCompare.CLI/packages.lock.json @@ -415,7 +415,7 @@ "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.7, )", "Microting.EntityFrameworkCore.MySql": "[10.0.7, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "TiCodeX.SQLSchemaCompare.Services": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Services": "[2026.5.1, )" } }, "TiCodeX.SQLSchemaCompare.Services": { @@ -424,7 +424,7 @@ "Microsoft.AspNet.WebApi.Client": "[6.0.0, )", "Microsoft.Extensions.Logging.Abstractions": "[10.0.7, )", "Newtonsoft.Json": "[13.0.4, )", - "TiCodeX.SQLSchemaCompare.Core": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )" } } }, diff --git a/SQLSchemaCompare.Infrastructure/packages.lock.json b/SQLSchemaCompare.Infrastructure/packages.lock.json index 6e6c046..f8f1de5 100644 --- a/SQLSchemaCompare.Infrastructure/packages.lock.json +++ b/SQLSchemaCompare.Infrastructure/packages.lock.json @@ -385,7 +385,7 @@ "Microsoft.AspNet.WebApi.Client": "[6.0.0, )", "Microsoft.Extensions.Logging.Abstractions": "[10.0.7, )", "Newtonsoft.Json": "[13.0.4, )", - "TiCodeX.SQLSchemaCompare.Core": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )" } } } diff --git a/SQLSchemaCompare.Test/packages.lock.json b/SQLSchemaCompare.Test/packages.lock.json index 9017bf6..35ffeed 100644 --- a/SQLSchemaCompare.Test/packages.lock.json +++ b/SQLSchemaCompare.Test/packages.lock.json @@ -785,7 +785,7 @@ "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.7, )", "Microting.EntityFrameworkCore.MySql": "[10.0.7, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "TiCodeX.SQLSchemaCompare.Services": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Services": "[2026.5.1, )" } }, "TiCodeX.SQLSchemaCompare.Services": { @@ -794,7 +794,7 @@ "Microsoft.AspNet.WebApi.Client": "[6.0.0, )", "Microsoft.Extensions.Logging.Abstractions": "[10.0.7, )", "Newtonsoft.Json": "[13.0.4, )", - "TiCodeX.SQLSchemaCompare.Core": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )" } } } diff --git a/SQLSchemaCompare.UI/packages.lock.json b/SQLSchemaCompare.UI/packages.lock.json index 9cd88e5..fb39255 100644 --- a/SQLSchemaCompare.UI/packages.lock.json +++ b/SQLSchemaCompare.UI/packages.lock.json @@ -340,7 +340,7 @@ "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.7, )", "Microting.EntityFrameworkCore.MySql": "[10.0.7, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.1, )", - "TiCodeX.SQLSchemaCompare.Services": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Services": "[2026.5.1, )" } }, "TiCodeX.SQLSchemaCompare.Services": { @@ -348,7 +348,7 @@ "dependencies": { "Microsoft.AspNet.WebApi.Client": "[6.0.0, )", "Newtonsoft.Json": "[13.0.4, )", - "TiCodeX.SQLSchemaCompare.Core": "[2026.3.1, )" + "TiCodeX.SQLSchemaCompare.Core": "[2026.5.1, )" } } }, diff --git a/SQLSchemaCompare/package.json b/SQLSchemaCompare/package.json index 139bd2a..9dae9ac 100644 --- a/SQLSchemaCompare/package.json +++ b/SQLSchemaCompare/package.json @@ -1,6 +1,6 @@ { "name": "sqlschemacompare", - "version": "2026.3.1", + "version": "2026.5.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",