Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native ARM64 builds and release updates #179

Open
wants to merge 34 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
dde1e71
Adding ARM builds
philnach Mar 4, 2025
7bc4d85
remove matrix define
philnach Mar 4, 2025
6093da2
Switch to runtime for output
philnach Mar 4, 2025
f16abfe
try a different action name
philnach Mar 4, 2025
c3f844d
use tar for linux
philnach Mar 4, 2025
08ce787
add quote around !startwith
philnach Mar 5, 2025
ff79771
trying with wrapped
philnach Mar 5, 2025
3e9f865
true the !=
philnach Mar 5, 2025
01f398e
trying to debug tar
philnach Mar 5, 2025
fb4e3a9
Try adding a slash
philnach Mar 5, 2025
d6196d9
Add verbose logging
philnach Mar 5, 2025
7ce4cd1
Try different paths
philnach Mar 5, 2025
90f7488
Actually tell tar what to archive
philnach Mar 6, 2025
7dc4c67
fix pathing
philnach Mar 6, 2025
8c243b7
Create directory
philnach Mar 6, 2025
bdcfcbb
Add to readme
philnach Mar 8, 2025
7010316
Modify release to have ARM
philnach Mar 9, 2025
0a86752
add package to name
philnach Mar 9, 2025
a5a725a
fix release
philnach Mar 10, 2025
2605e9a
Add .zip
philnach Mar 11, 2025
da62e2f
Reduce
philnach Mar 11, 2025
f856089
add matrix
philnach Mar 11, 2025
03bb439
fix end of file issue
philnach Mar 15, 2025
a615f2d
correct if statement for sh not bash
philnach Mar 15, 2025
1baacad
remove == which isn't supported in sh
philnach Mar 15, 2025
507b439
remove my comments
philnach Mar 15, 2025
6ac1098
Merge branch 'main' into armBuilds
philnach Mar 20, 2025
78fb34a
Move package to release section
philnach Mar 20, 2025
a2abac9
Switch to tar for linux
philnach Mar 20, 2025
46b56e1
rename folders to historical context
philnach Mar 20, 2025
5edbaa9
Actually compress the right folder
philnach Mar 20, 2025
1ccbbcc
include the runtime in the step
philnach Mar 20, 2025
2b7209e
add the release tag to the final step
philnach Mar 20, 2025
fd8b0f9
Update README.md
philnach Mar 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions .github/actions/build-with-plugins/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ runs:
dotnet publish \
Core/Cosmos.DataTransfer.Core/Cosmos.DataTransfer.Core.csproj \
--configuration Release \
--output ${{ inputs.platform-short }} \
--output ${{ inputs.runtime }} \
--self-contained true \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=true \
Expand All @@ -37,7 +37,7 @@ runs:
dotnet publish \
Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/Cosmos.DataTransfer.CosmosExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -52,7 +52,7 @@ runs:
dotnet publish \
Extensions/Json/Cosmos.DataTransfer.JsonExtension/Cosmos.DataTransfer.JsonExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -67,7 +67,7 @@ runs:
dotnet publish \
Extensions/AzureTableAPI/Cosmos.DataTransfer.AzureTableAPIExtension/Cosmos.DataTransfer.AzureTableAPIExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -82,7 +82,7 @@ runs:
dotnet publish \
Extensions/Mongo/Cosmos.DataTransfer.MongoExtension/Cosmos.DataTransfer.MongoExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -97,7 +97,7 @@ runs:
dotnet publish \
Extensions/SqlServer/Cosmos.DataTransfer.SqlServerExtension/Cosmos.DataTransfer.SqlServerExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -112,7 +112,7 @@ runs:
dotnet publish \
Extensions/Parquet/Cosmos.DataTransfer.ParquetExtension/Cosmos.DataTransfer.ParquetExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -127,7 +127,7 @@ runs:
dotnet publish \
Extensions/CognitiveSearch/Cosmos.DataTransfer.CognitiveSearchExtension/Cosmos.DataTransfer.CognitiveSearchExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -142,7 +142,7 @@ runs:
dotnet publish \
Extensions/Csv/Cosmos.DataTransfer.CsvExtension/Cosmos.DataTransfer.CsvExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -157,7 +157,7 @@ runs:
dotnet publish \
Extensions/PostgreSQL/Cosmos.DataTransfer.PostgresqlExtension.csproj \
--configuration Release \
--output ${{ inputs.platform-short }}/Extensions \
--output ${{ inputs.runtime }}/Extensions \
--self-contained false \
--runtime ${{ inputs.runtime }} \
-p:PublishSingleFile=false \
Expand All @@ -169,5 +169,5 @@ runs:
- name: Upload package
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.platform }}-package
path: ${{ inputs.platform-short }}/
name: ${{ inputs.runtime }}-package
path: ${{ inputs.runtime }}
49 changes: 28 additions & 21 deletions .github/workflows/internal-test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,39 @@ jobs:
name: Build self-contained executables
runs-on: ubuntu-latest
container: mcr.microsoft.com/dotnet/sdk:8.0
strategy:
matrix:
include:
- platform: windows
platform-short: win
runtime: win-x64
- platform: windows
platform-short: win
runtime: win-arm64
- platform: mac
platform-short: mac
runtime: osx-x64
- platform: mac
platform-short: mac
runtime: osx-arm64
- platform: linux
platform-short: linux
runtime: linux-x64
- platform: linux
platform-short: linux
runtime: linux-arm64
steps:
- name: Check .NET version
run: dotnet --version
- name: Checkout source code
uses: actions/checkout@v3
- name: Execute Action build-with-plugins for Windows
- name: Execute Action build-with-plugins
uses: ./.github/actions/build-with-plugins
id: build-with-plugins-win
with:
platform: windows
platform-short: win
runtime: win-x64
build-version: 0.0.${{ github.run_number }}
- name: Execute Action build-with-plugins for MacOS
uses: ./.github/actions/build-with-plugins
id: build-with-plugins-mac
with:
platform: mac
platform-short: mac
runtime: osx-x64
build-version: 0.0.${{ github.run_number }}
- name: Execute Action build-with-plugins for Linux
uses: ./.github/actions/build-with-plugins
id: build-with-plugins-linux
with:
platform: linux
platform-short: linux
runtime: linux-x64
platform: ${{ matrix.platform }}
platform-short: ${{ matrix.platform-short }}
runtime: ${{ matrix.runtime }}
build-version: 0.0.${{ github.run_number }}
env:
PLATFORM: ${{ matrix.platform }}
RUNTIME: ${{ matrix.runtime }}
113 changes: 61 additions & 52 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,72 +5,81 @@ on:
release-tag:
description: 'Version number to build and release'
required: true

