# Required repository secrets:
#   CONAN2_USER_SECRET     - Conan remote login username
#   CONAN2_PASSWORD_SECRET - Conan remote login password
#   AQUAPI_USERNAME_SECRET - devpi username for wheel uploads
#   AQUAPI_PASSWORD_SECRET - devpi password for wheel uploads
#   AQUAPI_URL_DEV         - devpi index URL for wheel uploads
#   AQUAVEO_GITHUB_TOKEN   - GitHub token for release asset uploads
#
# Generated by xmsconan_ci — do not edit manually.

name: << display_name >>-CI

on:
  push:
  pull_request:

jobs:
  # ----------------------------------------------------------------------------------------------
  # FLAKE
  # ----------------------------------------------------------------------------------------------
  flake:
    name: Flake Project
    runs-on: ${{ matrix.platform }}

    strategy:
      fail-fast: false
      matrix:
        platform: [ubuntu-latest]
        python-version: ['3.13']

    steps:
      # Checkout Sources
      - name: Checkout Source
        uses: actions/checkout@v2
      # Setup Python
      - name: Setup Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      # Install Python Dependencies
      - name: Install Python Dependencies
        run: |
          python -m pip install --upgrade pip
          pip install flake8 flake8-docstrings flake8-bugbear flake8-import-order pep8-naming
      # Flake Code
      - name: Run Flake
        run: |
          flake8 --exclude .tox,.git,__pycache__,_package/tests/files/*,pydocs/source/conf.py,build,dist,tests/fixtures/*,*.pyc,*.egg-info,.cache,.eggs --ignore=D200,D212 --max-line-length=120 --docstring-convention google --isolated --import-order-style=appnexus --application-import-names=xms.<< python_namespaced_dir >> --application-package-names=xms --count --statistics _package

  # ----------------------------------------------------------------------------------------------
  # MAC
  # ----------------------------------------------------------------------------------------------
  mac:
    name: Clang-Latest (${{ matrix.build_type }}, ${{ matrix.python-version }}, Macos)
    runs-on: ${{ matrix.platform }}

    strategy:
      fail-fast: false
      matrix:
        platform: [macos-15]
        python-version: ['3.13']
        build_type: [Release, Debug]

    env:
      MATRIX_NAME: ${{ matrix.platform }}-Clang${{ matrix.compiler-version }}-${{ matrix.build_type }}
      # Library Variables
      LIBRARY_NAME: << library_name >>
      XMS_VERSION: '0.0.0'
      # Conan Variables
      CONAN_REFERENCE: << library_name >>/0.0.0
      CONAN_ARCHS: x86_64
      CONAN_USERNAME: aquaveo
      CONAN_CHANNEL: testing
      CONAN_STABLE_BRANCH_PATTERN: 'we_should_never_use_this_string_for_a_branch_name'
      CONAN_LOGIN_USERNAME: ${{ secrets.CONAN2_USER_SECRET }}
      CONAN_PASSWORD: ${{ secrets.CONAN2_PASSWORD_SECRET }}
      CONAN_REMOTE_URL: https://conan2.aquaveo.com/artifactory/api/conan/aquaveo-stable
      # Aquapi Variables
      AQUAPI_USERNAME: ${{ secrets.AQUAPI_USERNAME_SECRET }}
      AQUAPI_PASSWORD: ${{ secrets.AQUAPI_PASSWORD_SECRET }}
      AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
      # Python Variables
      PYTHON_TARGET_VERSION: ${{ matrix.python-version }}
      RELEASE_PYTHON: 'False'

    steps:
      # Get Correct Version of Xcode
      - uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: 16.4
      - name: Setup Clang
        run: |
          clang --version
      # Checkout Sources
      - name: Checkout Source
        uses: actions/checkout@v2
      # Setup Python
      - name: Set up Python 3.13
        uses: actions/setup-python@v5
        with:
          python-version: '3.13'
      # Install Python Dependencies
      - name: Install Python Dependencies
        run: |
          python -m pip install --upgrade pip
          pip install conan devpi-client wheel
          python -m pip install xmsconan>=<< xmsconan_version >> -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple
      # Setup Conan
      - name: Setup Conan
        run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login --remove-conancenter
        shell: bash
      # Get Tag Name
      - name: Get Tag
        id: gitTag
        uses: little-core-labs/get-git-tag@v3.0.2
        if: startsWith(github.ref, 'refs/tags/')
      # Set Conan Version
      - name: Set Conan Version
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_REFERENCE: '<< library_name >>/${{ steps.gitTag.outputs.tag }}'
          XMS_VERSION: ${{ steps.gitTag.outputs.tag }}
          CONAN_UPLOAD: https://conan.aquaveo.com
          RELEASE_PYTHON: 'True'
        if: startsWith(github.ref, 'refs/tags/')
      # Check for release branch
      - name: Get Branch Name
        id: gitBranch
        uses: nelonoel/branch-name@v1.0.1
      - name: Change Channel and URL if Release Branch
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_CHANNEL: stable
          AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV}}
        if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(env.BRANCH_NAME, env.XMS_VERSION) }}
      # Generate XMS Conan
      - name: Generate XMS Conan
        run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml
      # Build the Conan Package
      - name: Build the Conan Packages
        run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts"
        shell: bash
      - name: Upload test artifacts
        uses: actions/upload-artifact@v4
        with:
          name: test-artifacts-${{ env.MATRIX_NAME }}
          path: test_artifacts/
          if-no-files-found: ignore
        if: always()
      # Repair wheel (Release only)
      - name: Repair wheel
        run: xmsconan_wheel_repair --wheel-dir wheelhouse --platform macos
        shell: bash
        if: matrix.build_type == 'Release'
      - name: Upload wheel artifact
        uses: actions/upload-artifact@v4
        with:
          name: wheel-${{ runner.os }}
          path: wheelhouse/*.whl
        if: matrix.build_type == 'Release'
      # Upload wheel to Aquapi
      - name: Upload wheel to Aquapi
        run: xmsconan_wheel_deploy --wheel-dir wheelhouse
        shell: bash
        if: startsWith(github.ref, 'refs/tags/') && matrix.build_type == 'Release'
      # Upload Release to Conan
      - name: Upload Releases to Conan
        run: "python build.py --skip-build --upload --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\""
        shell: bash
        if: startsWith(github.ref, 'refs/tags/')
      # Get the Release Data
      - name: Get Release
        id: git_release
        uses: bruceadams/get-release@v1.3.2
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        if: startsWith(github.ref, 'refs/tags/')
      - name: Archive Conan Packages
        run: |
          conan cache save --file ${{ env.MATRIX_NAME }}.tar.gz << library_name >>/${{ env.XMS_VERSION }}:*
        shell: bash
        if: startsWith(github.ref, 'refs/tags/')
      # Upload Zipped Conan Packages
      - name: Upload Zipped Conan Packages
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.git_release.outputs.upload_url }}
          asset_path: ${{ github.workspace }}/${{ env.MATRIX_NAME }}.tar.gz
          asset_name: ${{ env.MATRIX_NAME }}.tar.gz
          asset_content_type: application/zip
        if: startsWith(github.ref, 'refs/tags/')

  # ----------------------------------------------------------------------------------------------
  # LINUX
  # ----------------------------------------------------------------------------------------------
  linux:
    name: GCC-13 (${{ matrix.build_type }}, Linux)
    runs-on: ubuntu-latest

<% if docker_image %>
    container:
      image: << docker_image >>
<% else %>
    container:
      image: ghcr.io/aquaveo/conan-gcc13-py3.13:latest
<% endif %>

    strategy:
      fail-fast: false
      matrix:
        build_type: [Release, Debug]

    env:
      MATRIX_NAME: linux-GCC13-${{ matrix.build_type }}
      # Library Variables
      LIBRARY_NAME: << library_name >>
      XMS_VERSION: '0.0.0'
      # Conan Variables
      CONAN_REFERENCE: << library_name >>/0.0.0
      CONAN_ARCHS: x86_64
      CONAN_USERNAME: aquaveo
      CONAN_CHANNEL: testing
      CONAN_STABLE_BRANCH_PATTERN: 'we_should_never_use_this_string_for_a_branch_name'
      CONAN_LOGIN_USERNAME: ${{ secrets.CONAN2_USER_SECRET }}
      CONAN_PASSWORD: ${{ secrets.CONAN2_PASSWORD_SECRET }}
      CONAN_REMOTE_URL: https://conan2.aquaveo.com/artifactory/api/conan/aquaveo-stable
      # Aquapi Variables
      AQUAPI_USERNAME: ${{ secrets.AQUAPI_USERNAME_SECRET }}
      AQUAPI_PASSWORD: ${{ secrets.AQUAPI_PASSWORD_SECRET }}
      AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
      # Python Variables
      PYTHON_TARGET_VERSION: '3.13'
      RELEASE_PYTHON: 'False'

    steps:
      # Checkout Sources
      - name: Checkout Source
        uses: actions/checkout@v2
      # Install Python Dependencies
      - name: Install Python Dependencies
        run: |
          pip install conan devpi-client wheel
          pip install xmsconan>=<< xmsconan_version >> -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple
      # Setup Conan
      - name: Setup Conan
        run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login
        shell: bash
      # Get Tag Name
      - name: Get Tag
        id: gitTag
        uses: little-core-labs/get-git-tag@v3.0.2
        if: startsWith(github.ref, 'refs/tags/')
      # Set Conan Version
      - name: Set Conan Version
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_REFERENCE: '<< library_name >>/${{ steps.gitTag.outputs.tag }}'
          XMS_VERSION: ${{ steps.gitTag.outputs.tag }}
          CONAN_UPLOAD: https://conan.aquaveo.com
          RELEASE_PYTHON: 'True'
        if: startsWith(github.ref, 'refs/tags/')
      # Check for release branch
      - name: Get Branch Name
        id: gitBranch
        uses: nelonoel/branch-name@v1.0.1
      - name: Change Channel and URL if Release Branch
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_CHANNEL: stable
          AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
        if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(env.BRANCH_NAME, env.XMS_VERSION) }}
      # Generate XMS Conan
      - name: Generate XMS Conan
        run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml
      # Build the Conan Package
      - name: Build the Conan Packages
        run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts"
        shell: bash
      - name: Upload test artifacts
        uses: actions/upload-artifact@v4
        with:
          name: test-artifacts-${{ env.MATRIX_NAME }}
          path: test_artifacts/
          if-no-files-found: ignore
        if: always()
      # Repair wheel (Release only)
      - name: Repair wheel
        run: xmsconan_wheel_repair --wheel-dir wheelhouse --platform linux
        shell: bash
        if: matrix.build_type == 'Release'
      - name: Upload wheel artifact
        uses: actions/upload-artifact@v4
        with:
          name: wheel-${{ runner.os }}
          path: wheelhouse/*.whl
        if: matrix.build_type == 'Release'
      # Upload wheel to Aquapi
      - name: Upload wheel to Aquapi
        run: xmsconan_wheel_deploy --wheel-dir wheelhouse
        shell: bash
        if: startsWith(github.ref, 'refs/tags/') && matrix.build_type == 'Release'
      # Upload Release to Conan
      - name: Upload Releases to Conan
        run: "python build.py --skip-build --upload --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\""
        shell: bash
        if: startsWith(github.ref, 'refs/tags/')
      # Get the Release Data
      - name: Get Release
        id: git_release
        uses: bruceadams/get-release@v1.3.2
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        if: startsWith(github.ref, 'refs/tags/')
      - name: Archive Conan Packages
        run: |
          conan cache save --file ${{ env.MATRIX_NAME }}.tar.gz << library_name >>/${{ env.XMS_VERSION }}:*
        shell: bash
        if: startsWith(github.ref, 'refs/tags/')
      # Upload Zipped Conan Packages
      - name: Upload Zipped Conan Packages
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.git_release.outputs.upload_url }}
          asset_path: ${{ github.workspace }}/${{ env.MATRIX_NAME }}.tar.gz
          asset_name: ${{ env.MATRIX_NAME }}.tar.gz
          asset_content_type: application/zip
        if: startsWith(github.ref, 'refs/tags/')

<% if ci_linux_arm %>
  # ----------------------------------------------------------------------------------------------
  # LINUX ARM
  # ----------------------------------------------------------------------------------------------
  linux-arm:
    name: GCC-13 (${{ matrix.build_type }}, Linux ARM)
    runs-on: ubuntu-24.04-arm

<% if docker_image %>
    container:
      image: << docker_image >>
<% else %>
    container:
      image: ghcr.io/aquaveo/conan-gcc13-py3.13:latest
<% endif %>

    strategy:
      fail-fast: false
      matrix:
        build_type: [Release, Debug]

    env:
      MATRIX_NAME: linux-arm-GCC13-${{ matrix.build_type }}
      # Library Variables
      LIBRARY_NAME: << library_name >>
      XMS_VERSION: '0.0.0'
      # Conan Variables
      CONAN_REFERENCE: << library_name >>/0.0.0
      CONAN_ARCHS: armv8
      CONAN_USERNAME: aquaveo
      CONAN_CHANNEL: testing
      CONAN_STABLE_BRANCH_PATTERN: 'we_should_never_use_this_string_for_a_branch_name'
      CONAN_LOGIN_USERNAME: ${{ secrets.CONAN2_USER_SECRET }}
      CONAN_PASSWORD: ${{ secrets.CONAN2_PASSWORD_SECRET }}
      CONAN_REMOTE_URL: https://conan2.aquaveo.com/artifactory/api/conan/aquaveo-stable
      # Aquapi Variables
      AQUAPI_USERNAME: ${{ secrets.AQUAPI_USERNAME_SECRET }}
      AQUAPI_PASSWORD: ${{ secrets.AQUAPI_PASSWORD_SECRET }}
      AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
      # Python Variables
      PYTHON_TARGET_VERSION: '3.13'
      RELEASE_PYTHON: 'False'

    steps:
      # Checkout Sources
      - name: Checkout Source
        uses: actions/checkout@v2
      # Install Python Dependencies
      - name: Install Python Dependencies
        run: |
          pip install conan devpi-client wheel
          pip install xmsconan>=<< xmsconan_version >> -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple
      # Setup Conan
      - name: Setup Conan
        run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login
        shell: bash
      # Get Tag Name
      - name: Get Tag
        id: gitTag
        uses: little-core-labs/get-git-tag@v3.0.2
        if: startsWith(github.ref, 'refs/tags/')
      # Set Conan Version
      - name: Set Conan Version
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_REFERENCE: '<< library_name >>/${{ steps.gitTag.outputs.tag }}'
          XMS_VERSION: ${{ steps.gitTag.outputs.tag }}
          CONAN_UPLOAD: https://conan.aquaveo.com
          RELEASE_PYTHON: 'True'
        if: startsWith(github.ref, 'refs/tags/')
      # Check for release branch
      - name: Get Branch Name
        id: gitBranch
        uses: nelonoel/branch-name@v1.0.1
      - name: Change Channel and URL if Release Branch
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_CHANNEL: stable
          AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
        if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(env.BRANCH_NAME, env.XMS_VERSION) }}
      # Generate XMS Conan
      - name: Generate XMS Conan
        run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml
      # Build the Conan Package
      - name: Build the Conan Packages
        run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts"
        shell: bash
      - name: Upload test artifacts
        uses: actions/upload-artifact@v4
        with:
          name: test-artifacts-${{ env.MATRIX_NAME }}
          path: test_artifacts/
          if-no-files-found: ignore
        if: always()
      # Repair wheel (Release only)
      - name: Repair wheel
        run: xmsconan_wheel_repair --wheel-dir wheelhouse --platform linux
        shell: bash
        if: matrix.build_type == 'Release'
      - name: Upload wheel artifact
        uses: actions/upload-artifact@v4
        with:
          name: wheel-${{ runner.os }}-arm64
          path: wheelhouse/*.whl
        if: matrix.build_type == 'Release'
      # Upload wheel to Aquapi
      - name: Upload wheel to Aquapi
        run: xmsconan_wheel_deploy --wheel-dir wheelhouse
        shell: bash
        if: startsWith(github.ref, 'refs/tags/') && matrix.build_type == 'Release'
      # Upload Release to Conan
      - name: Upload Releases to Conan
        run: "python build.py --skip-build --upload --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\""
        shell: bash
        if: startsWith(github.ref, 'refs/tags/')
      # Get the Release Data
      - name: Get Release
        id: git_release
        uses: bruceadams/get-release@v1.3.2
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        if: startsWith(github.ref, 'refs/tags/')
      - name: Archive Conan Packages
        run: |
          conan cache save --file ${{ env.MATRIX_NAME }}.tar.gz << library_name >>/${{ env.XMS_VERSION }}:*
        shell: bash
        if: startsWith(github.ref, 'refs/tags/')
      # Upload Zipped Conan Packages
      - name: Upload Zipped Conan Packages
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.git_release.outputs.upload_url }}
          asset_path: ${{ github.workspace }}/${{ env.MATRIX_NAME }}.tar.gz
          asset_name: ${{ env.MATRIX_NAME }}.tar.gz
          asset_content_type: application/zip
        if: startsWith(github.ref, 'refs/tags/')

<% endif %>
  # ----------------------------------------------------------------------------------------------
  # WINDOWS
  # ----------------------------------------------------------------------------------------------
  windows:
    name: Visual Studio ${{ matrix.compiler-version }} (${{ matrix.build_type }}, ${{ matrix.python-version }}, Windows)
    runs-on: ${{ matrix.platform }}

    strategy:
      fail-fast: false
      matrix:
        platform: [windows-2022]
        python-version: ['3.13']
        compiler-version: [17]
        build_type: [Release, Debug]

    env:
      MATRIX_NAME: ${{ matrix.platform }}-VS${{ matrix.compiler-version }}-${{ matrix.build_type }}
      # Library Variables
      LIBRARY_NAME: << library_name >>
      XMS_VERSION: '0.0.0'
      # Conan Variables
      CONAN_REFERENCE: << library_name >>/0.0.0
      CONAN_ARCHS: x86_64
      CONAN_USERNAME: aquaveo
      CONAN_CHANNEL: testing
      CONAN_STABLE_BRANCH_PATTERN: 'we_should_never_use_this_string_for_a_branch_name'
      CONAN_LOGIN_USERNAME: ${{ secrets.CONAN2_USER_SECRET }}
      CONAN_PASSWORD: ${{ secrets.CONAN2_PASSWORD_SECRET }}
      CONAN_REMOTE_URL: https://conan2.aquaveo.com/artifactory/api/conan/aquaveo-stable
      # Aquapi Variables
      AQUAPI_USERNAME: ${{ secrets.AQUAPI_USERNAME_SECRET }}
      AQUAPI_PASSWORD: ${{ secrets.AQUAPI_PASSWORD_SECRET }}
      AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
      # Python Variables
      PYTHON_TARGET_VERSION: ${{ matrix.python-version }}
      RELEASE_PYTHON: 'False'

    steps:
      # Checkout Sources
      - name: Checkout Source
        uses: actions/checkout@v2
      # Setup Python
      - name: Set up Python 3.13
        uses: actions/setup-python@v5
        with:
          python-version: '3.13'
      # Setup Dev Command Prompt env for MSVC
      - name: Setup MSVC env
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x64
      # Install Python Dependencies
      - name: Install Python Dependencies
        run: |
          python -m pip install --upgrade pip
          pip install conan devpi-client wheel
          python -m pip install xmsconan>=<< xmsconan_version >> -i https://public.aquapi.aquaveo.com/aquaveo/dev/+simple
      # Setup Visual Studio
      - name: Setup Visual Studio
        uses: microsoft/setup-msbuild@v2
      # Setup Conan
      - name: Setup Conan
        run: xmsconan_conan_setup --remote-url ${{ env.CONAN_REMOTE_URL }} --login
        shell: cmd
      # Get Tag Name
      - name: Get Tag
        id: gitTag
        uses: little-core-labs/get-git-tag@v3.0.2
        if: startsWith(github.ref, 'refs/tags/')
      # Set Conan Version
      - name: Set Conan Version
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_REFERENCE: '<< library_name >>/${{ steps.gitTag.outputs.tag }}'
          XMS_VERSION: ${{ steps.gitTag.outputs.tag }}
          CONAN_UPLOAD: https://conan.aquaveo.com
          RELEASE_PYTHON: 'True'
        if: startsWith(github.ref, 'refs/tags/')
      # Check for release branch
      - name: Get Branch Name
        id: gitBranch
        uses: nelonoel/branch-name@v1.0.1
      - name: Change Channel and URL if Release Branch
        uses: allenevans/set-env@v2.0.0
        with:
          CONAN_CHANNEL: stable
          AQUAPI_URL: ${{ secrets.AQUAPI_URL_DEV }}
        if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(env.BRANCH_NAME, env.XMS_VERSION) }}
      # Generate XMS Conan
      - name: Generate XMS Conan
        run: xmsconan_gen --version ${{ env.XMS_VERSION }} build.toml
      # Build the Conan Package
      - name: Build the Conan Packages
        run: "python build.py --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\" --wheel-dir wheelhouse --artifacts-dir test_artifacts"
        shell: cmd
      - name: Upload test artifacts
        uses: actions/upload-artifact@v4
        with:
          name: test-artifacts-${{ env.MATRIX_NAME }}
          path: test_artifacts/
          if-no-files-found: ignore
        if: always()
      # Repair wheel (Release only)
      - name: Repair wheel
        run: xmsconan_wheel_repair --wheel-dir wheelhouse --platform windows
        shell: bash
        if: matrix.build_type == 'Release'
      - name: Upload wheel artifact
        uses: actions/upload-artifact@v4
        with:
          name: wheel-${{ runner.os }}
          path: wheelhouse/*.whl
        if: matrix.build_type == 'Release'
      # Upload wheel to Aquapi
      - name: Upload wheel to Aquapi
        run: xmsconan_wheel_deploy --wheel-dir wheelhouse
        shell: bash
        if: startsWith(github.ref, 'refs/tags/') && matrix.build_type == 'Release'
      # Upload Release to Conan
      - name: Upload Releases to Conan
        run: "python build.py --skip-build --upload --filter=\"{\\\"build_type\\\": \\\"${{ matrix.build_type }}\\\"}\""
        shell: cmd
        if: startsWith(github.ref, 'refs/tags/')
      # Get the Release Data
      - name: Get Release
        id: git_release
        uses: bruceadams/get-release@v1.3.2
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        if: startsWith(github.ref, 'refs/tags/')
      - name: Archive Conan Packages
        run: |
          conan cache save --file ${{ env.MATRIX_NAME }}.tar.gz << library_name >>/${{ env.XMS_VERSION }}:*
        shell: cmd
        if: startsWith(github.ref, 'refs/tags/')
      # Upload Zipped Conan Packages
      - name: Upload Zipped Conan Packages
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.AQUAVEO_GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.git_release.outputs.upload_url }}
          asset_path: ${{ github.workspace }}/${{ env.MATRIX_NAME }}.tar.gz
          asset_name: ${{ env.MATRIX_NAME }}.tar.gz
          asset_content_type: application/zip
        if: startsWith(github.ref, 'refs/tags/')
