|
| 1 | +name: 'Build, test, package' |
| 2 | +description: 'Build, test, and package distributions for an ITK external module.' |
| 3 | +inputs: |
| 4 | + cmake-build-type: |
| 5 | + required: false |
| 6 | + default: 'MinSizeRel' |
| 7 | + cmake-options: |
| 8 | + description: 'Additional CMake arguments to use in building and testing the current remote module.' |
| 9 | + required: false |
| 10 | + default: '' |
| 11 | + itk-cmake-options: |
| 12 | + description: 'Additional CMake arguments to use in building ITK, such as enabling certain remote modules.' |
| 13 | + required: false |
| 14 | + default: '' |
| 15 | + itk-git-tag: |
| 16 | + required: false |
| 17 | + default: '835dc01388d22c4b4c9a46b01dbdfe394ec23511' # v5.3rc04.post2 |
| 18 | + |
| 19 | +runs: |
| 20 | + using: "composite" |
| 21 | + steps: |
| 22 | + - name: Define OS-dependent environment variables |
| 23 | + if: runner.os == 'Windows' |
| 24 | + shell: bash |
| 25 | + run: | |
| 26 | + echo "C_COMPILER=cl.exe" >> $GITHUB_ENV # defines env.C_COMPILER |
| 27 | + echo "CXX_COMPILER=cl.exe" >> $GITHUB_ENV # defines env.CXX_COMPILER |
| 28 | + echo "Set env.C_COMPILER=${{ env.C_COMPILER}} and env.CXX_COMPILER=${{ env.CXX_COMPILER }}" |
| 29 | +
|
| 30 | + - name: Define OS-dependent environment variables |
| 31 | + if: runner.os == 'macOS' |
| 32 | + shell: bash |
| 33 | + run: | |
| 34 | + echo "C_COMPILER=clang" >> $GITHUB_ENV |
| 35 | + echo "CXX_COMPILER=clang++" >> $GITHUB_ENV |
| 36 | + echo "Set env.C_COMPILER=${{ env.C_COMPILER}} and env.CXX_COMPILER=${{ env.CXX_COMPILER }}" |
| 37 | +
|
| 38 | + - name: Define OS-dependent environment variables |
| 39 | + if: runner.os == 'Linux' |
| 40 | + shell: bash |
| 41 | + run: | |
| 42 | + echo "C_COMPILER=gcc" >> $GITHUB_ENV |
| 43 | + echo "CXX_COMPILER=g++" >> $GITHUB_ENV |
| 44 | + echo "Set env.C_COMPILER=${{ env.C_COMPILER}} and env.CXX_COMPILER=${{ env.CXX_COMPILER }}" |
| 45 | +
|
| 46 | + - name: Set up Python 3.8 |
| 47 | + uses: actions/setup-python@v2 |
| 48 | + with: |
| 49 | + python-version: 3.8 |
| 50 | + |
| 51 | + - name: Install build dependencies |
| 52 | + shell: bash |
| 53 | + run: | |
| 54 | + python -m pip install --upgrade pip |
| 55 | + python -m pip install ninja |
| 56 | + python -m pip install cookiecutter |
| 57 | +
|
| 58 | + - name: Get specific version of CMake, Ninja |
| 59 | + |
| 60 | + |
| 61 | + - name: Download ITK |
| 62 | + shell: bash |
| 63 | + run: | |
| 64 | + cd .. |
| 65 | + git clone https://github.com/InsightSoftwareConsortium/ITK.git |
| 66 | + cd ITK |
| 67 | + git checkout ${{ inputs.itk-git-tag }} |
| 68 | + pwd |
| 69 | +
|
| 70 | + - name: Build ITK |
| 71 | + if: runner.os != 'Windows' |
| 72 | + shell: bash |
| 73 | + run: | |
| 74 | + cd .. |
| 75 | + mkdir ITK-build |
| 76 | + cd ITK-build |
| 77 | + cmake -DCMAKE_C_COMPILER:FILEPATH="${{ env.C_COMPILER }}" -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER="${{ env.CXX_COMPILER }}" -DCMAKE_BUILD_TYPE:STRING=${{ inputs.cmake-build-type }} -DBUILD_TESTING:BOOL=OFF ${{ inputs.itk-cmake-options }} -GNinja ../ITK |
| 78 | + ninja |
| 79 | +
|
| 80 | + - name: Build ITK |
| 81 | + if: runner.os == 'Windows' |
| 82 | + shell: cmd |
| 83 | + run: | |
| 84 | + cd .. |
| 85 | + mkdir ITK-build |
| 86 | + cd ITK-build |
| 87 | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" |
| 88 | + cmake -DCMAKE_C_COMPILER:FILEPATH="${{ env.C_COMPILER }}" -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER="${{ env.CXX_COMPILER }}" -DCMAKE_BUILD_TYPE:STRING=${{ inputs.cmake-build-type }} -DBUILD_TESTING:BOOL=OFF ${{ inputs.itk-cmake-options }} -GNinja ../ITK |
| 89 | + ninja |
| 90 | +
|
| 91 | + - name: Fetch CTest driver script |
| 92 | + shell: bash |
| 93 | + run: | |
| 94 | + curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITK/dashboard/itk_common.cmake -O |
| 95 | +
|
| 96 | + - name: Configure CTest script |
| 97 | + shell: bash |
| 98 | + run: | |
| 99 | + operating_system="${{ runner.os }}_${{ env.RUNNER_ARCH }}" |
| 100 | + echo "CTest dashboard root is at ${{ env.GITHUB_WORKSPACE }}/.." |
| 101 | + cat > dashboard.cmake << EOF |
| 102 | + set(CTEST_SITE "GitHubActions") |
| 103 | + file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/.." CTEST_DASHBOARD_ROOT) |
| 104 | + file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/" CTEST_SOURCE_DIRECTORY) |
| 105 | + file(TO_CMAKE_PATH "\$ENV{GITHUB_WORKSPACE}/../build" CTEST_BINARY_DIRECTORY) |
| 106 | + set(dashboard_source_name "${GITHUB_REPOSITORY}") |
| 107 | + if(ENV{GITHUB_REF} MATCHES "master") |
| 108 | + set(branch "-master") |
| 109 | + set(dashboard_model "Continuous") |
| 110 | + else() |
| 111 | + set(branch "-${GITHUB_REF}") |
| 112 | + set(dashboard_model "Experimental") |
| 113 | + endif() |
| 114 | + set(CTEST_BUILD_NAME "${GITHUB_REPOSITORY}-${operating_system}-\${branch}") |
| 115 | + set(CTEST_UPDATE_VERSION_ONLY 1) |
| 116 | + set(CTEST_TEST_ARGS \${CTEST_TEST_ARGS} PARALLEL_LEVEL \${PARALLEL_LEVEL}) |
| 117 | + set(CTEST_BUILD_CONFIGURATION "Release") |
| 118 | + set(CTEST_CMAKE_GENERATOR "Ninja") |
| 119 | + set(CTEST_CUSTOM_WARNING_EXCEPTION |
| 120 | + \${CTEST_CUSTOM_WARNING_EXCEPTION} |
| 121 | + # macOS Azure VM Warning |
| 122 | + "ld: warning: text-based stub file" |
| 123 | + ) |
| 124 | + set(dashboard_no_clean 1) |
| 125 | + set(ENV{CC} ${{ env.C_COMPILER }}) |
| 126 | + set(ENV{CXX} ${{ env.CXX_COMPILER }}) |
| 127 | + if(WIN32) |
| 128 | + set(ENV{PATH} "\${CTEST_DASHBOARD_ROOT}/ITK-build/bin;\$ENV{PATH}") |
| 129 | + endif() |
| 130 | + set(dashboard_cache " |
| 131 | + ITK_DIR:PATH=\${CTEST_DASHBOARD_ROOT}/ITK-build |
| 132 | + Module_SplitComponents_BUILD_EXAMPLES:BOOL=ON |
| 133 | + BUILD_TESTING:BOOL=ON |
| 134 | + ${{ inputs.cmake-options }} |
| 135 | + ") |
| 136 | + string(TIMESTAMP build_date "%Y-%m-%d") |
| 137 | + message("CDash Build Identifier: \${build_date} \${CTEST_BUILD_NAME}") |
| 138 | + message("CTEST_SITE = \${CTEST_SITE}") |
| 139 | + include(\${CTEST_SCRIPT_DIRECTORY}/itk_common.cmake) |
| 140 | + EOF |
| 141 | + cat dashboard.cmake |
| 142 | +
|
| 143 | + - name: Build and test |
| 144 | + if: runner.os != 'Windows' |
| 145 | + shell: bash |
| 146 | + run: | |
| 147 | + ctest --output-on-failure -j 2 -V -S dashboard.cmake |
| 148 | +
|
| 149 | + - name: Build and test |
| 150 | + if: runner.os == 'Windows' |
| 151 | + shell: cmd |
| 152 | + run: | |
| 153 | + call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" |
| 154 | + ctest --output-on-failure -j 2 -V -S dashboard.cmake |
0 commit comments