jobs:
github-release:
build-package:
name: Build self-contained executables
runs-on: ubuntu-latest
container: mcr.microsoft.com/dotnet/sdk:8.0
strategy:
matrix:
include:
- platform: windows
platform-short: win
runtime: win-x64
- platform: windows
platform-short: win
runtime: win-arm64
- platform: mac
platform-short: mac
runtime: osx-x64
- platform: mac
platform-short: mac
runtime: osx-arm64
- platform: linux
platform-short: linux
runtime: linux-x64
- platform: linux
platform-short: linux
runtime: linux-arm64
steps:
- name: Check .NET version
run: dotnet --version
- name: Checkout source code
uses: actions/checkout@v3
- name: Execute Action build-with-plugins ${{ matrix.runtime }}
uses: ./.github/actions/build-with-plugins
with:
platform: ${{ matrix.platform }}
platform-short: ${{ matrix.platform-short }}
runtime: ${{ matrix.runtime }}
build-version: ${{ inputs.release-tag }}

create-release:
name: Create GitHub release
runs-on: ubuntu-latest
needs: build-package
permissions:
contents: write
steps:
- name: Download Windows x64 package
uses: actions/download-artifact@v4
with:
name: windows-package
path: windows-package
- name: Download macOS x64 package
uses: actions/download-artifact@v4
with:
name: mac-package
path: mac-package
- name: Download Linux x64 package
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
name: linux-package
path: linux-package
path: .
- name: Package output files
run: |
zip -r dmt-${{ inputs.release-tag }}-win-x64.zip windows-package/*
zip -r dmt-${{ inputs.release-tag }}-mac-x64.zip mac-package/*
zip -r dmt-${{ inputs.release-tag }}-linux-x64.zip linux-package/*
- name: Create GitHub release
zip -r dmt-${{ inputs.release-tag }}-win-x64.zip win-x64-package/*
zip -r dmt-${{ inputs.release-tag }}-win-arm64.zip win-arm64-package/*

# rename from osx to mac to retain previous naming convention
mv osx-x64-package mac-x64-package
zip -r dmt-${{ inputs.release-tag }}-mac-x64.zip mac-x64-package/*

# rename from osx to mac to retain previous naming convention
mv osx-arm64-package mac-arm64-package
zip -r dmt-${{ inputs.release-tag }}-mac-arm64.zip mac-arm64-package/*

# create linux packages using tar as supposed to zip. tar is more common for linux packages
tar -czvf dmt-${{ inputs.release-tag }}-linux-x64.tar.gz linux-x64-package/*
tar -czvf dmt-${{ inputs.release-tag }}-linux-arm64.tar.gz linux-arm64-package/*
- name: Create GitHub release ${{ inputs.release-tag }}
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ inputs.release-tag }}
files: |
dmt-${{ inputs.release-tag }}-win-x64.zip
dmt-${{ inputs.release-tag }}-win-arm64.zip
dmt-${{ inputs.release-tag }}-mac-x64.zip
dmt-${{ inputs.release-tag }}-linux-x64.zip
build-package:
name: Build self-contained executables
runs-on: ubuntu-latest
container: mcr.microsoft.com/dotnet/sdk:8.0
steps:
- name: Check .NET version
run: dotnet --version
- name: Checkout source code
uses: actions/checkout@v3
- name: Execute Action build-with-plugins for Windows
uses: ./.github/actions/build-with-plugins
id: build-with-plugins-win
with:
platform: windows
platform-short: win
runtime: win-x64
build-version: ${{ inputs.release-tag }}
- name: Execute Action build-with-plugins for MacOS
uses: ./.github/actions/build-with-plugins
id: build-with-plugins-mac
with:
platform: mac
platform-short: mac
runtime: osx-x64
build-version: ${{ inputs.release-tag }}
- name: Execute Action build-with-plugins for Linux
uses: ./.github/actions/build-with-plugins
id: build-with-plugins-linux
with:
platform: linux
platform-short: linux
runtime: linux-x64
build-version: ${{ inputs.release-tag }}
dmt-${{ inputs.release-tag }}-mac-arm64.zip
dmt-${{ inputs.release-tag }}-linux-x64.tar.gz
dmt-${{ inputs.release-tag }}-linux-arm64.tar.gz
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ The Azure Cosmos DB Desktop Data Migration Tool is an open-source project contai

## Quick Installation

To use the tool, download the latest zip file for your platform (win-x64, mac-x64, or linux-x64) from [Releases](https://github.com/AzureCosmosDB/data-migration-desktop-tool/releases) and extract all files to your desired install location. To begin a data transfer operation, first populate the `migrationsettings.json` file with appropriate settings for your data source and sink (see [detailed instructions](#using-the-command-line) below or [review examples](ExampleConfigs.md)), and then run the application from a command line: `dmt.exe` on Windows or `dmt` on other platforms.
To use the tool, download the latest archive file for your platform (win-x64, win-arm64, mac-x64, mac-arm64, linux-x64, linux-arm64) from [Releases](https://github.com/AzureCosmosDB/data-migration-desktop-tool/releases) and extract all files to your desired install location. To begin a data transfer operation, first populate the `migrationsettings.json` file with appropriate settings for your data source and sink (see [detailed instructions](#using-the-command-line) below or [review examples](ExampleConfigs.md)), and then run the application from a command line: `dmt.exe` on Windows or `dmt` on other platforms.

If using RBAC (Role Based Access Control) (migrate-passwordless)[https://learn.microsoft.com/azure/cosmos-db/nosql/migrate-passwordless?tabs=sign-in-azure-cli%2Cdotnet%2Cazure-portal-create%2Cazure-portal-associate%2Capp-service-identity] ensure you are authenticated with Azure see (Troubleshoot Azure Identity authentication issues
)[https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/TROUBLESHOOTING.md] One common way to authenticate is using the Azure CLI (How to install the Azure CLI)[https://learn.microsoft.com/cli/azure/install-azure-cli] and `az login`

## Extension documentation

Expand Down Expand Up @@ -204,6 +207,14 @@ This tutorial outlines how to use the Azure Cosmos DB Desktop Data Migration Too

> **Note**: Before you run the tool on macOS, you'll need to follow Apple's instructions on how to [Open a Mac app from an unidentified developer](https://support.apple.com/guide/mac-help/open-a-mac-app-from-an-unidentified-developer-mh40616/mac).

**Using Linux**

```bash
./dmt
```

> **Note**: Use the `--settings` option with a file path to specify a different settings file (overriding the default **migrationsettings.json** file). This facilitates automating running of different migration jobs in a programmatic loop.

## Creating Extensions

1. Decide what type of extension you want to create. There are 3 different types of extensions and each of those can be implemented to read data, write data, or both.
Expand Down
Loading