diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 63784e39..7c678403 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,14 +3,14 @@
"isRoot": true,
"tools": {
"docfx": {
- "version": "2.78.3",
+ "version": "2.78.4",
"commands": [
"docfx"
],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
- "version": "5.4.8",
+ "version": "5.5.1",
"commands": [
"reportgenerator"
],
diff --git a/.editorconfig b/.editorconfig
index 8d9f7541..281847bd 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -7,7 +7,7 @@
]
# File header
-file_header_template = \n Copyright (c) 2025, Salesforce, Inc.\n SPDX-License-Identifier: Apache-2\n \n Licensed under the Apache License, Version 2.0 (the "License") \n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an "AS IS" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n
+file_header_template = \n Copyright (c) 2026, Salesforce, Inc.\n SPDX-License-Identifier: Apache-2\n \n Licensed under the Apache License, Version 2.0 (the "License") \n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an "AS IS" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n
#### Naming styles ####
diff --git a/.github/.secrets.default b/.github/.secrets.default
new file mode 100644
index 00000000..a667d75d
--- /dev/null
+++ b/.github/.secrets.default
@@ -0,0 +1,6 @@
+# This file is used to test github actions locally using act (https://github.com/nektos/act?tab=readme-ov-file)
+# Copy/Paste and rename to .secrets and fill in the values
+# Then use it via act cli or VSCode extension https://sanjulaganepola.github.io/github-local-actions-docs/
+
+NUGET_PUBLISH_API_KEY=
+PYPI_PUBLISH_USER_PASS=
\ No newline at end of file
diff --git a/.github/.vars.default b/.github/.vars.default
new file mode 100644
index 00000000..c08725df
--- /dev/null
+++ b/.github/.vars.default
@@ -0,0 +1,38 @@
+# This file is used to test github actions locally using act (https://github.com/nektos/act?tab=readme-ov-file)
+
+# Github repository scoped variables.
+ACT="true" # Used to let actions know they're being run locally.
+BUILD_CONFIGURATIONS="[\"Release\"]"
+BASE_OS="ubuntu-latest"
+BUILD_OS="[\"ubuntu-latest\"]"
+BUILD_PROJECT="./src/Tableau.Migration/Tableau.Migration.csproj"
+NUGET_PACKAGE_FOLDER="Tableau.Migration"
+PUBLISH_OS="ubuntu-latest"
+DOCS_OS="ubuntu-latest"
+PYTHON_NETPACKAGE_FRAMEWORK="net8.0"
+PYTHON_PUBLISH_DOCS_VERSION="3.11"
+PUBLISH_CONFIGURATION="Release"
+PUBLISH_PACKAGE_OS="ubuntu-latest"
+
+# These are github environment scoped variables.
+# Development
+NUGET_PACKAGE_REPOSITORY="https://artifactory.dev.tableautools.com/artifactory/api/nuget/pqt-tuk/Tableau.Migration"
+PYPI_PUBLISH_USER="svc_cmt"
+NUGET_PUBLISH_USER="svc_cmt"
+PYPI_PACKAGE_REPOSITORY="https://artifactory.dev.tableautools.com/artifactory/api/pypi/tab-pypi-local-tuk/"
+
+# Staging
+#NUGET_PACKAGE_REPOSITORY="https://artifactory.prod.tableautools.com/artifactory/api/nuget/power-tools-nuget-local/Tableau.Migration"
+#PYPI_PUBLISH_USER="svc_cmt"
+NUGET_PUBLISH_USER="svc_cmt"
+#PYPI_PACKAGE_REPOSITORY="https://artifactory.prod.tableautools.com/artifactory/api/pypi/tabpypi"
+
+# Public Test
+# NUGET_PACKAGE_REPOSITORY="https://apiint.nugettest.org/v3/index.json"
+# PYPI_PACKAGE_REPOSITORY="https://test.pypi.org/legacy/"
+# PYPI_PUBLISH_USER="__token__"
+
+# Public Prod
+# NUGET_PACKAGE_REPOSITORY="https://api.nuget.org/v3/index.json"
+# PYPI_PACKAGE_REPOSITORY="https://upload.pypi.org/legacy/"
+# PYPI_PUBLISH_USER="__token__"
\ No newline at end of file
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index d819110a..49f8a0fa 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -19,7 +19,7 @@ jobs:
name: Build Docs (.NET ${{ inputs.dotnet-sdk-version }}) # Updated name
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup .NET environment
- name: Setup .NET ${{ inputs.dotnet-sdk-version }}
@@ -29,7 +29,7 @@ jobs:
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}
@@ -41,7 +41,7 @@ jobs:
# Upload Docs Artifact
- name: Upload Docs Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: docs
path: ./docs
diff --git a/.github/workflows/build-dotnet.yml b/.github/workflows/build-dotnet.yml
index cee9adda..a623f5f2 100644
--- a/.github/workflows/build-dotnet.yml
+++ b/.github/workflows/build-dotnet.yml
@@ -35,7 +35,7 @@ jobs:
## SETUP
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup .NET environment
- name: Setup .NET ${{ inputs.dotnet-sdk-version }}
@@ -45,7 +45,7 @@ jobs:
# Cache NuGet packages based on the lock file and .NET version
- name: Cache NuGet packages
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ inputs.dotnet-sdk-version }}-${{ hashFiles('**/packages.lock.json') }}
@@ -109,17 +109,16 @@ jobs:
# Upload product artifacts
- name: Upload product artifacts for python library
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: product-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: "./src/Python/src/tableau_migration/bin/**"
retention-days: 15 # This is not required to stick around very long as it's not pushed to production.
# Upload test artifacts
- # TODO: [W-18497981: CI/CD Improvements: Python tests should test final package | Work](https://gus.lightning.force.com/lightning/r/ADM_Work__c/a07EE00002EIUwKYAX/view)
- name: Upload Tests Artifacts
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: tests-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: "./dist/tests/**"
@@ -128,7 +127,7 @@ jobs:
# Upload NuGet package artifact
- name: Upload NuGet Artifact
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: nuget-package-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: "./src/${{ vars.NUGET_PACKAGE_FOLDER }}/bin/${{ matrix.config }}/*.nupkg"
@@ -137,7 +136,7 @@ jobs:
# Upload build output for tests
- name: Upload Build Output
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: build-output-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: |
diff --git a/.github/workflows/build-python-package.yml b/.github/workflows/build-python-package.yml
index 9e8be609..1f6500db 100644
--- a/.github/workflows/build-python-package.yml
+++ b/.github/workflows/build-python-package.yml
@@ -30,11 +30,11 @@ jobs:
name: Build Python Package with ${{ inputs.build-config }} configuration
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ vars.PYTHON_TEST_VERSIONS }}
cache: "pip" # caching pip dependencies
@@ -44,11 +44,11 @@ jobs:
shell: pwsh
run: |
python -m pip install --upgrade pip
- python -m pip install hatch
+ python -m pip install hatch click==8.2
# Cache Hatch environments
- name: Cache Hatch environments
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
# Default Hatch env location relative to working-directory.
path: ./.hatch
@@ -58,7 +58,7 @@ jobs:
${{ runner.os }}-py${{ vars.PYTHON_TEST_VERSIONS }}-hatch-
# Download the product artifact
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v7
with:
name: product-${{ inputs.build-config }}-net${{ inputs.dotnet-build-version }}
path: ./src/Python/src/tableau_migration/bin/
@@ -82,7 +82,7 @@ jobs:
# Upload PyPI artifact
- name: Upload Pypi Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: pypi-package-bundle
path: ${{ env.WORKING_DIRECTORY }}/tableau_migration-pypi.zip
@@ -90,7 +90,7 @@ jobs:
# Upload PyPI artifact
- name: Upload Pypi Artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: pypi-package
path: ${{ env.WORKING_DIRECTORY }}/dist/*
diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml
index 10db3618..c71bfb62 100644
--- a/.github/workflows/create-release.yml
+++ b/.github/workflows/create-release.yml
@@ -24,6 +24,10 @@ on:
description: "The github environment that has the variables and secrets"
required: true
type: string
+ dotnet-build-version:
+ description: "The .NET version used for building"
+ required: true
+ type: string
jobs:
create-release:
@@ -34,7 +38,7 @@ jobs:
# Create Release
- name: Create Release
id: create-release
- uses: actions/github-script@v7
+ uses: actions/github-script@v8
env:
RELEASE_VERSION: ${{ inputs.release-version }}
with:
@@ -67,31 +71,31 @@ jobs:
# Download Docs
- name: Download Docs
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: docs
# Download NuGet Package
- name: Download NuGet Package
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
- name: nuget-package
+ name: nuget-package-Release-net${{ inputs.dotnet-build-version }}
# Download PyPI Package
- name: Download PyPI Package
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: pypi-package-bundle
# Generate Bundle
- name: Generate Bundle
run: |
- zip -r bundle.zip ./Tableau.Migration.${{ inputs.release-version }}.nupkg docs.zip tableau_migration-pypi.zip
+ zip -r bundle.zip Tableau.Migration.${{ inputs.release-version }}.nupkg docs.zip tableau_migration-pypi.zip
# Attach Release Artifacts
- name: Attach Artifacts to Github Release
id: upload-docs
- uses: actions/github-script@v7
+ uses: actions/github-script@v8
env:
RELEASE_VERSION: ${{ inputs.release-version }}
RELEASE_ID: ${{ steps.create-release.outputs.result }}
diff --git a/.github/workflows/deploy-all.yml b/.github/workflows/deploy-all.yml
index dcdb1c18..4e458f0d 100644
--- a/.github/workflows/deploy-all.yml
+++ b/.github/workflows/deploy-all.yml
@@ -91,6 +91,7 @@ jobs:
runs-on-config: ${{ vars.PUBLISH_OS }}
release-version: ${{ inputs.release-version }}
publish-environment: ${{ inputs.publish-environment }}
+ dotnet-build-version: ${{ inputs.dotnet-build-version }}
deploy-docs:
name: Deploy Docs
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index b8e1a53f..9dfed6f5 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -32,7 +32,7 @@ jobs:
steps:
# Download Docs
- name: Download Docs
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: docs
path: ./docs
@@ -43,7 +43,7 @@ jobs:
# Upload to GitHub Pages
- name: Upload Github Pages
- uses: actions/upload-pages-artifact@v3.0.1
+ uses: actions/upload-pages-artifact@v4.0.0
with:
path: "./docs"
diff --git a/.github/workflows/deploy-dotnet.yml b/.github/workflows/deploy-dotnet.yml
index 6758ff12..7fc7edf4 100644
--- a/.github/workflows/deploy-dotnet.yml
+++ b/.github/workflows/deploy-dotnet.yml
@@ -53,7 +53,7 @@ jobs:
}
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup .NET environment
- name: Setup .NET
@@ -65,7 +65,7 @@ jobs:
uses: ./.github/actions/setup-dotnet
# Download the NuGet package artifact
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v7
with:
name: nuget-package-Release-net${{ inputs.dotnet-build-version }}
@@ -80,21 +80,15 @@ jobs:
if ("${{ vars.NUGET_PUBLISH_USER }}" -ne "") {
Write-Host "Using username and API key authentication for environment: $publishEnv"
- # Use unique source name based on GitHub run ID
- $uniqueSourceName = "$publishEnv-${{ github.run_id }}"
-
- # Add the NuGet source configuration
+ # Add the NuGet source configuration (ignore if already exists)
dotnet nuget add source ${{ env.NUGET_PACKAGE_REPOSITORY }} `
- --name $uniqueSourceName `
+ --name $publishEnv `
--username ${{ vars.NUGET_PUBLISH_USER }} `
--password ${{ secrets.NUGET_PUBLISH_API_KEY }} `
- --store-password-in-clear-text
-
- # Push the package
- dotnet nuget push Tableau.Migration.*.nupkg -s $uniqueSourceName
+ --store-password-in-clear-text 2>$null
- # Clean up temporary source
- dotnet nuget remove source $uniqueSourceName
+ # Push the package using the configured source
+ dotnet nuget push Tableau.Migration.*.nupkg -s $publishEnv
}
else {
Write-Host "Using API key only authentication for environment: $publishEnv"
diff --git a/.github/workflows/deploy-python.yml b/.github/workflows/deploy-python.yml
index 75700502..73473b65 100644
--- a/.github/workflows/deploy-python.yml
+++ b/.github/workflows/deploy-python.yml
@@ -55,11 +55,11 @@ jobs:
}
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
# Only setup python if the runs-on-config is not self-hosted.
# Self-hosted runners already have python installed.
# This workflow needs to run in github on self-hosted runners to have access to artifactory.
@@ -70,22 +70,22 @@ jobs:
cache: "pip" # caching pip dependencies
# Install dependencies
- # TODO: [W-18497996: CI/CD Improvements: deploy-python should run via ...pdated more easily | Work](https://gus.lightning.force.com/lightning/r/ADM_Work__c/a07EE00002EIZBPYA5/view)
- name: Install dependencies
shell: pwsh
run: |
- python -m pip install --upgrade pip
- python -m pip install hatch twine>=6.1.0
+ python -m pip install --upgrade pip hatch
# Download python package artifact
- name: Download Python Package Artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: pypi-package
path: ./dist
# Publish Python package
- name: Deploy Python Package
+ shell: pwsh
+ working-directory: ./src/Python
env:
# Twine uses env variables to set the username, password, and repository url.
TWINE_USERNAME: ${{ env.PYPI_PUBLISH_USER }}
@@ -94,4 +94,4 @@ jobs:
TWINE_REPOSITORY_URL: ${{ env.PYPI_PACKAGE_REPOSITORY }}
run: |
- python -m twine upload dist/*
+ hatch run deploy:twine upload ../../dist/*
diff --git a/.github/workflows/lint-python.yml b/.github/workflows/lint-python.yml
index b4508328..d30b5a25 100644
--- a/.github/workflows/lint-python.yml
+++ b/.github/workflows/lint-python.yml
@@ -27,18 +27,18 @@ jobs:
name: Lint Python in ${{ inputs.working-directory }} on ${{ matrix.os }}
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ vars.PYTHON_TEST_VERSIONS }}
cache: "pip" # caching pip dependencies
# Cache Hatch environments
- name: Cache Hatch environments
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
# Default Hatch env location relative to working-directory.
path: ${{ inputs.working-directory }}/.hatch
@@ -51,7 +51,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- python -m pip install hatch
+ python -m pip install hatch click==8.2
# Lint with ruff
- name: Lint with ruff
diff --git a/.github/workflows/sdk-workflow.yml b/.github/workflows/sdk-workflow.yml
index 82695dfc..1e11daa0 100644
--- a/.github/workflows/sdk-workflow.yml
+++ b/.github/workflows/sdk-workflow.yml
@@ -51,7 +51,7 @@ on:
env:
DOTNET_NOLOGO: "true"
# Centralized .NET version for building and deploying
- DOTNET_BUILD_VERSION: '9.0.x'
+ DOTNET_BUILD_VERSION: '10.0.x'
jobs:
# Define version job
@@ -64,7 +64,7 @@ jobs:
dotnet-build-version: ${{ steps.set-versions.outputs.dotnet-build-version }}
if: github.event.pull_request.draft == false
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Get Beta Version
id: get-beta-version
shell: bash
diff --git a/.github/workflows/test-dotnet.yml b/.github/workflows/test-dotnet.yml
index e9a8c4a1..c6ba8df9 100644
--- a/.github/workflows/test-dotnet.yml
+++ b/.github/workflows/test-dotnet.yml
@@ -28,7 +28,7 @@ jobs:
name: Test .NET (${{ matrix.os }}, ${{ matrix.config }}, .NET ${{ matrix.dotnet-version }})
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Clean all existing .NET installations
- name: Clean existing .NET installations
@@ -40,15 +40,15 @@ jobs:
with:
dotnet-version: ${{ matrix.dotnet-version }}
- # Setup .NET 9 SDK (Needed to run dotnet test in any matrix)
- - name: Setup .NET 9 SDK (for build compatibility)
- uses: actions/setup-dotnet@v4
+ # Setup .NET global.json SDK (Needed to run dotnet test in any matrix)
+ - name: Setup .NET ${{ inputs.dotnet-build-version }} SDK (for build compatibility)
+ uses: actions/setup-dotnet@v5
with:
- dotnet-version: '9.0.x'
+ dotnet-version: ${{ inputs.dotnet-build-version }} # Use the input for .NET version
# Cache NuGet packages based on the lock file and .NET version
- name: Cache NuGet packages
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ matrix.dotnet-version }}-${{ hashFiles('**/packages.lock.json') }}
@@ -68,7 +68,7 @@ jobs:
# Download built binaries
- name: Download Build Output
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: build-output-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
path: ./
@@ -101,7 +101,7 @@ jobs:
# Upload test results
- name: Upload Test Results
if: ${{ always() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: dotnet-results-${{ matrix.os }}-${{ matrix.config }}-net${{ matrix.dotnet-version }}
path: TestResults-${{ matrix.os }}-${{ matrix.config }}-net${{ matrix.dotnet-version }}
diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml
index b519674f..011c83ce 100644
--- a/.github/workflows/test-python.yml
+++ b/.github/workflows/test-python.yml
@@ -34,7 +34,7 @@ jobs:
name: Test Python ${{ inputs.test-name }} (${{ matrix.os }}, ${{ matrix.config }}, .NET ${{ matrix.dotnet-version }})
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Clean all existing .NET installations
- name: Clean existing .NET installations
@@ -46,6 +46,18 @@ jobs:
with:
dotnet-version: ${{ matrix.dotnet-version }} # Pass the .NET version from the matrix
+ # Setup global.json .NET environment
+ - name: Setup global.json .NET ${{ inputs.dotnet-build-version }}
+ uses: ./.github/actions/setup-dotnet
+ with:
+ dotnet-version: ${{ inputs.dotnet-build-version }} # Use the input for .NET version
+
+ # Setup .NET global.json SDK (Needed to run dotnet test in any matrix)
+ - name: Setup .NET ${{ inputs.dotnet-build-version }} SDK (for build compatibility)
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: ${{ inputs.dotnet-build-version }} # Use the input for .NET version
+
# Restore Tools (i.e. report generator) - skip for .NET 8
# Code coverage report generation is only supported on the latest .NET version
- name: Restore .NET Tools
@@ -54,14 +66,14 @@ jobs:
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ vars.PYTHON_TEST_VERSIONS }}
cache: "pip" # caching pip dependencies
# Cache Hatch environments
- name: Cache Hatch environments
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
# Default Hatch env location relative to working-directory.
path: ./.hatch
@@ -74,17 +86,22 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- python -m pip install hatch
+ python -m pip install hatch click==8.2
- # Download the published test artifacts
- # This step is only needed when builing the main python project, but it left in this
- # reuseable workflow for simplicity.
- # TODO: [W-18497981: CI/CD Improvements: Python tests should test final package | Work](https://gus.lightning.force.com/lightning/r/ADM_Work__c/a07EE00002EIUwKYAX/view)
- - uses: actions/download-artifact@v4
+ # Download the product binaries
+ - name: Download product binaries
+ uses: actions/download-artifact@v7
with:
- name: tests-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
+ name: product-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
path: ./src/Python/src/tableau_migration/bin/
+ # Download the test binaries
+ - name: Download test binaries
+ uses: actions/download-artifact@v7
+ with:
+ name: tests-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
+ path: ./dist/tests/
+
# Test with pytest
- name: Test with pytest
run: python -m hatch --data-dir=.hatch --cache-dir=.hatch_cache run test:testcov
@@ -103,7 +120,7 @@ jobs:
# Upload test results
- name: Upload Test Results
if: ${{ !(matrix.dotnet-version == '8.0.x') }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: ${{ inputs.test-name }}-results-${{ matrix.os }}-${{ matrix.config }}-net${{ matrix.dotnet-version }}
path: ${{ inputs.working-directory }}/TestResults
diff --git a/Directory.Build.props b/Directory.Build.props
index a808b66a..26b8702f 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,12 +4,12 @@
enable
true
true
- 5.3.1
+ 6.0.0
Salesforce, Inc.
Salesforce, Inc.
- Copyright (c) 2025, Salesforce, Inc. and its licensors
+ Copyright (c) 2026, Salesforce, Inc. and its licensors
Apache-2.0
- 11.3.2
+ 11.3.9