Skip to content

Workflow file for this run

name: Bmad Ecosystem - Build & Test
on:
# Run on demand
workflow_dispatch:
# Run on push to main
push:
branches:
- "main"
# Run on pull requests
pull_request:
## Future Ideas:
## PR make it 10 or less
## For main and time based we can run something bigger
## Run when releases are published
## release:
## types:
## - "published"
# Configuration for the version of external dependencies
# We do this so we can cache them and avoid checking out that big
# repository at all times.
env:
EXTERNAL_DEPS_VERSION: main
#
jobs:
build:
runs-on: ${{ matrix.os }}
#
defaults:
run:
shell: bash
strategy:
matrix:
# Future Ideas:
# add macOS - check if GH Actions can make intel and arm
os: [ubuntu-latest]
shared: ["Y"]
## openmp_mpi: ["N", "Y"]
steps:
# Check out the code from GitHub
- uses: actions/checkout@v4
# Install system dependencies
- name: Install System Dependencies
run: |
sudo apt update
sudo apt-get install gfortran g++ cmake libtool-bin libreadline-dev libpango1.0-dev libssl-dev bc
# sudo apt install build-essential curl wget cmake gfortran automake \
# autoconf libtool m4 libgomp1 libreadline-dev libncurses-dev pkg-config \
# libcairo2-dev libpango1.0-dev libxt-dev libx11-dev -y
# Try to check the cache for external dependencies
- uses: actions/cache@v3
id: cache
with:
path: ~/external_deps
key: ${{ env.EXTERNAL_DEPS_VERSION }}
# In case we don't have it available, check it out
- name: Checkout External Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: |
git clone --depth 1 --branch ${{ env.EXTERNAL_DEPS_VERSION }} https://github.com/bmad-sim/bmad-external-deps.git ~/external_deps
#
- name: Extract dependencies
run: |
for dep in ~/external_deps/*.tar.gz; \
do \
tar xzvf $dep -C $GITHUB_WORKSPACE/; \
done
#
- name: Build
env:
### USE_MPI: ${{ matrix.openmp_mpi }}
SHARED: ${{ matrix.shared }}
run: .github/scripts/install_bmad.sh
#
- name: Run Tests
run: .github/scripts/run_tests.sh