Centralize GitHub workflows and add code coverage #21
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests and QA | |
on: | |
push: | |
branches: | |
- develop2 | |
- release/* | |
pull_request: | |
branches: | |
- '*' | |
- 'release/*' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
############################################################################## | |
# LINUX ENVIRONMENT # | |
############################################################################## | |
linux_setup: | |
name: Linux - Create build container | |
runs-on: ubuntu-latest | |
outputs: | |
image_tag: ${{ steps.dockerfile_hash.outputs.tag }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Log in to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Calculate Dockerfile checksum | |
id: dockerfile_hash | |
run: | | |
DOCKERFILE_HASH=$(find ./.ci/docker/conan-tests -type f -exec sha256sum {} \; | sha256sum | cut -d' ' -f1) | |
echo "tag=$DOCKERFILE_HASH" >> $GITHUB_OUTPUT | |
- name: Check if image exists | |
id: check_image | |
run: | | |
if docker manifest inspect ghcr.io/${{ github.repository_owner }}/conan-tests:${{ steps.dockerfile_hash.outputs.tag }} > /dev/null 2>&1; then | |
echo "status=exists" >> $GITHUB_OUTPUT | |
else | |
echo "status=no-image" >> $GITHUB_OUTPUT | |
fi | |
- name: Build and push image if not exists | |
if: steps.check_image.outputs.status == 'no-image' | |
run: | | |
docker build -t ghcr.io/${{ github.repository_owner }}/conan-tests:${{ steps.dockerfile_hash.outputs.tag }} -f ./.ci/docker/conan-tests . | |
docker push ghcr.io/${{ github.repository_owner }}/conan-tests:${{ steps.dockerfile_hash.outputs.tag }} | |
linux_tests: | |
needs: linux_setup | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/${{ github.repository_owner }}/conan-tests:${{ needs.linux_setup.outputs.image_tag }} | |
options: --user conan | |
strategy: | |
matrix: | |
# python-version: [3.12.3, 3.9.2, 3.8.6, 3.6.15] | |
# test-type: [unittests, integration, functional] | |
python-version: [3.13] | |
test-type: [unittests] | |
name: Linux - Conan ${{ matrix.test-type }} (${{ matrix.python-version }}) | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
run: | | |
pyenv global ${{ matrix.python-version }} | |
python --version | |
- name: Restore pip cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('**/requirements*.txt') }} | |
- name: Install Python dependencies | |
run: | | |
pip install --upgrade pip | |
pip install -r conans/requirements.txt | |
pip install -r conans/requirements_dev.txt | |
pip install -r conans/requirements_server.txt | |
pip install meson | |
- name: Run tests | |
shell: bash | |
run: | | |
pytest test/${{ matrix.test-type }} --durations=20 -n 4 --cov=conan | |
- name: Rename coverage file (Linux/MacOS) | |
if: runner.os != 'Windows' | |
run: mv .coverage .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
- name: Rename coverage file (Windows) | |
if: runner.os == 'Windows' | |
run: powershell Rename-Item .coverage coverage-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }}.coverage | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
path: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
include-hidden-files: true | |
linux_tests_docker: | |
if: false | |
needs: linux_setup | |
runs-on: ubuntu-latest | |
name: Linux - Docker Runner Tests | |
strategy: | |
matrix: | |
# python-version: [3.12, 3.9] | |
python-version: [3.12] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Python dependencies | |
run: | | |
pip install --upgrade pip | |
pip install -r conans/requirements.txt | |
pip install -r conans/requirements_dev.txt | |
pip install -r conans/requirements_server.txt | |
pip install -r conans/requirements_runner.txt | |
- name: Run tests | |
shell: bash | |
run: | | |
pytest -m docker_runner --durations=20 -rs --cov=conan | |
ls -lrta | |
- name: Rename coverage file (Linux/MacOS) | |
if: runner.os != 'Windows' | |
run: mv .coverage .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
- name: Rename coverage file (Windows) | |
if: runner.os == 'Windows' | |
run: powershell Rename-Item .coverage coverage-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }}.coverage | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
path: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
include-hidden-files: true | |
############################################################################## | |
# MACOS ENVIRONMENT # | |
############################################################################## | |
osx_setup: | |
name: OSX - Setup and Cache Dependencies | |
runs-on: macos-14 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.8 | |
- name: Cache pip packages | |
id: cache-pip | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('conans/requirements*.txt') }} | |
- name: Install Python requirements | |
run: | | |
pip install --upgrade pip | |
pip install -r conans/requirements.txt | |
pip install -r conans/requirements_server.txt | |
pip install -r conans/requirements_dev.txt | |
pip install meson | |
- name: Uninstall default CMake | |
run: brew uninstall cmake || true | |
- name: Cache Homebrew packages | |
id: cache-brew | |
uses: actions/cache@v4 | |
with: | |
path: ~/Library/Caches/Homebrew | |
key: ${{ runner.os }}-brew | |
- name: Install homebrew dependencies | |
run: | | |
brew install xcodegen make libtool zlib autoconf automake ninja | |
- name: Cache CMake and Bazel installations | |
id: cache-tools | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/Applications/CMake/3.15.7 | |
~/Applications/CMake/3.19.7 | |
~/Applications/CMake/3.23.5 | |
~/Applications/bazel/6.5.0 | |
~/Applications/bazel/7.4.1 | |
~/Applications/bazel/8.0.0 | |
key: ${{ runner.os }}-conan-tools-cache | |
- name: Build CMake old versions not available for ARM | |
if: steps.cache-tools.outputs.cache-hit != 'true' | |
run: | | |
set -e | |
CMAKE_BUILD_VERSIONS=("3.15.7") | |
for version in "${CMAKE_BUILD_VERSIONS[@]}"; do | |
echo "Compiling CMake version ${version} from source for ARM..." | |
wget -q --no-check-certificate https://cmake.org/files/v${version%.*}/cmake-${version}.tar.gz | |
tar -xzf cmake-${version}.tar.gz | |
cd cmake-${version} | |
mkdir build && cd build | |
../bootstrap --prefix=${HOME}/Applications/CMake/${version} -- -DCMAKE_USE_OPENSSL=ON | |
make -j$(sysctl -n hw.ncpu) | |
make install | |
${HOME}/Applications/CMake/${version}/bin/cmake --version | |
cd ../../ | |
rm -rf cmake-${version} cmake-${version}.tar.gz | |
done | |
- name: Install universal CMake versions | |
if: steps.cache-tools.outputs.cache-hit != 'true' | |
run: | | |
set -e | |
CMAKE_PRECOMP_VERSIONS=("3.19.7" "3.23.5") | |
for version in "${CMAKE_PRECOMP_VERSIONS[@]}"; do | |
echo "Downloading and installing precompiled universal CMake version ${version}..." | |
wget -q --no-check-certificate https://cmake.org/files/v${version%.*}/cmake-${version}-macos-universal.tar.gz | |
tar -xzf cmake-${version}-macos-universal.tar.gz \ | |
--exclude=CMake.app/Contents/bin/cmake-gui \ | |
--exclude=CMake.app/Contents/doc/cmake \ | |
--exclude=CMake.app/Contents/share/cmake-${version%.*}/Help \ | |
--exclude=CMake.app/Contents/share/vim | |
mkdir -p ${HOME}/Applications/CMake/${version} | |
cp -fR cmake-${version}-macos-universal/CMake.app/Contents/* ${HOME}/Applications/CMake/${version} | |
${HOME}/Applications/CMake/${version}/bin/cmake --version | |
rm -rf cmake-${version}-macos-universal | |
rm cmake-${version}-macos-universal.tar.gz | |
done | |
- name: Install Bazel versions | |
if: steps.cache-tools.outputs.cache-hit != 'true' | |
run: | | |
set -e | |
for version in 6.5.0 7.4.1 8.0.0; do | |
mkdir -p ${HOME}/Applications/bazel/${version} | |
wget -q -O ${HOME}/Applications/bazel/${version}/bazel https://github.com/bazelbuild/bazel/releases/download/${version}/bazel-${version}-darwin-arm64 | |
chmod +x ${HOME}/Applications/bazel/${version}/bazel | |
done | |
osx_tests: | |
needs: osx_setup | |
runs-on: macos-14 | |
strategy: | |
fail-fast: true | |
matrix: | |
# python-version: [3.8, 3.12, 3.13] | |
python-version: [3.13] | |
test-type: [unittests] | |
# test-type: [unittests, integration, functional] | |
name: OSX - Conan ${{ matrix.test-type }} (${{ matrix.python-version }}) | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Restore tools cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/Applications/CMake/3.15.7 | |
~/Applications/CMake/3.19.7 | |
~/Applications/CMake/3.23.5 | |
~/Applications/bazel/6.5.0 | |
~/Applications/bazel/7.4.1 | |
~/Applications/bazel/8.0.0 | |
key: ${{ runner.os }}-conan-tools-cache | |
- name: Install homebrew dependencies | |
run: | | |
brew install xcodegen make libtool zlib autoconf automake ninja | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Restore pip cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('conans/requirements*.txt') }} | |
- name: Install Python Dependencies | |
run: | | |
pip install --upgrade pip | |
pip install -r conans/requirements.txt | |
pip install -r conans/requirements_server.txt | |
pip install -r conans/requirements_dev.txt | |
pip install meson | |
- name: Run tests | |
run: | | |
export PATH=${HOME}/Applications/CMake/3.15.7/bin:$PATH:/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin | |
cmake --version | |
bazel --version | |
pytest test/${{ matrix.test-type }} --durations=20 -n auto --cov=conan | |
pwd | |
- name: Rename coverage file (Linux/MacOS) | |
if: runner.os != 'Windows' | |
run: mv .coverage .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
- name: Rename coverage file (Windows) | |
if: runner.os == 'Windows' | |
run: powershell Rename-Item .coverage coverage-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }}.coverage | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
path: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
include-hidden-files: true | |
############################################################################## | |
# WINDOWS ENVIRONMENT # | |
############################################################################## | |
windows_tests_unit_integration: | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
# python-version: [3.13, 3.8, 3.6] | |
python-version: [3.13] | |
name: Windows - Unit & Integration Tests (${{ matrix.python-version }}) | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Visual Studio Build Tools | |
run: | | |
Invoke-WebRequest -Uri "https://aka.ms/vs/15/release/vs_buildtools.exe" -OutFile "vs_buildtools15.exe" | |
Start-Process -FilePath ".\vs_buildtools15.exe" -ArgumentList ` | |
"--quiet", "--wait", "--norestart", "--nocache", ` | |
"--add", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", ` | |
"--add", "Microsoft.Component.MSBuild" -WindowStyle Hidden -Wait | |
- name: Determine pip cache directory | |
id: pip-cache-dir | |
shell: pwsh | |
run: echo "PIP_CACHE_DIR=$(pip cache dir)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
- name: Cache pip packages | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.PIP_CACHE_DIR }} | |
key: pip-packages-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/requirements*.txt') }} | |
restore-keys: | | |
pip-packages-${{ runner.os }}-${{ matrix.python-version }}- | |
- name: Install Python requirements | |
run: | | |
pip install --upgrade pip | |
pip install -r conans/requirements.txt | |
pip install -r conans/requirements_dev.txt | |
pip install -r conans/requirements_server.txt | |
- name: Run Unit & Integration Tests | |
shell: pwsh | |
run: | | |
git config --global core.autocrlf false | |
pytest test/unittests --durations=100 -n=auto --cov=conan | |
ls -lrta | |
# pytest test/unittests test/integration --durations=100 -n=auto --cov=conan | |
- name: Rename coverage file (Linux/MacOS) | |
if: runner.os != 'Windows' | |
run: mv .coverage .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
- name: Rename coverage file (Windows) | |
if: runner.os == 'Windows' | |
run: powershell Rename-Item .coverage coverage-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }}.coverage | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
path: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
include-hidden-files: true | |
windows_tests_functional: | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
# python-version: [3.13, 3.8, 3.6] | |
python-version: [3.13] | |
name: Windows - Functional Tests (${{ matrix.python-version }}) | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install MSVC v14.38 Toolset | |
run: | | |
Start-Process -Wait "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList {` | |
modify ` | |
--quiet ` | |
--installPath "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" ` | |
--add ` | |
Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64 ` | |
} | |
- name: Verify MSVC v14.38 toolset installation | |
run: dir "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC" | |
- name: Install Visual Studio Build Tools | |
run: | | |
Invoke-WebRequest -Uri "https://aka.ms/vs/15/release/vs_buildtools.exe" -OutFile "vs_buildtools15.exe" | |
Start-Process -FilePath ".\vs_buildtools15.exe" -ArgumentList ` | |
"--quiet", "--wait", "--norestart", "--nocache", ` | |
"--add", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", ` | |
"--add", "Microsoft.VisualStudio.Component.Windows81SDK", ` | |
"--add", "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", ` | |
"--add", "Microsoft.Component.MSBuild", ` | |
"--add", "Microsoft.VisualStudio.Component.VC.140" -WindowStyle Hidden -Wait | |
- name: Determine pip cache directory | |
id: pip-cache-dir | |
shell: pwsh | |
run: echo "PIP_CACHE_DIR=$(pip cache dir)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
- name: Cache pip packages | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.PIP_CACHE_DIR }} | |
key: pip-packages-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/requirements*.txt') }} | |
restore-keys: | | |
pip-packages-${{ runner.os }}-${{ matrix.python-version }}- | |
- name: Install Python requirements | |
run: | | |
pip install --upgrade pip | |
pip install -r conans/requirements.txt | |
pip install -r conans/requirements_server.txt | |
pip install -r conans/requirements_dev.txt | |
pip install meson | |
- name: Set choco cache | |
run: choco config set cacheLocation C:\choco-cache | |
- uses: actions/cache@v4 | |
with: | |
path: C:\choco-cache | |
key: choco-cache | |
- name: Install Chocolatey packages | |
run: | | |
choco install pkgconfiglite --version 0.28 | |
choco install ninja --version 1.10.2 | |
choco install mingw | |
choco install cygwin | |
choco install cyg-get | |
cyg-get automake gcc-g++ make binutils --verbose | |
- uses: msys2/setup-msys2@v2 | |
id: msys2-setup | |
with: | |
update: true | |
# It's important that the default environment that is used is MSYS | |
# we check this default in a test | |
msystem: MSYS | |
install: >- | |
mingw-w64-x86_64-toolchain | |
mingw-w64-i686-toolchain | |
base-devel | |
gcc | |
autoconf-wrapper | |
automake | |
- name: Cache CMake and Bazel installations | |
id: cache-tools | |
uses: actions/cache@v4 | |
with: | |
path: | | |
C:\tools\cmake\3.15.7 | |
C:\tools\cmake\3.19.7 | |
C:\tools\cmake\3.23.5 | |
C:\tools\bazel\6.5.0 | |
C:\tools\bazel\7.4.1 | |
C:\tools\bazel\8.0.0 | |
key: ${{ runner.os }}-conan-tools-cache | |
- name: Build CMake old versions of CMake | |
if: steps.cache-tools.outputs.cache-hit != 'true' | |
run: | | |
$CMAKE_BUILD_VERSIONS = "3.15.7", "3.19.7" | |
foreach ($version in $CMAKE_BUILD_VERSIONS) { | |
Write-Host "Downloading CMake version $version for Windows..." | |
$destination = "C:\tools\cmake\$version" | |
if (-not (Test-Path $destination)) { | |
New-Item -Path $destination -ItemType Directory | |
} | |
$major_minor_version = ($version -split '\.')[0..1] -join '.' | |
$url = "https://cmake.org/files/v$major_minor_version/cmake-$version-win64-x64.zip" | |
$zipFile = "cmake-$version-windows-x86_64.zip" | |
Invoke-WebRequest -Uri $url -OutFile $zipFile | |
Expand-Archive -Path $zipFile -DestinationPath $destination -Force | |
Remove-Item $zipFile | |
} | |
- name: Install modern CMake versions | |
if: steps.cache-tools.outputs.cache-hit != 'true' | |
run: | | |
$CMAKE_BUILD_VERSIONS = "3.23.5" | |
foreach ($version in $CMAKE_BUILD_VERSIONS) { | |
$destination = "C:\tools\cmake\$version" | |
if (-not (Test-Path $destination)) { | |
New-Item -Path $destination -ItemType Directory | |
} | |
$major_minor_version = ($version -split '\.')[0..1] -join '.' | |
$url = "https://cmake.org/files/v$major_minor_version/cmake-$version-windows-x86_64.zip" | |
$zipFile = "cmake-$version-windows-x86_64.zip" | |
Invoke-WebRequest -Uri $url -OutFile $zipFile | |
Expand-Archive -Path $zipFile -DestinationPath $destination -Force | |
Remove-Item $zipFile | |
} | |
- name: Install Bazel versions | |
if: steps.cache-tools.outputs.cache-hit != 'true' | |
run: | | |
$BAZEL_BUILD_VERSIONS = "6.5.0", "7.4.1", "8.0.0" | |
foreach ($version in $BAZEL_BUILD_VERSIONS) { | |
Write-Host "Downloading Bazel version $version for Windows..." | |
$destination = "C:\tools\bazel\$version" | |
if (-not (Test-Path $destination)) { | |
New-Item -Path $destination -ItemType Directory | |
} | |
$major_minor_version = ($version -split '\.')[0..1] -join '.' | |
$url = "https://github.com/bazelbuild/bazel/releases/download/$version/bazel-$version-windows-x86_64.zip" | |
$zipFile = "bazel-$version-windows-x86_64.zip" | |
Invoke-WebRequest -Uri $url -OutFile $zipFile | |
Expand-Archive -Path $zipFile -DestinationPath $destination -Force | |
Remove-Item $zipFile | |
} | |
- name: Run Functional Tests | |
run: | | |
git config --global core.autocrlf false | |
$pathsToRemove = @() | |
$pathsToRemove += "C:\mingw64\bin" # To avoid that CMake finds gcc there | |
$pathsToRemove += "C:\Strawberry\c\bin" | |
$pathsToRemove += "C:\Program Files\CMake\bin" # Remove the default CMake version | |
$pathsToRemove += "C:\Program Files\Git\usr\bin" # To avoid using uname and other tools from there | |
foreach ($dir in $pathsToRemove) { | |
$newPath = ($env:PATH -split ";") -ne $dir -join ";" | |
[System.Environment]::SetEnvironmentVariable('PATH', $newPath) | |
Write-Host "$dir removed from PATH. Current PATH: $env:PATH" | |
} | |
# Check GCC is not in Path | |
$gccPath = Get-Command gcc.exe -ErrorAction SilentlyContinue | |
if ($null -ne $gccPath) { | |
Write-Host "GCC found in PATH at: $($gccPath.Path)" | |
} else { | |
Write-Host "GCC not found in PATH." | |
} | |
$shortGuid = [System.Guid]::NewGuid().ToString().Substring(0, 4) | |
$randomFolder = [System.IO.Path]::Combine("D:\\", "tmp_tests", $shortGuid) | |
New-Item -ItemType Directory -Force -Path $randomFolder | |
$env:CONAN_TEST_FOLDER = $randomFolder | |
$env:Path = "C:\tools\cmake\3.15.7\cmake-3.15.7-win64-x64\bin;" + $env:Path | |
$msys2Path = '${{ steps.msys2-setup.outputs.msys2-location }}' | |
[System.Environment]::SetEnvironmentVariable('MSYS2_PATH', $msys2Path, [System.EnvironmentVariableTarget]::Process) | |
Write-Host "Added MSYS2_PATH environment variable: $msys2Path" | |
pytest test/functional -n=auto --durations=100 --cov=conan | |
- name: Rename coverage file (Linux/MacOS) | |
if: runner.os != 'Windows' | |
run: mv .coverage .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
- name: Rename coverage file (Windows) | |
if: runner.os == 'Windows' | |
run: powershell Rename-Item .coverage coverage-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }}.coverage | |
- name: Upload coverage artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
path: .coverage.${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.test-type }} | |
include-hidden-files: true | |
code_coverage: | |
# needs: [ linux_tests_docker, osx_tests, windows_tests_unit_integration, windows_tests_functional] | |
needs: [linux_tests, osx_tests, windows_tests_unit_integration, windows_tests_functional] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Download coverage artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
merge-multiple: true | |
# pattern: .coverage.* | |
- name: Merge coverage reports | |
run: | | |
pip install coverage | |
coverage combine | |
coverage report | |
coverage xml -o merged-coverage.xml | |
coverage html -d coverage-html | |
deploy_to_pypi_test: | |
needs: [linux_setup, linux_tests, linux_tests_docker] | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/develop2' | |
name: Deploy to TestPyPI | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
- name: Install dependencies | |
run: | | |
pip install --upgrade pip | |
pip install twine | |
- name: Bump Dev Version | |
run: | | |
python .ci/bump_dev_version.py | |
- name: Build Package | |
run: | | |
python setup.py sdist | |
- name: Upload to TestPyPI | |
env: | |
TWINE_USERNAME: ${{ secrets.TEST_PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }} | |
run: | | |
python -m twine upload --verbose --repository-url https://test.pypi.org/legacy/ dist/* | |
- name: Deploy conan-server to TestPyPI | |
env: | |
TWINE_USERNAME: ${{ secrets.TEST_PYPI_SERVER_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_SERVER_PASSWORD }} | |
run: | | |
rm -rf dist/ | |
mv setup_server.py setup.py | |
python setup.py sdist | |
python -m twine upload --verbose --repository-url https://test.pypi.org/legacy/ dist/* |