Merge pull request #1182 from ChrisRackauckas-Claude/sci-py-robust-init #2866
This file contains hidden or 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: CI | |
| on: | |
| pull_request: | |
| branches: | |
| - master | |
| paths-ignore: | |
| - "docs/**" | |
| push: | |
| branches: | |
| - master | |
| paths-ignore: | |
| - "docs/**" | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| continue-on-error: ${{ matrix.group == 'Downstream' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| group: | |
| - Core | |
| - OptimizationBase | |
| - OptimizationAuglag | |
| - OptimizationBBO | |
| - OptimizationCMAEvolutionStrategy | |
| - OptimizationEvolutionary | |
| - OptimizationGCMAES | |
| - OptimizationLBFGSB | |
| - OptimizationIpopt | |
| - OptimizationMadNLP | |
| - OptimizationManopt | |
| - OptimizationMetaheuristics | |
| - OptimizationMOI | |
| - OptimizationMultistartOptimization | |
| - OptimizationNLopt | |
| - OptimizationNOMAD | |
| - OptimizationODE | |
| - OptimizationOptimJL | |
| - OptimizationOptimisers | |
| - OptimizationPRIMA | |
| - OptimizationPyCMA | |
| - OptimizationQuadDIRECT | |
| - OptimizationSciPy | |
| - OptimizationSophia | |
| - OptimizationSpeedMapping | |
| - OptimizationPolyalgorithms | |
| - OptimizationNLPModels | |
| - SimpleOptimization | |
| version: | |
| - "1.11" | |
| - "lts" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: julia-actions/setup-julia@v2 | |
| with: | |
| version: ${{ matrix.version }} | |
| - uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-artifacts | |
| with: | |
| path: ~/.julia/artifacts | |
| key: ${{ runner.os }}-test-${{ matrix.version }}-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-test-${{ matrix.version }}-${{ env.cache-name }}- | |
| ${{ runner.os }}-test-${{ matrix.version }}- | |
| ${{ runner.os }}- | |
| # Serialize precompile workers for the python-using groups. PythonCall's | |
| # `JlWrap.__init__` has been observed to fail intermittently with | |
| # `UndefRefError: access to undefined reference` when multiple precompile | |
| # workers spin up the wrapper-type registration concurrently. Setting | |
| # `JULIA_NUM_PRECOMPILE_TASKS=1` removes that race; the cost on these | |
| # small subpackages is negligible. | |
| - if: ${{ matrix.group == 'OptimizationSciPy' || matrix.group == 'OptimizationPyCMA' }} | |
| run: echo "JULIA_NUM_PRECOMPILE_TASKS=1" >> $GITHUB_ENV | |
| - uses: julia-actions/julia-buildpkg@v1 | |
| - if: ${{ matrix.group == 'OptimizationQuadDIRECT' }} | |
| run: julia --project -e 'using Pkg; Pkg.Registry.add(RegistrySpec(url = "https://github.com/HolyLab/HolyLabRegistry.git")); Pkg.add("QuadDIRECT")' | |
| - name: ${{ matrix.group }} | |
| env: | |
| GROUP: ${{ matrix.group }} | |
| shell: julia --color=yes --check-bounds=yes --depwarn=yes {0} | |
| run: | | |
| using Pkg | |
| const GROUP = get(ENV, "GROUP", "Core") | |
| function dev_subpkg(subpkgs::Vector{String}) | |
| specs = [PackageSpec(path = "lib/$subpkg") for subpkg in subpkgs] | |
| Pkg.develop(specs) | |
| end | |
| if GROUP == "Core" | |
| Pkg.activate(".") | |
| else | |
| subpkg_path = "lib/${{ matrix.group }}" | |
| Pkg.activate(subpkg_path) | |
| end | |
| if VERSION < v"1.11" | |
| @info "Preparing env" | |
| if GROUP == "Core" | |
| @info "Testing Core" | |
| dev_subpkg(["OptimizationBase", "OptimizationLBFGSB", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers"]) | |
| elseif GROUP == "OptimizationBase" | |
| dev_subpkg(["OptimizationLBFGSB", "OptimizationManopt"]) | |
| elseif GROUP == "OptimizationAuglag" | |
| dev_subpkg(["OptimizationBase", "OptimizationOptimisers"]) | |
| elseif GROUP == "OptimizationBBO" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationCMAEvolutionStrategy" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationEvolutionary" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationGCMAES" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationLBFGSB" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationIpopt" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationMadNLP" | |
| dev_subpkg(["OptimizationBase", "OptimizationNLPModels"]) | |
| elseif GROUP == "OptimizationManopt" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationMetaheuristics" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationMOI" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationMultistartOptimization" | |
| dev_subpkg(["OptimizationBase", "OptimizationNLopt"]) | |
| elseif GROUP == "OptimizationNLopt" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationNOMAD" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationODE" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationOptimJL" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationOptimisers" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationPRIMA" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationPyCMA" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationQuadDIRECT" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationSciPy" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationSophia" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "OptimizationSpeedMapping" | |
| dev_subpkg(["OptimizationBase"]) | |
| elseif GROUP == "GPU" || GROUP == "OptimizationPolyalgorithms" | |
| dev_subpkg(["OptimizationBase", "OptimizationOptimJL", "OptimizationOptimisers"]) | |
| elseif GROUP == "OptimizationNLPModels" | |
| dev_subpkg(["OptimizationBase", "OptimizationMOI", "OptimizationOptimJL", "OptimizationLBFGSB"]) | |
| elseif GROUP == "SimpleOptimization" | |
| dev_subpkg(["OptimizationBase"]) | |
| end | |
| end | |
| @info "Starting tests" | |
| Pkg.test() | |
| - uses: julia-actions/julia-processcoverage@v1 | |
| with: | |
| directories: src,lib/OptimizationBase/src,lib/OptimizationBBO/src,lib/OptimizationCMAEvolutionStrategy/src,lib/OptimizationEvolutionary/src,lib/OptimizationGCMAES/src,lib/OptimizationIpopt/src,lib/OptimizationMadNLP/src,lib/OptimizationManopt/src,lib/OptimizationMOI/src,lib/OptimizationMetaheuristics/src,lib/OptimizationMultistartOptimization/src,lib/OptimizationNLopt/src,lib/OptimizationNOMAD/src,lib/OptimizationOptimJL/src,lib/OptimizationOptimisers/src,lib/OptimizationPolyalgorithms/src,lib/OptimizationQuadDIRECT/src,lib/OptimizationSpeedMapping/src | |
| - uses: codecov/codecov-action@v6 | |
| with: | |
| files: lcov.info |