diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..f8ab9235ef --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,122 @@ +name: CI + +on: + # allows us to run workflows manually + workflow_dispatch: + + pull_request: + branches: + - develop + - master + push: + branches: + - develop + - master + +env: + MPI_DIR: /usr + HDF5_ROOT: /usr + OMP_NUM_THREADS: 2 + COVERALLS_PARALLEL: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + +jobs: + main: + runs-on: ubuntu-16.04 + strategy: + matrix: + python-version: [3.8] + mpi: [n, y] + omp: [n, y] + dagmc: [n] + event: [n] + vectfit: [n] + + include: + - python-version: 3.6 + omp: n + mpi: n + - python-version: 3.7 + omp: n + mpi: n + - dagmc: y + python-version: 3.8 + mpi: y + omp: y + - event: y + python-version: 3.8 + omp: y + mpi: n + - vectfit: y + python-version: 3.8 + omp: n + mpi: y + + env: + MPI: ${{ matrix.mpi }} + PHDF5: ${{ matrix.mpi }} + OMP: ${{ matrix.omp }} + DAGMC: ${{ matrix.dagmc }} + EVENT: ${{ matrix.event }} + VECTFIT: ${{ matrix.vectfit }} + + steps: + - + uses: actions/checkout@v2 + + - + name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - + name: Environment Variables + run: | + echo "DAGMC_ROOT=$HOME/DAGMC" + echo "OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml" >> $GITHUB_ENV + echo "OPENMC_ENDF_DATA=$HOME/endf-b-vii.1" >> $GITHUB_ENV + + - + name: Apt dependencies + shell: bash + run: | + sudo apt -y update + sudo apt install -y mpich \ + libmpich-dev \ + libhdf5-serial-dev \ + libhdf5-mpich-dev \ + libeigen3-dev + - + name: install + shell: bash + run: | + echo "$HOME/NJOY2016/build" >> $GITHUB_PATH + $GITHUB_WORKSPACE/tools/ci/gha-install.sh + - + name: before + shell: bash + run: $GITHUB_WORKSPACE/tools/ci/gha-before-script.sh + + - + name: test + shell: bash + run: $GITHUB_WORKSPACE/tools/ci/gha-script.sh + + - + name: after_success + shell: bash + run: | + cpp-coveralls -i src -i include --exclude-pattern "/usr/*" --dump cpp_cov.json + coveralls --merge=cpp_cov.json + + finish: + needs: main + runs-on: ubuntu-latest + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.github_token }} + parallel-finished: true \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6eee7f7429..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,60 +0,0 @@ - -sudo: required -dist: xenial -language: python -addons: - apt: - packages: - - mpich - - libmpich-dev - - libhdf5-serial-dev - - libhdf5-mpich-dev - - libeigen3-dev - config: - retries: true -services: - - xvfb -cache: - directories: - - $HOME/nndc_hdf5 - - $HOME/endf-b-vii.1 -env: - global: - - MPI_DIR=/usr - - DAGMC_ROOT=$HOME/DAGMC - - HDF5_ROOT=/usr - - OMP_NUM_THREADS=2 - - OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml - - OPENMC_ENDF_DATA=$HOME/endf-b-vii.1 - - PATH=$PATH:$HOME/NJOY2016/build - - COVERALLS_PARALLEL=true - - NUMPY_EXPERIMENTAL_ARRAY_FUNCTION=0 -matrix: - include: - - python: "3.6" - env: OMP=n MPI=n PHDF5=n - - python: "3.7" - env: OMP=n MPI=n PHDF5=n - - python: "3.8" - env: OMP=n MPI=n PHDF5=n - - python: "3.8" - env: OMP=y MPI=n PHDF5=n - - python: "3.8" - env: OMP=n MPI=y PHDF5=n VECTFIT=y - - python: "3.8" - env: OMP=n MPI=y PHDF5=y - - python: "3.8" - env: OMP=y MPI=y PHDF5=y DAGMC=y - - python: "3.8" - env: OMP=y MPI=n PHDF5=n EVENT=y -notifications: - webhooks: https://coveralls.io/webhook?repo_token=$COVERALLS_REPO_TOKEN -install: - - ./tools/ci/travis-install.sh -before_script: - - ./tools/ci/travis-before-script.sh -script: - - ./tools/ci/travis-script.sh -after_success: - - cpp-coveralls -i src -i include --exclude-pattern "/usr/*" --dump cpp_cov.json - - coveralls --merge=cpp_cov.json diff --git a/README.md b/README.md index f0bb67989d..a905a501c0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # OpenMC Monte Carlo Particle Transport Code [![License](https://img.shields.io/github/license/openmc-dev/openmc.svg)](http://openmc.readthedocs.io/en/latest/license.html) -[![Travis CI build status (Linux)](https://travis-ci.org/openmc-dev/openmc.svg?branch=develop)](https://travis-ci.org/openmc-dev/openmc) +[![GitHub Actions build status (Linux)](https://github.com/openmc-dev/openmc/workflows/CI/badge.svg?branch=develop)](https://github.com/openmc-dev/openmc/actions) [![Code Coverage](https://coveralls.io/repos/github/openmc-dev/openmc/badge.svg?branch=develop)](https://coveralls.io/github/openmc-dev/openmc?branch=develop) The OpenMC project aims to provide a fully-featured Monte Carlo particle diff --git a/tests/regression_tests/cpp_driver/driver.cpp b/tests/regression_tests/cpp_driver/driver.cpp index f6fde30fd3..3b4bd1daa2 100644 --- a/tests/regression_tests/cpp_driver/driver.cpp +++ b/tests/regression_tests/cpp_driver/driver.cpp @@ -2,6 +2,7 @@ #include "openmc/capi.h" #include "openmc/cell.h" #include "openmc/geometry.h" +#include "openmc/message_passing.h" #include "openmc/summary.h" #include "openmc/tallies/filter.h" #include "openmc/tallies/filter_cell.h" @@ -48,7 +49,11 @@ int main(int argc, char** argv) { // the summary file will be used to check that // temperatures were set correctly so clear // error output can be provided +#ifdef OPENMC_MPI + if (openmc::mpi::master) openmc::write_summary(); +#else openmc::write_summary(); +#endif openmc_run(); openmc_finalize(); diff --git a/tools/ci/travis-before-script.sh b/tools/ci/gha-before-script.sh similarity index 100% rename from tools/ci/travis-before-script.sh rename to tools/ci/gha-before-script.sh diff --git a/tools/ci/travis-install-dagmc.sh b/tools/ci/gha-install-dagmc.sh similarity index 100% rename from tools/ci/travis-install-dagmc.sh rename to tools/ci/gha-install-dagmc.sh diff --git a/tools/ci/travis-install-njoy.sh b/tools/ci/gha-install-njoy.sh similarity index 100% rename from tools/ci/travis-install-njoy.sh rename to tools/ci/gha-install-njoy.sh diff --git a/tools/ci/travis-install-vectfit.sh b/tools/ci/gha-install-vectfit.sh similarity index 100% rename from tools/ci/travis-install-vectfit.sh rename to tools/ci/gha-install-vectfit.sh diff --git a/tools/ci/travis-install.py b/tools/ci/gha-install.py similarity index 97% rename from tools/ci/travis-install.py rename to tools/ci/gha-install.py index a2b1b61753..2f573b1a97 100644 --- a/tools/ci/travis-install.py +++ b/tools/ci/gha-install.py @@ -47,6 +47,7 @@ def install(omp=False, mpi=False, phdf5=False, dagmc=False): if dagmc: cmake_cmd.append('-Ddagmc=ON') + cmake_cmd.append('-DCMAKE_PREFIX_PATH=~/DAGMC') # Build in coverage mode for coverage testing cmake_cmd.append('-Dcoverage=on') diff --git a/tools/ci/travis-install.sh b/tools/ci/gha-install.sh similarity index 82% rename from tools/ci/travis-install.sh rename to tools/ci/gha-install.sh index 7bbe160aa5..debf833145 100755 --- a/tools/ci/travis-install.sh +++ b/tools/ci/gha-install.sh @@ -1,31 +1,31 @@ #!/bin/bash set -ex -# Install NJOY 2016 -./tools/ci/travis-install-njoy.sh - -# Install DAGMC if needed -if [[ $DAGMC = 'y' ]]; then - ./tools/ci/travis-install-dagmc.sh -fi - -# Install vectfit for WMP generation if needed -if [[ $VECTFIT = 'y' ]]; then - ./tools/ci/travis-install-vectfit.sh -fi - # Upgrade pip, pytest, numpy before doing anything else pip install --upgrade pip pip install --upgrade pytest pip install --upgrade numpy +# Install NJOY 2016 +./tools/ci/gha-install-njoy.sh + +# Install DAGMC if needed +if [[ $DAGMC = 'y' ]]; then + ./tools/ci/gha-install-dagmc.sh +fi + +# Install vectfit for WMP generation if needed +if [[ $VECTFIT = 'y' ]]; then + ./tools/ci/gha-install-vectfit.sh +fi + # Install mpi4py for MPI configurations if [[ $MPI == 'y' ]]; then pip install --no-binary=mpi4py mpi4py fi # Build and install OpenMC executable -python tools/ci/travis-install.py +python tools/ci/gha-install.py # Install Python API in editable mode pip install -e .[test,vtk] diff --git a/tools/ci/travis-script.sh b/tools/ci/gha-script.sh similarity index 100% rename from tools/ci/travis-script.sh rename to tools/ci/gha-script.sh