build #492
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 | |
on: | |
push: | |
branches: [ master ] | |
tags: ['*'] | |
pull_request: | |
branches: [ master ] | |
schedule: | |
- cron: "0 0 * * *" | |
workflow_dispatch: | |
inputs: | |
tomviz_release_tag: | |
description: 'The Tomviz tag to use (for releases)' | |
required: true | |
jobs: | |
build-package: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: 'Linux', | |
os: ubuntu-latest, | |
generator: 'Unix Makefiles', | |
package: 'tar.gz', | |
c: 'gcc', | |
cxx: 'g++', | |
fc: 'gfortran', | |
cmake: '/cmake/bin/cmake', | |
ctest: '/cmake/bin/ctest' | |
} | |
- { | |
name: 'MacOSX', | |
os: macos-11, | |
package: 'dmg', | |
generator: 'Unix Makefiles', | |
c: 'clang', | |
cxx: 'clang++', | |
fc: 'gfortran-9', | |
cmake: 'cmake', | |
ctest: 'ctest' | |
} | |
- { | |
name: 'Windows', | |
os: windows-2019, | |
generator: 'Ninja', | |
package: 'msi', | |
c: 'cl', | |
cxx: 'cl', | |
fc: 'gfortran', | |
cmake: 'cmake', | |
ctest: 'ctest' | |
} | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
path: tomviz-superbuild | |
- name: Check out tomviz | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
repository: OpenChemistry/tomviz | |
# If the tomviz tag was provided, use that. Otherwise, use master. | |
ref: ${{ github.event.inputs.tomviz_release_tag || 'master' }} | |
path: tomviz | |
- name: Install Qt | |
if: ${{ matrix.config.name != 'Linux'}} | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: '5.12.6' | |
- name: Install Python | |
if: ${{ matrix.config.name != 'Linux'}} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.7.5' | |
- name: Setup Ninja | |
if: ${{ matrix.config.name != 'Linux'}} | |
uses: ashutoshvarma/setup-ninja@master | |
- name: Setup MSVC (Windows) | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
vsversion: '16.0' | |
- name: Setup cmake | |
if: ${{ matrix.config.name != 'Linux'}} | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.19.0' | |
- name: Set compiler variables | |
run: | | |
echo 'CC=${{ matrix.config.c }}' >> $GITHUB_ENV | |
echo 'CXX=${{ matrix.config.cxx }}' >> $GITHUB_ENV | |
echo 'FC=${{ matrix.config.fc }}' >> $GITHUB_ENV | |
- name: Symlink openssl so Python build can find it (MacOSX) | |
if: ${{ matrix.config.name == 'MacOSX'}} | |
run: | | |
sudo ln -s /usr/local/opt/[email protected] /usr/local/ssl | |
- name: Install gfortan-9 (MacOSX) | |
if: ${{ matrix.config.name == 'MacOSX'}} | |
run: | | |
brew install gcc@9 | |
- name: Make build directory | |
run: | | |
mkdir build | |
- name: Setup Xcode (MacOSX) | |
if: ${{ matrix.config.name == 'MacOSX'}} | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: '13.2.1' | |
- name: Setup configure, build and package commands | |
run: | | |
echo "CONFIGURE_COMMAND=${{ matrix.config.cmake }} --no-warn-unused-cli \ | |
-DCTEST_USE_LAUNCHERS:BOOL=1 \ | |
-DENABLE_lapack:BOOL=ON \ | |
-DCMAKE_BUILD_TYPE:STRING=Release \ | |
-DUSE_SYSTEM_qt:BOOL=ON \ | |
-DENABLE_paraview:BOOL=ON \ | |
-DQt5_DIR:PATH=\$QT5_DIR \ | |
-DENABLE_qt:BOOL=ON \ | |
-DENABLE_jsonpatch:BOOL=ON \ | |
-Ddownload_location:PATH=\$GITHUB_WORKSPACE/superbuild-downloads \ | |
-DBUILD_SHARED_LIBS:BOOL=ON \ | |
-DENABLE_pyfftw:BOOL=ON \ | |
-DENABLE_itk:BOOL=ON \ | |
-DENABLE_tbb:BOOL=ON \ | |
-DENABLE_scipy:BOOL=ON \ | |
-DENABLE_python:BOOL=ON \ | |
-DBUILD_TESTING:BOOL=ON \ | |
-DENABLE_numpy:BOOL=ON \ | |
-DENABLE_tomviz:BOOL=ON \ | |
-Dtomviz_FROM_GIT:BOOL=OFF \ | |
-Dtomviz_FROM_SOURCE_DIR:BOOL=ON \ | |
-Dtomviz_SOURCE_DIR:PATH=\$GITHUB_WORKSPACE/tomviz \ | |
-Dtomviz_SOURCE_SELECTION:STRING=source \ | |
-DENABLE_marshmallow:BOOL=ON \ | |
-DCTEST_USE_LAUNCHERS:BOOL=TRUE \ | |
-G'${{matrix.config.generator}}' \ | |
../tomviz-superbuild" \ | |
>> $GITHUB_ENV | |
echo "BUILD_COMMAND=${{ matrix.config.cmake }} --build . --config 'Release'" >> $GITHUB_ENV | |
echo "PACKAGE_COMMAND=${{ matrix.config.ctest }} --verbose" >> $GITHUB_ENV | |
- name: Run superbuild | |
if: ${{ matrix.config.name != 'Linux' }} | |
working-directory: build | |
run: | | |
${{ env.CONFIGURE_COMMAND }} | |
${{ env.BUILD_COMMAND }} | |
${{ env.PACKAGE_COMMAND }} | |
- name: Run superbuild (Linux container) | |
if: ${{ matrix.config.name == 'Linux' }} | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: openchemistry/tomviz-superbuild-centos:latest | |
options: -v ${{ github.workspace }}:/github/workspace -e GITHUB_WORKSPACE=/github/workspace -e QT5_DIR=/root/support/qt5/lib/cmake/Qt5 -w /github/workspace/build | |
run: | | |
scl enable devtoolset-7 "${{ env.CONFIGURE_COMMAND }}" | |
scl enable devtoolset-7 "${{ env.BUILD_COMMAND }}" | |
scl enable devtoolset-7 "${{ env.PACKAGE_COMMAND }}" | |
- name: Upload InstallOutput.log | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v2-preview | |
with: | |
name: InstallOutput.log | |
path: ${{ github.workspace }}/build/_CPack_Packages/*/InstallOutput.log | |
- name: Upload WIX log (Windows) | |
if: ${{ failure() && matrix.config.name == 'Windows'}} | |
uses: actions/upload-artifact@v2-preview | |
with: | |
name: wix.log | |
path: ${{ github.workspace }}/build/_CPack_Packages/WIX/wix.log | |
- name: Get version for the artifact names | |
id: describe | |
working-directory: ${{ github.workspace }}/tomviz | |
run: echo "::set-output name=version::$(git describe --tag)" | |
- name: Upload package Zip | |
if: ${{ matrix.config.name == 'Windows'}} | |
uses: actions/upload-artifact@v2-preview | |
with: | |
name: Tomviz-${{ steps.describe.outputs.version }}.zip | |
path: ${{ github.workspace }}/build/Tomviz*.zip | |
- name: Upload package | |
uses: actions/upload-artifact@v2-preview | |
with: | |
name: Tomviz-${{ steps.describe.outputs.version }}.${{ matrix.config.package }} | |
path: ${{ github.workspace }}/build/Tomviz*.${{ matrix.config.package }} | |
- name: Create nightly date | |
if: github.event.schedule == '0 0 * * *' && github.repository == 'openchemistry/tomviz-superbuild' | |
run: bash tomviz-superbuild/.github/scripts/create_nightly_date.sh | |
- name: Upload nightly (first of the month) | |
if: github.event.schedule == '0 0 1 * *' && github.repository == 'openchemistry/tomviz-superbuild' | |
# Fix version until this is fixed: https://github.com/softprops/action-gh-release/issues/280 | |
uses: softprops/[email protected] | |
with: | |
name: Nightly for "${{ env.NIGHTLY_DATE }}" | |
tag_name: "Nightly_${{ env.NIGHTLY_DATE }}" | |
prerelease: true | |
files: | | |
${{ github.workspace }}/build/Tomviz*.${{ matrix.config.package }} | |
${{ github.workspace }}/build/Tomviz*.zip | |
- name: Remove latest nightly | |
if: github.event.schedule == '0 0 * * *' && github.repository == 'openchemistry/tomviz-superbuild' | |
env: | |
# Expose the GitHub token for hub to use it | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: bash tomviz-superbuild/.github/scripts/delete_nightly_release.sh | |
- name: Rename packages to latest | |
if: github.event.schedule == '0 0 * * *' && github.repository == 'openchemistry/tomviz-superbuild' | |
run: bash tomviz-superbuild/.github/scripts/rename_packages_to_latest.sh | |
- name: Upload latest nightly | |
if: github.event.schedule == '0 0 * * *' && github.repository == 'openchemistry/tomviz-superbuild' | |
# Fix version until this is fixed: https://github.com/softprops/action-gh-release/issues/280 | |
uses: softprops/[email protected] | |
with: | |
name: Latest | |
body: Nightly for "${{ env.NIGHTLY_DATE }}" | |
tag_name: "latest" | |
prerelease: true | |
files: ${{ github.workspace }}/build/tomviz-latest.* | |
- name: Prepare release | |
if: github.event_name == 'workflow_dispatch' | |
run: bash tomviz-superbuild/.github/scripts/prepare_release.sh | |
- name: Upload release | |
if: github.event_name == 'workflow_dispatch' | |
uses: softprops/action-gh-release@v1 | |
with: | |
name: ${{ github.event.inputs.tomviz_release_tag }} | |
tag_name: ${{ github.event.inputs.tomviz_release_tag }} | |
files: ${{ github.workspace }}/release/* |