diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 55a5841..0e4345d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -240,7 +240,9 @@ 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}}
- name: Login to Docker Hub
@@ -249,6 +251,15 @@ jobs:
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 QEMU
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build and push
@@ -256,6 +267,7 @@ 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' }}
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",
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
+