Documentation Index
Fetch the complete documentation index at: https://mintlify.com/DedalusProject/dedalus_conda/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Dedalus conda builds repository uses GitHub Actions to continuously test multiple installation methods across different platforms. The workflow runs nightly and on every push to ensure installation scripts remain functional. Workflow File:.github/workflows/test_conda_builds.yml
Workflow Triggers
The CI/CD pipeline runs on:The nightly schedule ensures that builds are tested against the latest conda-forge packages and upstream Dedalus changes.
Test Matrix
The workflow tests 5 different installation scenarios across 2 platforms:Platforms Tested
- Linux (x86_64):
ubuntu-latest - macOS (x86_64):
macos-latest
Apple Silicon (arm64) is not tested in CI due to GitHub Actions runner limitations. The scripts support Apple Silicon via Rosetta 2 emulation (x86_64 mode).
Installation Scenarios
1. Dedalus v2 from conda-forge
1. Dedalus v2 from conda-forge
Job Name: Validation:
v2_from_conda_forgeWhat it tests:- Direct installation of the stable Dedalus v2 package from conda-forge
- Most straightforward installation method
- Recommended for users who don’t need the latest development features
2. Dedalus v2-master via conda-forge
2. Dedalus v2-master via conda-forge
Job Name: Key points:
v2_master_via_conda_forgeWhat it tests:- Installing development version of Dedalus v2 branch from GitHub
- Uses conda-forge for dependencies, pip for Dedalus itself
- Tests compilation against conda-forge MPI/HDF5/FFTW
CC=mpiccensures proper MPI compiler usage--no-cacheprevents using cached wheels--no-build-isolationuses environment dependencies"h5py=*=mpi*"ensures parallel HDF5 support
3. Dedalus v3-master via conda-forge
3. Dedalus v3-master via conda-forge
Job Name: Differences from v2-master:
v3_master_via_conda_forgeWhat it tests:- Installing development version of Dedalus v3 (current main branch)
- Same approach as v2-master but tracks the latest version
- Tests compatibility with conda-forge dependency stack
- Uses
masterbranch instead ofv2_master - Creates
dedalus3environment - Tests the latest Dedalus features and API
4. Dedalus v2 custom script
4. Dedalus v2 custom script
Job Name: What the script does:
v2_customWhat it tests:- The
conda_install_dedalus2.shscript from this repository - Default configuration (all dependencies from conda-forge)
- Ensures the user-facing script works correctly
- Creates new conda environment
- Installs Python 3.12, numpy, scipy with OpenBLAS
- Installs OpenMPI, mpi4py, FFTW, HDF5
- Installs Dedalus v2 via pip
- Configures threading environment variables
5. Dedalus v3 custom script
5. Dedalus v3 custom script
Job Name: Differences from v2 script:
v3_customWhat it tests:- The
conda_install_dedalus3.shscript from this repository - Same as v2 custom but installs Dedalus v3
- Most common installation method for users
- Creates
dedalus3environment - Installs from
masterbranch instead of tagged release
Common Test Infrastructure
Miniforge Setup
All jobs use the same conda setup:- Lightweight conda distribution
- Uses conda-forge by default
- Faster than full Anaconda in CI environments
Shell Configuration
All build and test steps use:-lcreates a login shell, ensuring conda initialization- Properly sources
.bashrcand conda configuration - Required for
conda activateto work
Test Validation
Every job validates the installation with:- Verifies all modules import correctly
- Tests basic mathematical operations
- Validates MPI functionality
- Checks FFTW and HDF5 integration
Failure Handling
Fail-Fast Strategy
fail-fast: false to:
- Continue testing all platforms even if one fails
- Identify platform-specific issues
- Provide comprehensive failure information
When Builds Fail
Common failure scenarios:Monitoring CI Status
Viewing Workflow Runs
- Navigate to the repository on GitHub
- Click the Actions tab
- Select Test conda builds workflow
- View recent runs and their status
Build Badges
Add a status badge to README:Notifications
GitHub Actions automatically:- Sends email on workflow failures (to commit authors)
- Posts status checks on pull requests
- Updates workflow status on the Actions page
Local Testing
You can replicate CI tests locally:Manual Workflow Dispatch
You can manually trigger the workflow:Manual triggers are useful for:
- Testing changes before merging
- Re-running failed builds
- Verifying fixes to CI issues
Extending the Workflow
Adding New Test Scenarios
To add a new test job:Testing Custom Library Configurations
CI currently only tests default (conda-forge) configurations. Custom library tests would require:- Installing system MPI packages in CI
- Configuring library paths
- Platform-specific setup
Best Practices
# Example: Pin openblas on Apple Silicon
if [ ${APPLE_SILICON_BUILD_ARM} -eq 1 ]; then
conda install "libopenblas<0.3.20"
fi
Related Resources
- Troubleshooting - Common CI and installation issues
- Custom Libraries - Advanced configuration options
- GitHub Actions Documentation - General CI/CD info