diff --git a/.github/workflows/apps.yml b/.github/workflows/apps.yml index 19a3c4699a..c8968b24f7 100644 --- a/.github/workflows/apps.yml +++ b/.github/workflows/apps.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + castro: name: Castro runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Get Latest Release Tag @@ -62,6 +67,8 @@ jobs: warpx: name: WarpX runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Download WarpX @@ -105,7 +112,8 @@ jobs: pyamrex: name: pyamrex runs-on: ubuntu-latest - steps: + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' - uses: actions/checkout@v4 - name: Checkout pyamrex uses: actions/checkout@v4 diff --git a/.github/workflows/bittree.yml b/.github/workflows/bittree.yml index 299fb025d8..f07999a54a 100644 --- a/.github/workflows/bittree.yml +++ b/.github/workflows/bittree.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + bittree-2d: name: Bittree 2D runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -62,6 +67,8 @@ jobs: bittree-3d: name: Bittree 3D runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/catalyst.yml b/.github/workflows/catalyst.yml index 108b76dff1..e33d81f45c 100644 --- a/.github/workflows/catalyst.yml +++ b/.github/workflows/catalyst.yml @@ -7,10 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + catalyst: name: Catalyst runs-on: ubuntu-22.04 - if: github.event.pull_request.draft == false + needs: check_changes + if: github.event.pull_request.draft == false && needs.check_changes.outputs.has_non_docs_changes == 'true' env: CXX: g++ CC: gcc diff --git a/.github/workflows/check_changes.yml b/.github/workflows/check_changes.yml new file mode 100644 index 0000000000..35c0582cc8 --- /dev/null +++ b/.github/workflows/check_changes.yml @@ -0,0 +1,29 @@ +name: Check Changes + +on: + workflow_call: + outputs: + has_docs_changes: + value: ${{ jobs.check.outputs.has_docs_changes }} + has_non_docs_changes: + value: ${{ jobs.check.outputs.has_non_docs_changes }} + +jobs: + check: + runs-on: ubuntu-latest + outputs: + has_non_docs_changes: ${{ steps.set-output.outputs.has_non_docs_changes }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: changes + with: + filters: | + docs: + - 'Docs/**' + others: + - '!Docs/**' + - id: set-output + run: | + echo "has_docs_changes=${{ steps.changes.outputs.docs }}" >> $GITHUB_OUTPUT + echo "has_non_docs_changes=${{ steps.changes.outputs.others }}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/clang.yml b/.github/workflows/clang.yml index 1ed5240164..bbbc08723e 100644 --- a/.github/workflows/clang.yml +++ b/.github/workflows/clang.yml @@ -1,5 +1,3 @@ -# -Wno-c++17-extensions: Clang complains about nodiscard if the standard is not set to c++17. - name: LinuxClang on: [push, pull_request] @@ -9,11 +7,16 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + # Build and install libamrex as AMReX CMake project # Note: this is an intentional "minimal" build that does not enable (many) options library_clang: name: Clang@7.0 C++17 SP NOMPI Debug [lib] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -75,6 +78,8 @@ jobs: tests_clang: name: Clang@14.0 C++17 SP Particles DP Mesh Debug [tests] runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -131,6 +136,8 @@ jobs: tests_cxx20: name: Clang C++20 [tests] runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -180,6 +187,8 @@ jobs: configure-2d: name: Clang NOMPI Release [configure 2D] runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c9c34bf34f..99ebc63114 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -13,8 +13,12 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + analyze: - if: ${{ github.repository == 'AMReX-Codes/amrex' || github.event_name != 'schedule' }} + needs: check_changes + if: ${{ github.repository == 'AMReX-Codes/amrex' || github.event_name != 'schedule' }} && needs.check_changes.outputs.has_non_docs_changes == 'true' name: Analyze runs-on: ubuntu-latest permissions: diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml index 927e99ded4..4b23db20e9 100644 --- a/.github/workflows/cuda.yml +++ b/.github/workflows/cuda.yml @@ -7,10 +7,15 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + # Build libamrex and all tests with CUDA 11.2 tests-cuda11: name: CUDA@11.2 GNU@9.3.0 C++17 Release [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -62,6 +67,8 @@ jobs: tests-cuda11-clang: name: Clang@15 CUDA@11.7 C++17 Release [tests] runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' env: CC: clang-15 CXX: clang++-15 @@ -115,6 +122,8 @@ jobs: tests-nvhpc-nvcc: name: NVHPC NVCC/NVC++ C++17 Release [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -178,6 +187,8 @@ jobs: configure-3d-cuda: name: CUDA@11.2 GNU@9.3.0 [configure 3D] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/gcc.yml b/.github/workflows/gcc.yml index 88fe47c988..3b9bddac8f 100644 --- a/.github/workflows/gcc.yml +++ b/.github/workflows/gcc.yml @@ -10,11 +10,16 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + # Build and install libamrex as AMReX CMake project # Note: this is an intentional "minimal" build that does not enable (many) options library: name: GNU@8.4 C++17 Release [lib] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -72,6 +77,8 @@ jobs: tests_build_3D: name: GNU@13 C++17 3D Debug Fortran [tests] runs-on: ubuntu-24.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -121,6 +128,8 @@ jobs: tests_build_2D: name: GNU@9.3 C++17 2D Debug Fortran [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -170,6 +179,8 @@ jobs: tests_build_1D: name: GNU@9.3 C++17 1D Debug Fortran [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -221,6 +232,8 @@ jobs: tests_cxx20: name: GNU@10.1 C++20 OMP [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -281,6 +294,8 @@ jobs: tests-nonmpi: name: GNU@8.4 C++17 NOMPI [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -340,6 +355,8 @@ jobs: tests-nofortran: name: GNU@12 C++17 w/o Fortran [tests] runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -401,6 +418,8 @@ jobs: configure-1d: name: GNU@9.3 Release [configure 1D] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -441,6 +460,8 @@ jobs: configure-3d: name: GNU@11.2 Release [configure 3D] runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -481,6 +502,8 @@ jobs: configure-3d-single-tprof: name: GNU@9.3 Release [configure 3D] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -522,6 +545,8 @@ jobs: configure-3d-omp-debug: name: GNU@9.3 OMP Debug [configure 3D] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -562,6 +587,8 @@ jobs: plotfile-tools: name: GNU Plotfile Tools [tools] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -601,6 +628,8 @@ jobs: tests_run: name: GNU@13 C++17 [tests] runs-on: ubuntu-24.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -651,6 +680,8 @@ jobs: test_hdf5: name: GNU@9.3 HDF5 I/O Test [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' env: CXX: h5pcc CC: h5cc diff --git a/.github/workflows/hip.yml b/.github/workflows/hip.yml index 22154d6b01..7f88fe5557 100644 --- a/.github/workflows/hip.yml +++ b/.github/workflows/hip.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + tests-hip: name: HIP ROCm Flang C++17 [tests] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -69,6 +74,8 @@ jobs: tests-hip-wrapper: name: HIP ROCm GFortran@9.3 C++17 [tests-hipcc] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -127,6 +134,8 @@ jobs: configure-2d-single-hip: name: HIP EB [configure 2D] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -160,6 +169,8 @@ jobs: hip-3d-eb-gmake: name: HIP EB 3D GMake runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/hypre.yml b/.github/workflows/hypre.yml index c6f2ee20ed..79fb36bdf1 100644 --- a/.github/workflows/hypre.yml +++ b/.github/workflows/hypre.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + compile-hypre-cuda-eb-2d: name: CUDA EB 2D Hypre@2.26.0 runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' env: AMREX_HYPRE_HOME: ${HOME}/.cache/hypre-2.26.0-cuda steps: @@ -61,6 +66,8 @@ jobs: test-hypre-cpu-3d: name: GCC 3D Hypre@2.21.0 runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -110,6 +117,8 @@ jobs: test-hypre-solver-cpu-eb-2d: name: GCC EB 2D Hypre@2.28.0 runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/intel.yml b/.github/workflows/intel.yml index 15c7bbda58..8ae70abf48 100644 --- a/.github/workflows/intel.yml +++ b/.github/workflows/intel.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + tests-oneapi-sycl: name: oneAPI SYCL [tests] runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -59,6 +64,8 @@ jobs: tests-oneapi-sycl-eb: name: oneAPI SYCL [tests w/ EB] runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -107,6 +114,8 @@ jobs: tests-oneapi-sycl-eb-nvidia: name: oneAPI SYCL for Nvidia GPUs [tests w/ EB] runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -156,6 +165,8 @@ jobs: no-tests-oneapi-sycl-amd: name: oneAPI SYCL for AMD GPUs runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -203,6 +214,8 @@ jobs: tests-icc: name: ICC [tests] runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 76aba4cef6..06034a471a 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -7,10 +7,15 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + # Build libamrex and all tests tests-macos-universal-nompi: name: AppleClang Universal w/o MPI [tests-universal] runs-on: macos-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies @@ -55,6 +60,8 @@ jobs: tests-macos: name: AppleClang@11.0 GFortran@9.3 [tests] runs-on: macos-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/petsc.yml b/.github/workflows/petsc.yml index efde21b89a..89784a9831 100644 --- a/.github/workflows/petsc.yml +++ b/.github/workflows/petsc.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + test-petsc-cpu-2d: name: GCC 2D EB PETSc@3.18.1 runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/sensei.yml b/.github/workflows/sensei.yml index 52f8e418a6..d1fcbaea67 100644 --- a/.github/workflows/sensei.yml +++ b/.github/workflows/sensei.yml @@ -9,9 +9,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + test_sensei: name: SENSEI Adaptor [test] runs-on: ubuntu-20.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' env: CXX: clang++ CC: clang diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml index d56e52c63e..dab1cbe7e7 100644 --- a/.github/workflows/smoke.yml +++ b/.github/workflows/smoke.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + multid: name: GNU Multi-D runs-on: ubuntu-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - name: Dependencies diff --git a/.github/workflows/sundials.yml b/.github/workflows/sundials.yml index e17234ba28..645ac13ae4 100644 --- a/.github/workflows/sundials.yml +++ b/.github/workflows/sundials.yml @@ -7,9 +7,14 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + sundials-cpu: name: GCC SUNDIALS@6.5.0 runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' env: CCACHE_COMPRESS: 1 CCACHE_COMPRESSLEVEL: 10 @@ -70,6 +75,8 @@ jobs: sundials-cuda: name: CUDA SUNDIALS@7.0.0 runs-on: ubuntu-22.04 + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' env: CCACHE_COMPRESS: 1 CCACHE_COMPRESSLEVEL: 10 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4dd9a3f391..0c894e4686 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -7,10 +7,15 @@ concurrency: cancel-in-progress: true jobs: + check_changes: + uses: ./.github/workflows/check_changes.yml + # Build libamrex and all tests tests_msvc: name: MSVC C++17 w/o Fortran w/o MPI runs-on: windows-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 #- name: Set Up Cache @@ -57,6 +62,8 @@ jobs: test_msvc_static: name: MSVC C++17 w/o Fortran w/o MPI static runs-on: windows-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 #- name: Set Up Cache @@ -105,6 +112,8 @@ jobs: tests_clang: name: MSVC Clang C++17 w/o Fortran w/o MPI runs-on: windows-latest + needs: check_changes + if: needs.check_changes.outputs.has_non_docs_changes == 'true' steps: - uses: actions/checkout@v4 - uses: seanmiddleditch/gha-setup-ninja@master