diff --git a/.circleci/conda_env.yml b/.circleci/conda_env.yml deleted file mode 100644 index 4df7936..0000000 --- a/.circleci/conda_env.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: wrf-python -channels: - - conda-forge -dependencies: - - gcc_linux-64 - - gfortran_linux-64 - - setuptools - - python - - numpy - - wrapt - - xarray - - netcdf4 diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 469988b..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,99 +0,0 @@ -# Python CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-python/ for more details -# -version: 2 -jobs: - lint: - docker: - - image: circleci/python:3.6.1 - - working_directory: ~/repo - - steps: - - checkout - - run: - name: install pycodestyle - command: | - sudo pip install pycodestyle - - run: - name: run pycodestyle - command: | - pycodestyle src test - - build: - docker: - # specify the version you desire here - # use `-browsers` prefix for selenium tests, e.g. `3.6.1-browsers` - - image: circleci/python:3.6.1 - - # Specify service dependencies here if necessary - # CircleCI maintains a library of pre-built images - # documented at https://circleci.com/docs/2.0/circleci-images/ - # - image: circleci/postgres:9.4 - - working_directory: ~/repo - - steps: - - checkout - - # Download and cache dependencies - - restore_cache: - keys: - - v1-dependencies-{{ checksum ".circleci/conda_env.yml" }} - - - run: - name: install conda and dependencies - command: | - test -d ~/miniconda3 && exit 0 - echo "Installing a fresh version of Miniconda." - MINICONDA_URL="https://repo.continuum.io/miniconda" - MINICONDA_FILE="Miniconda3-latest-Linux-x86_64.sh" - curl -L -O "${MINICONDA_URL}/${MINICONDA_FILE}" - bash $MINICONDA_FILE -b - source ~/miniconda3/bin/activate root - conda env create -f .circleci/conda_env.yml - - - save_cache: - paths: - - ~/miniconda3 - key: v1-dependencies-{{ checksum ".circleci/conda_env.yml" }} - - - run: - name: build wrf-python - command: | - source ~/miniconda3/bin/activate wrf-python - unset FFLAGS - unset LDFLAGS - unset CFLAGS - cd fortran/build_help - $FC -o sizes -fopenmp omp_sizes.f90 - LD_LIBRARY_PATH=~/miniconda3/envs/wrf-python/lib python sub_sizes.py - cd .. - $FC -E ompgen.F90 -fopenmp -cpp -o omp.f90 - cd .. - python setup.py config_fc --f90flags="-mtune=generic -fopenmp" build_ext --libraries="gomp" build - python setup.py install --single-version-externally-managed --record=record.txt - - - # run tests! - # this example uses Django's built-in test-runner - # other common Python testing frameworks include pytest and nose - # https://pytest.org - # https://nose.readthedocs.io - - run: - name: run tests - command: | - source ~/miniconda3/bin/activate wrf-python - cd test/ci_tests - python utests.py - - - store_artifacts: - path: test-reports - destination: test-reports -workflows: - version: 2 - build_and_lint: - jobs: - - build - - lint diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8f51670 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,56 @@ +name: CI +on: + push: + pull_request: + workflow_dispatch: + # schedule: + # - cron: '0 0 * * *' # Daily “At 00:00” + +jobs: + test: + # if: | + # github.repository == 'NCAR/wrf-python' + name: Python (${{ matrix.python-version }}, ${{ matrix.os }}) + runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash -l {0} + + strategy: + fail-fast: false + matrix: + os: [ "ubuntu-latest", "macos-latest"] + python-version: [ "3.6", "3.7", "3.8", "3.9" ] + + steps: + - name: Cancel previous runs + uses: styfle/cancel-workflow-action@0.9.0 + with: + access_token: ${{ github.token }} + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ github.token }} + - name: Conda setup + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: wrf_python_build + python-version: ${{ matrix.python-version }} + channels: conda-forge, ncar + - name: Conda install (Darwin) + if: matrix.os == 'macos-latest' + run: | + conda env update --file build_envs/Darwin.yml --prune + - name: Conda install (Linux) + if: matrix.os == 'ubuntu-latest' + run: | + conda env update --file build_envs/Linux.yml --prune + - name: Build WRF-Python + run: | + cd build_scripts + ./gnu_omp.sh + cd .. + - name: Run tests + run: | + cd test/ci_tests + python utests.py diff --git a/osx.yml b/build_envs/Darwin.yml similarity index 89% rename from osx.yml rename to build_envs/Darwin.yml index a9190d0..044292e 100644 --- a/osx.yml +++ b/build_envs/Darwin.yml @@ -1,20 +1,21 @@ # Create full conda environment for development, including some useful tools -name: develop +name: wrf_python_build channels: - conda-forge dependencies: - python=3 - - wrapt - - numpy + - basemap + - cartopy + - clang_osx-64 + - gfortran_osx-64 + - jupyter - matplotlib - netcdf4 - - xarray - - jupyter + - numpy + - pycodestyle + - setuptools - sphinx - sphinx_rtd_theme - - pycodestyle - - cartopy - - basemap - - clang_osx-64 - - gfortran_osx-64 + - wrapt + - xarray diff --git a/linux.yml b/build_envs/Linux.yml similarity index 89% rename from linux.yml rename to build_envs/Linux.yml index 85df06d..60af2aa 100644 --- a/linux.yml +++ b/build_envs/Linux.yml @@ -1,20 +1,21 @@ # Create full conda environment for development, including some useful tools -name: develop +name: wrf_python_build channels: - conda-forge dependencies: - python=3 - - wrapt - - numpy + - basemap + - cartopy + - gcc_linux-64 + - gfortran_linux-64 + - jupyter - matplotlib - netcdf4 - - xarray - - jupyter + - numpy + - pycodestyle + - setuptools - sphinx - sphinx_rtd_theme - - pycodestyle - - cartopy - - basemap - - gcc_linux-64 - - gfortran_linux-64 + - wrapt + - xarray diff --git a/win64.yml b/build_envs/Win64.yml similarity index 85% rename from win64.yml rename to build_envs/Win64.yml index 7c68e41..e9bb70a 100644 --- a/win64.yml +++ b/build_envs/Win64.yml @@ -1,19 +1,21 @@ # Create full conda environment for development, including some useful tools -name: develop +name: wrf_python_build channels: - conda-forge + - msys2 dependencies: - python=3 - - wrapt - - numpy + - basemap + - cartopy + - jupyter + - m2w64-toolchain - matplotlib - netcdf4 - - xarray - - jupyter + - numpy + - pycodestyle + - setuptools - sphinx - sphinx_rtd_theme - - pycodestyle - - cartopy - - basemap - - m2w64-toolchain + - wrapt + - xarray diff --git a/doc/source/contrib.rst b/doc/source/contrib.rst index e1f1d44..3b2e0ed 100644 --- a/doc/source/contrib.rst +++ b/doc/source/contrib.rst @@ -301,19 +301,19 @@ contributing is: .. code:: - conda env create -f osx.yml + conda env create -f build_envs/Darwin.yml Linux: .. code:: - conda env create -f linux.yml + conda env create -f build_envs/Linux.yml Win64: .. code:: - conda env create -f win64.yml + conda env create -f build_envs/Win64.yml Note: For Win64, you will also need VS2015 installed on your system. @@ -321,7 +321,7 @@ contributing is: .. code:: - conda activate develop + conda activate wrf_python_build - CD to the build_scripts directory. diff --git a/testenv2.yml b/testenv2.yml deleted file mode 100644 index a3ef85c..0000000 --- a/testenv2.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Create full conda environment for development, including some useful tools -name: testenv2 -channels: - - conda-forge -dependencies: - - python=2 - - wrapt - - numpy - - matplotlib - - netcdf4 - - xarray - - jupyter - - sphinx - - sphinx_rtd_theme - - pycodestyle - - cartopy - - basemap - - clang_osx-64 - - gfortran_osx-64 - - pynio - - ncl - \ No newline at end of file diff --git a/testenv3.yml b/testenv3.yml deleted file mode 100644 index 356bd53..0000000 --- a/testenv3.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Create full conda environment for development, including some useful tools -name: testenv3 -channels: - - conda-forge -dependencies: - - python=3 - - wrapt - - numpy - - matplotlib - - netcdf4 - - xarray - - jupyter - - sphinx - - sphinx_rtd_theme - - pycodestyle - - cartopy - - basemap - - clang_osx-64 - - gfortran_osx-64 - - pynio - - ncl - \ No newline at end of file