mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-08-17 19:09:04 +00:00
6072bf6bb7
.github/workflows/CI.yml | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+)
113 lines
3.0 KiB
YAML
113 lines
3.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
- main
|
|
|
|
jobs:
|
|
# Fast path: matrix-free / DOF-based assembler bundles only (~400 tests).
|
|
# Uses `test/runtests.jl` topic filtering via `Pkg.test(test_args=...)`.
|
|
test-assemblers:
|
|
name: Julia ${{ matrix.version }} - assemblers topic (fast)
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
version:
|
|
- '1'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: julia-actions/setup-julia@v2
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
|
|
- name: Layer contract (src architecture)
|
|
run: julia scripts/check_layer_contract.jl
|
|
|
|
- uses: julia-actions/cache@v2
|
|
|
|
- uses: julia-actions/julia-buildpkg@v1
|
|
|
|
- uses: julia-actions/julia-runtest@v1
|
|
with:
|
|
test_args: assemblers
|
|
coverage: false
|
|
|
|
mpi-partitioned-matvec-smoke:
|
|
name: MPI partitioned matvec + CG smoke (3 ranks)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: julia-actions/setup-julia@v2
|
|
with:
|
|
version: '1'
|
|
|
|
- uses: julia-actions/cache@v2
|
|
|
|
# MPI is a weak dependency: the default package environment does not install it.
|
|
# Use a throwaway env with `Pkg.develop` + `Pkg.add("MPI")` so `using MPI` loads
|
|
# `JuliaFEMMPIExt` when running the smoke driver under mpiexec.
|
|
- name: mpiexec smoke scripts (matvec + CG)
|
|
working-directory: ${{ github.workspace }}
|
|
run: |
|
|
export MPI_SMOKE_ENV="$(mktemp -d)"
|
|
julia -e '
|
|
using Pkg
|
|
envdir = ENV["MPI_SMOKE_ENV"]
|
|
root = pwd()
|
|
Pkg.activate(envdir)
|
|
Pkg.develop(path=root)
|
|
Pkg.add("MPI")
|
|
Pkg.instantiate()
|
|
using MPI
|
|
mpidir = joinpath(root, "test", "mpi")
|
|
for script_name in ("partitioned_matvec_smoke.jl", "partitioned_matvec_cg.jl")
|
|
script = joinpath(mpidir, script_name)
|
|
run(`$(MPI.mpiexec()) -n 3 $(Base.julia_cmd()) --project=$envdir --startup-file=no $script`)
|
|
end
|
|
'
|
|
|
|
test:
|
|
name: Julia ${{ matrix.version }} - ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
version:
|
|
- '1.10' # LTS
|
|
- '1' # Latest stable
|
|
os:
|
|
- ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: julia-actions/setup-julia@v2
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
|
|
- name: Layer contract (src architecture)
|
|
run: julia scripts/check_layer_contract.jl
|
|
|
|
- uses: julia-actions/cache@v2
|
|
|
|
- uses: julia-actions/julia-buildpkg@v1
|
|
|
|
- uses: julia-actions/julia-runtest@v1
|
|
|
|
- uses: julia-actions/julia-processcoverage@v1
|
|
|
|
- uses: codecov/codecov-action@v4
|
|
with:
|
|
files: lcov.info
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
fail_ci_if_error: false
|