From cac5a4d822b939b90acd167372ae08b016352030 Mon Sep 17 00:00:00 2001 From: Tom Birdsong Date: Fri, 18 Nov 2022 09:12:11 -0500 Subject: [PATCH] ENH: Bump ITK workflows for v5.3rc04.post4. Updates cookiecutter CI workflow to rely on ITKRemoteModuleBuildTestPackageAction reusable workflows for easier maintenance. Updates ITK reference to v5.3rc04.post4 and applies version updates from reusable workflow. See https://github.com/InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/pull/9 --- .github/workflows/build-test-package.yml | 36 ++- .../.github/workflows/build-test-package.yml | 282 +----------------- 2 files changed, 27 insertions(+), 291 deletions(-) diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 3f08f60..3ea2604 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -3,8 +3,8 @@ name: Build, test, package on: [push,pull_request] env: - itk-git-tag: "171fb2ba33a87041f99328a2f26612ff33aa9cc8" - itk-wheel-tag: "v5.3rc04.post3" + itk-git-tag: "abf5fa10522a36bc51f42f20f426a622f42ed90d" + itk-wheel-tag: "v5.3rc04.post4" jobs: build-test-cxx: @@ -12,13 +12,13 @@ jobs: strategy: max-parallel: 3 matrix: - os: [ubuntu-20.04, windows-2019, macos-11] + os: [ubuntu-20.04, windows-2022, macos-11] include: - os: ubuntu-20.04 c-compiler: "gcc" cxx-compiler: "g++" cmake-build-type: "MinSizeRel" - - os: windows-2019 + - os: windows-2022 c-compiler: "cl.exe" cxx-compiler: "cl.exe" cmake-build-type: "Release" @@ -42,7 +42,7 @@ jobs: python -m pip install cookiecutter - name: Get specific version of CMake, Ninja - uses: lukka/get-cmake@v3.18.3 + uses: lukka/get-cmake@v3.22.2 - name: Download ITK run: | @@ -52,7 +52,7 @@ jobs: git checkout ${{ env.itk-git-tag }} - name: Build ITK - if: matrix.os != 'windows-2019' + if: matrix.os != 'windows-2022' run: | cd .. mkdir ITK-build @@ -61,12 +61,12 @@ jobs: ninja - name: Build ITK - if: matrix.os == 'windows-2019' + if: matrix.os == 'windows-2022' run: | cd .. mkdir ITK-build cd ITK-build - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" cmake -DCMAKE_C_COMPILER:FILEPATH="${{ matrix.c-compiler }}" -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER="${{ matrix.cxx-compiler }}" -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake-build-type }} -DBUILD_TESTING:BOOL=OFF -GNinja ../ITK ninja shell: cmd @@ -126,14 +126,14 @@ jobs: cat dashboard.cmake - name: Build and test - if: matrix.os != 'windows-2019' + if: matrix.os != 'windows-2022' run: | ctest --output-on-failure -j 2 -V -S dashboard.cmake - name: Build and test - if: matrix.os == 'windows-2019' + if: matrix.os == 'windows-2022' run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" ctest --output-on-failure -j 2 -V -S dashboard.cmake shell: cmd @@ -142,7 +142,7 @@ jobs: strategy: max-parallel: 2 matrix: - python-version: ["37", "38", "39", "310"] + python-version: ["37", "38", "39", "310", "311"] steps: - uses: actions/checkout@v2 @@ -156,6 +156,12 @@ jobs: sudo rm -rf "$AGENT_TOOLSDIRECTORY" df -h + - name: 'Fetch build dependencies' + shell: bash + run: | + sudo apt install zstd + unzstd --version + - name: Set up Python 3.8 uses: actions/setup-python@v2 with: @@ -238,11 +244,11 @@ jobs: path: Evaluated/ITKModuleTemplate/dist build-windows-python-packages: - runs-on: windows-2019 + runs-on: windows-2022 strategy: max-parallel: 2 matrix: - python-version-minor: ["7", "8", "9", "10"] + python-version-minor: ["7", "8", "9", "10", "11"] steps: - uses: actions/checkout@v2 @@ -287,7 +293,7 @@ jobs: shell: cmd run: | cd Evaluated/ITKModuleTemplate - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" set PATH=C:\P\grep;%PATH% set CC=cl.exe set CXX=cl.exe diff --git a/{{cookiecutter.project_name}}/.github/workflows/build-test-package.yml b/{{cookiecutter.project_name}}/.github/workflows/build-test-package.yml index bf43250..207460b 100644 --- a/{{cookiecutter.project_name}}/.github/workflows/build-test-package.yml +++ b/{{cookiecutter.project_name}}/.github/workflows/build-test-package.yml @@ -2,281 +2,11 @@ name: Build, test, package on: [push,pull_request] -env: - itk-git-tag: "171fb2ba33a87041f99328a2f26612ff33aa9cc8" - itk-wheel-tag: "v5.3rc04.post3" - jobs: - build-test-cxx: - runs-on: ${{ "{{" }} matrix.os {{ "}}" }} - strategy: - max-parallel: 3 - matrix: - os: [ubuntu-20.04, windows-2019, macos-11] - include: - - os: ubuntu-20.04 - c-compiler: "gcc" - cxx-compiler: "g++" - cmake-build-type: "MinSizeRel" - - os: windows-2019 - c-compiler: "cl.exe" - cxx-compiler: "cl.exe" - cmake-build-type: "Release" - - os: macos-11 - c-compiler: "clang" - cxx-compiler: "clang++" - cmake-build-type: "MinSizeRel" - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python 3.8 - uses: actions/setup-python@v2 - with: - python-version: "3.8" - - - name: Install build dependencies - run: | - python -m pip install --upgrade pip - python -m pip install ninja - - - name: Get specific version of CMake, Ninja - uses: lukka/get-cmake@v3.18.3 - - - name: Download ITK - run: | - cd .. - git clone https://github.com/InsightSoftwareConsortium/ITK.git - cd ITK - git checkout ${{ "{{" }} env.itk-git-tag {{ "}}" }} - - - name: Build ITK - if: matrix.os != 'windows-2019' - run: | - cd .. - mkdir ITK-build - cd ITK-build - cmake -DCMAKE_C_COMPILER:FILEPATH="${{ "{{" }} matrix.c-compiler {{ "}}" }}" -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER="${{ "{{" }} matrix.cxx-compiler {{ "}}" }}" -DCMAKE_BUILD_TYPE:STRING=${{ "{{" }} matrix.cmake-build-type {{ "}}" }} -DBUILD_TESTING:BOOL=OFF -GNinja ../ITK - ninja - - - name: Build ITK - if: matrix.os == 'windows-2019' - run: | - cd .. - mkdir ITK-build - cd ITK-build - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - cmake -DCMAKE_C_COMPILER:FILEPATH="${{ "{{" }} matrix.c-compiler {{ "}}" }}" -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER="${{ "{{" }} matrix.cxx-compiler {{ "}}" }}" -DCMAKE_BUILD_TYPE:STRING=${{ "{{" }} matrix.cmake-build-type {{ "}}" }} -DBUILD_TESTING:BOOL=OFF -GNinja ../ITK - ninja - shell: cmd - - - name: Fetch CTest driver script - run: | - curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITK/dashboard/itk_common.cmake -O - - - name: Configure CTest script - shell: bash - run: | - operating_system="${{ "{{" }} matrix.os {{ "}}" }}" - cat > dashboard.cmake << EOF - set(CTEST_SITE "GitHubActions") - file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/.." CTEST_DASHBOARD_ROOT) - file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/" CTEST_SOURCE_DIRECTORY) - file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/../build" CTEST_BINARY_DIRECTORY) - set(dashboard_source_name "${GITHUB_REPOSITORY}") - if(ENV{GITHUB_REF} MATCHES "main") - set(branch "-main") - set(dashboard_model "Continuous") - else() - set(branch "-${GITHUB_REF}") - set(dashboard_model "Experimental") - endif() - set(CTEST_BUILD_NAME "${GITHUB_REPOSITORY}-${operating_system}-\${branch}") - set(CTEST_UPDATE_VERSION_ONLY 1) - set(CTEST_TEST_ARGS \${CTEST_TEST_ARGS} PARALLEL_LEVEL \${PARALLEL_LEVEL}) - set(CTEST_BUILD_CONFIGURATION "Release") - set(CTEST_CMAKE_GENERATOR "Ninja") - set(CTEST_CUSTOM_WARNING_EXCEPTION - \${CTEST_CUSTOM_WARNING_EXCEPTION} - # macOS Azure VM Warning - "ld: warning: text-based stub file" - ) - set(dashboard_no_clean 1) - set(ENV{CC} ${{ "{{" }} matrix.c-compiler {{ "}}" }}) - set(ENV{CXX} ${{ "{{" }} matrix.cxx-compiler {{ "}}" }}) - if(WIN32) - set(ENV{PATH} "\${CTEST_DASHBOARD_ROOT}/ITK-build/bin;\$ENV{PATH}") - endif() - set(dashboard_cache " - ITK_DIR:PATH=\${CTEST_DASHBOARD_ROOT}/ITK-build - BUILD_TESTING:BOOL=ON - ") - string(TIMESTAMP build_date "%Y-%m-%d") - message("CDash Build Identifier: \${build_date} \${CTEST_BUILD_NAME}") - message("CTEST_SITE = \${CTEST_SITE}") - include(\${CTEST_SCRIPT_DIRECTORY}/itk_common.cmake) - EOF - cat dashboard.cmake - - - name: Build and test - if: matrix.os != 'windows-2019' - run: | - ctest --output-on-failure -j 2 -V -S dashboard.cmake - - - name: Build and test - if: matrix.os == 'windows-2019' - run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - ctest --output-on-failure -j 2 -V -S dashboard.cmake - shell: cmd - - build-linux-python-packages: - runs-on: ubuntu-20.04 - strategy: - max-parallel: 2 - matrix: - python-version: ["37", "38", "39", "310"] - - steps: - - uses: actions/checkout@v2 - - - name: 'Free up disk space' - run: | - # Workaround for https://github.com/actions/virtual-environments/issues/709 - df -h - sudo apt-get clean - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - df -h - - - name: Get specific version of CMake, Ninja - uses: lukka/get-cmake@v3.18.3 - - - name: 'Fetch build script' - run: | - curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKPythonPackage/master/scripts/dockcross-manylinux-download-cache-and-build-module-wheels.sh -O - chmod u+x dockcross-manylinux-download-cache-and-build-module-wheels.sh - - - name: 'Build 🐍 Python 📦 package' - run: | - export ITK_PACKAGE_VERSION=${{ "{{" }} env.itk-wheel-tag {{ "}}" }} - for tarball in "-manylinux_2_28" "-manylinux2014"; do - rm -rf ITKPythonPackage - export TARBALL_SPECIALIZATION=${tarball} - ./dockcross-manylinux-download-cache-and-build-module-wheels.sh cp${{ "{{" }} matrix.python-version {{ "}}" }} - done - - - name: Publish Python package as GitHub Artifact - uses: actions/upload-artifact@v1 - with: - name: LinuxWheel${{ "{{" }} matrix.python-version {{ "}}" }} - path: dist - - build-macos-python-packages: - runs-on: macos-11 - strategy: - max-parallel: 2 - - steps: - - uses: actions/checkout@v2 - - - name: 'Specific XCode version' - run: | - sudo xcode-select -s "/Applications/Xcode_13.2.1.app" - - - name: Get specific version of CMake, Ninja - uses: lukka/get-cmake@v3.18.3 - - - name: 'Fetch build script' - run: | - curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKPythonPackage/master/scripts/macpython-download-cache-and-build-module-wheels.sh -O - chmod u+x macpython-download-cache-and-build-module-wheels.sh - - - name: 'Build 🐍 Python 📦 package' - run: | - export ITK_PACKAGE_VERSION=${{ "{{" }} env.itk-wheel-tag {{ "}}" }} - export MACOSX_DEPLOYMENT_TARGET=10.9 - ./macpython-download-cache-and-build-module-wheels.sh - - - name: Publish Python package as GitHub Artifact - uses: actions/upload-artifact@v1 - with: - name: MacOSWheels - path: dist - - build-windows-python-packages: - runs-on: windows-2019 - strategy: - max-parallel: 2 - matrix: - python-version-minor: ["7", "8", "9", "10"] - - steps: - - name: Get specific version of CMake, Ninja - uses: lukka/get-cmake@v3.18.3 - - - uses: actions/checkout@v2 - with: - path: "im" - - - name: 'Install Python' - run: | - $pythonArch = "64" - $pythonVersion = "3.${{ "{{" }} matrix.python-version-minor {{ "}}" }}" - iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/scikit-build/scikit-ci-addons/master/windows/install-python.ps1')) - - - name: 'Fetch build dependencies' - shell: bash - run: | - mv im ../../ - cd ../../im - curl -L "https://github.com/InsightSoftwareConsortium/ITKPythonBuilds/releases/download/${{ "{{" }} env.itk-wheel-tag {{ "}}" }}/ITKPythonBuilds-windows.zip" -o "ITKPythonBuilds-windows.zip" - 7z x ITKPythonBuilds-windows.zip -o/c/P -aoa -r - curl -L "https://data.kitware.com/api/v1/file/5c0ad59d8d777f2179dd3e9c/download" -o "doxygen-1.8.11.windows.bin.zip" - 7z x doxygen-1.8.11.windows.bin.zip -o/c/P/doxygen -aoa -r - curl -L "https://data.kitware.com/api/v1/file/5bbf87ba8d777f06b91f27d6/download/grep-win.zip" -o "grep-win.zip" - 7z x grep-win.zip -o/c/P/grep -aoa -r - - - name: 'Build 🐍 Python 📦 package' - shell: cmd - run: | - cd ../../im - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - set PATH=C:\P\grep;%PATH% - set CC=cl.exe - set CXX=cl.exe - C:\Python3${{ "{{" }} matrix.python-version-minor {{ "}}" }}-x64\python.exe C:\P\IPP\scripts\windows_build_module_wheels.py --py-envs "3${{ "{{" }} matrix.python-version-minor {{ "}}" }}-x64" --no-cleanup - - - name: Publish Python package as GitHub Artifact - uses: actions/upload-artifact@v1 - with: - name: WindowsWheel3.${{ "{{" }} matrix.python-version-minor {{ "}}" }} - path: ../../im/dist - - publish-python-packages-to-pypi: - needs: - - build-linux-python-packages - - build-macos-python-packages - - build-windows-python-packages - runs-on: ubuntu-20.04 - - steps: - - name: Download Python Packages - uses: actions/download-artifact@v2 - - - name: Prepare packages for upload - run: | - ls -R - for d in */; do - mv ${d}/*.whl . - done - mkdir dist - mv *.whl dist/ - ls dist + cxx-build-workflow: + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.3rc04.post4 - - name: Publish 🐍 Python 📦 package to PyPI - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@master - with: - user: __token__ - password: ${{ "{{" }} secrets.pypi_password {{ "}}" }} + python-build-workflow: + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.3rc04.post4 + secrets: + pypi_password: ${{ "{{" }} secrets.pypi_password {{ "}}" }}