diff --git a/.github/actions/build-with-plugins/action.yml b/.github/actions/build-with-plugins/action.yml index d093ca1..05c4f02 100644 --- a/.github/actions/build-with-plugins/action.yml +++ b/.github/actions/build-with-plugins/action.yml @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 \ @@ -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 }} \ No newline at end of file diff --git a/.github/workflows/internal-test-build.yml b/.github/workflows/internal-test-build.yml index eb7d173..d68fbaa 100644 --- a/.github/workflows/internal-test-build.yml +++ b/.github/workflows/internal-test-build.yml @@ -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 }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 57a64da..5347a6f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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 \ No newline at end of file diff --git a/README.md b/README.md index fa16276..4b84ee7 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,9 @@ 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 Multiple extensions are provided in this repository. Find the documentation for the usage and configuration of each using the links provided: @@ -204,6 +205,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.