Merge pull request #429 from jhlegarreta/BumpGHAMacOS #730
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: Build, test, publish | |
on: [push,pull_request] | |
env: | |
itk-git-tag: "v5.4rc03" | |
jobs: | |
build-test-cxx: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 3 | |
matrix: | |
os: [ubuntu-22.04, windows-2022, macos-13] | |
include: | |
- os: ubuntu-22.04 | |
c-compiler: "gcc" | |
cxx-compiler: "g++" | |
cmake-build-type: "MinSizeRel" | |
- os: windows-2022 | |
c-compiler: "cl.exe" | |
cxx-compiler: "cl.exe" | |
cmake-build-type: "Release" | |
- os: macos-13 | |
c-compiler: "clang" | |
cxx-compiler: "clang++" | |
cmake-build-type: "MinSizeRel" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
path: Ex | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- 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.24.2 | |
- 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-2022' | |
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-2022' | |
run: | | |
cd .. | |
mkdir ITK-build | |
cd ITK-build | |
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=OFF -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: | | |
mv Ex ../../ | |
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}/../../Ex" CTEST_SOURCE_DIRECTORY) | |
file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/../../bld/" CTEST_BINARY_DIRECTORY) | |
set(dashboard_source_name "${GITHUB_REPOSITORY}") | |
if(ENV{GITHUB_REF} MATCHES "master") | |
set(branch "-master") | |
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 }}) | |
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-2022' | |
run: | | |
ctest -j 2 -VV -S dashboard.cmake | |
- name: Build and test | |
if: matrix.os == 'windows-2022' | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
ctest -j 2 -VV -S dashboard.cmake | |
shell: cmd | |
build-test-python-superbuild: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 3 | |
matrix: | |
os: [ubuntu-22.04, windows-2022, macos-12] | |
include: | |
- os: ubuntu-22.04 | |
c-compiler: "gcc" | |
cxx-compiler: "g++" | |
cmake-build-type: "MinSizeRel" | |
- os: windows-2022 | |
c-compiler: "cl.exe" | |
cxx-compiler: "cl.exe" | |
cmake-build-type: "Release" | |
- os: macos-12 | |
c-compiler: "clang" | |
cxx-compiler: "clang++" | |
cmake-build-type: "MinSizeRel" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
path: Ex | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- 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.24.2 | |
- name: Fetch CTest driver script | |
run: | | |
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKSphinxExamples/dashboard/itkexamples_common.cmake -O | |
- name: Configure CTest script | |
shell: bash | |
run: | | |
mv Ex ../../ | |
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}/../../Ex" CTEST_SOURCE_DIRECTORY) | |
file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/../../bld/" CTEST_BINARY_DIRECTORY) | |
set(dashboard_superbuild 1) | |
if(ENV{GITHUB_REF} MATCHES "master") | |
set(branch "-master") | |
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 " | |
USE_GIT_PROTOCOL:BOOL=OFF | |
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}/itkexamples_common.cmake) | |
EOF | |
cat dashboard.cmake | |
- name: Build and test | |
if: matrix.os != 'windows-2022' | |
run: | | |
ctest -j 2 -VV -S dashboard.cmake | |
- name: Build and test | |
if: matrix.os == 'windows-2022' | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
ctest -j 2 -VV -S dashboard.cmake | |
shell: cmd | |
build-test-notebooks: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 3 | |
matrix: | |
os: [ubuntu-22.04, windows-2022, macos-12] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- name: Install build dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install ninja | |
python -m pip install itk>=5.4rc3 | |
python -m pip install matplotlib | |
python -m pip install itkwidgets | |
# Issues with 5.7.0 | |
# https://github.com/InsightSoftwareConsortium/ITKSphinxExamples/issues/407 | |
python -m pip install traitlets==5.6.0 pytest nbmake | |
- name: Test notebooks | |
run: | | |
pytest --nbmake --nbmake-timeout=30000 | |
build-test-documentation: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
max-parallel: 3 | |
matrix: | |
os: [ubuntu-22.04] | |
include: | |
- os: ubuntu-22.04 | |
c-compiler: "gcc" | |
cxx-compiler: "g++" | |
cmake-build-type: "Release" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
path: Ex | |
submodules: recursive | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- name: Get specific version of CMake, Ninja | |
uses: lukka/get-cmake@v3.24.2 | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install gnuplot dvipng | |
sudo apt-get install texlive-full | |
sudo apt-get install curl | |
curl -LO https://github.com/jgm/pandoc/releases/download/3.1.6/pandoc-3.1.6-1-amd64.deb | |
sudo apt-get install ./pandoc-3.1.6-1-amd64.deb | |
sudo apt-get install imagemagick | |
python -m pip install --upgrade pip | |
python -m pip install ninja | |
python -m pip install 'sphinx==7.2.6' | |
python -m pip install --ignore-installed six | |
python -m pip install ipython | |
echo "Workspace: ${{ github.workspace }}" | |
- name: Remove Duplicate Declaration Warnings | |
run: | | |
SITE_PACKAGES_DIR=$(python3 "-c" "from distutils import sysconfig; print(sysconfig.get_python_lib())") | |
sed -i "6559d" ${SITE_PACKAGES_DIR}/sphinx/domains/cpp.py | |
- name: Fetch CTest driver script | |
run: | | |
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKSphinxExamples/dashboard/itkexamples_common.cmake -O | |
- name: Configure CTest script | |
shell: bash | |
run: | | |
mv Ex ../../ | |
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}/../../Ex" CTEST_SOURCE_DIRECTORY) | |
file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/../../bld/" CTEST_BINARY_DIRECTORY) | |
set(dashboard_superbuild 1) | |
if(ENV{GITHUB_REF} MATCHES "master") | |
set(branch "-master") | |
set(dashboard_model "Continuous") | |
else() | |
set(branch "-${GITHUB_REF}") | |
set(dashboard_model "Experimental") | |
endif() | |
set(CTEST_BUILD_NAME "${GITHUB_REPOSITORY}-${operating_system}-\${branch}-docs") | |
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" | |
# breathelink warning | |
"WARNING: Duplicate C" | |
) | |
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 " | |
USE_GIT_PROTOCOL:BOOL=OFF | |
BUILD_TESTING:BOOL=ON | |
BUILD_DOCUMENTATION: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}/itkexamples_common.cmake) | |
EOF | |
cat dashboard.cmake | |
- name: Build and test | |
run: | | |
ctest -j 2 -VV -S dashboard.cmake | |
- name: Publish Documentation html as GitHub Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Documentation | |
path: | | |
/home/runner/work/bld/ITKEx-build/ITKSphinxExamples-*-html.tar.gz | |
/home/runner/work/bld/ITKEx-build/ITKSphinxExamples-*-html.zip | |
- name: Unpack site | |
shell: bash | |
run: | | |
mkdir ${{ github.workspace }}/site | |
echo "Unpack to ${{ github.workspace }}/site" | |
tar --strip-components=1 -xf /home/runner/work/bld/ITKEx-build/ITKSphinxExamples-*-html.tar.gz -C ${{ github.workspace }}/site | |
- name: Deploy website to Netlify | |
uses: nwtgck/actions-netlify@v1.1.13 | |
with: | |
publish-dir: '${{ github.workspace }}/site' | |
production-branch: master | |
production-deploy: true | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
deploy-message: ${{ github.event.pull_request.title }}) | |
enable-pull-request-comment: true | |
enable-commit-comment: true | |
overwrites-pull-request-comment: true | |
env: | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
timeout-minutes: 5 |