From 44ceae18db9dfc2779e111dde1091d537321f780 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 08:45:07 -0500 Subject: [PATCH 1/8] Try switching back to Mambaforge --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index f890236..58c189a 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,7 +3,7 @@ version: 2 build: os: "ubuntu-24.04" tools: - python: "latest" + python: "mambaforge-latest" jobs: create_environment: - asdf plugin add pixi From 7ed039aaeab4742b8d44b3ce0329006f0416d305 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 08:46:37 -0500 Subject: [PATCH 2/8] Drop CI --- .github/workflows/ci-dev-main.yaml | 65 ----------- .github/workflows/ci.yaml | 84 -------------- .github/workflows/cpu-vslow-tests.yaml | 109 ------------------- .github/workflows/gpu-integration-tests.yaml | 109 ------------------- .github/workflows/mypy.yaml | 47 -------- 5 files changed, 414 deletions(-) delete mode 100644 .github/workflows/ci-dev-main.yaml delete mode 100644 .github/workflows/ci.yaml delete mode 100644 .github/workflows/cpu-vslow-tests.yaml delete mode 100644 .github/workflows/gpu-integration-tests.yaml delete mode 100644 .github/workflows/mypy.yaml diff --git a/.github/workflows/ci-dev-main.yaml b/.github/workflows/ci-dev-main.yaml deleted file mode 100644 index 3e2aa39..0000000 --- a/.github/workflows/ci-dev-main.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: "CI - main branch of deps" -on: - push: - branches: - - main - schedule: - # At 07:00 UTC on Monday (weekly) - - cron: "0 7 * * 1" - workflow_dispatch: - - -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -defaults: - run: - shell: bash -l {0} - -jobs: - tests: - runs-on: ${{ matrix.os }} - name: "${{ matrix.os }} - ${{ matrix.python-version }}" - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest"] - python-version: - - "3.12" - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: devtools/environment_dev.yml - environment-name: pontibus-dev - create-args: >- - python=${{ matrix.python-version }} - init-shell: bash - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - # if we add more to this, consider changing to for + env vars - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - PONTIBUS_SLOW_TESTS: TRUE - PONTIBUS_CPUVSLOW_TESTS: FALSE - PONTIBUS_GPU_TESTS: FALSE - DUECREDIT_ENABLE: 'yes' - run: | - pytest -n logical -v --durations=10 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 15f7f5c..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,84 +0,0 @@ -name: "CI" -on: - pull_request: - branches: - - main - paths-ignore: - - "docs/*" - push: - branches: - - main - schedule: - # At 07:00 UTC on Monday and Thursday - - cron: "0 7 * * *" - workflow_dispatch: - - -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -defaults: - run: - shell: bash -l {0} - -jobs: - tests: - runs-on: ${{ matrix.os }} - name: "${{ matrix.os }} - ${{ matrix.python-version }}" - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest"] - python-version: - - "3.11" - - "3.12" - - "3.13" - include: - - os: "macos-latest" - python-version: "3.13" - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - create-args: >- - python=${{ matrix.python-version }} - init-shell: bash - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - # if we add more to this, consider changing to for + env vars - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - # For now, disable these as they are too slow to run on gh ci - PONTIBUS_SLOW_TESTS: ${{ fromJSON('{"false":"false","true":"true"}')[github.event_name != 'pull_request'] }} - DUECREDIT_ENABLE: 'yes' - run: | - pytest -n logical -v --cov=pontibus --cov-report=xml --durations=10 - - - name: codecov-pr - if: ${{ github.repository == 'OpenFreeEnergy/pontibus' - && github.event_name != 'schedule' }} - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: coverage.xml - fail_ci_if_error: False - verbose: True diff --git a/.github/workflows/cpu-vslow-tests.yaml b/.github/workflows/cpu-vslow-tests.yaml deleted file mode 100644 index 78984bb..0000000 --- a/.github/workflows/cpu-vslow-tests.yaml +++ /dev/null @@ -1,109 +0,0 @@ -name: CPU Very Slow Tests (manual dispatch) -on: - workflow_dispatch: - -jobs: - start-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - outputs: - mapping: ${{ steps.aws-start.outputs.mapping }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Create cloud runner - id: aws-start - uses: omsf/start-aws-gha-runner@v1.0.0 - with: - aws_image_id: ami-0b7f661c228e6a4bb - aws_instance_type: c8i.2xlarge - aws_home_dir: /home/ubuntu - aws_root_device_size: 125 - env: - GH_PAT: ${{ secrets.GH_PAT }} - - self-hosted-test: - runs-on: self-hosted - timeout-minutes: 720 # 12 hours - defaults: - run: - shell: bash -leo pipefail {0} - - needs: - - start-aws-runner - steps: - - uses: actions/checkout@v4 - - - name: Schedule auto-shutdown after 24 hours - # This is the failsafe if timeout-minutes above fails - # More info https://github.com/openforcefield/openff-evaluator/issues/740 - run: nohup bash -c 'sleep 86400 && sudo shutdown -h now' > /tmp/auto-shutdown.log 2>&1 & - - - name: Print disk usage - run: "df -h" - - - name: Print Docker details - run: "docker version || true" - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - condarc: | - channels: - - conda-forge - create-args: >- - python=3.13 - - - name: "Check if OpenMM can get a GPU" - run: python -m openmm.testInstallation - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - DUECREDIT_ENABLE: 'yes' - PONTIBUS_CPUVSLOW_TESTS: TRUE - PONTIBUS_GPU_TESTS: FALSE - run: | - # The -m flag will only run tests with @pytest.mark.cpuvslow - pytest -n logical -vv --durations=10 -m cpuvslow - - stop-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - needs: - - start-aws-runner - - self-hosted-test - if: ${{ always() }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Stop instances - uses: omsf/stop-aws-gha-runner@v1.0.0 - with: - instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} - env: - GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/gpu-integration-tests.yaml b/.github/workflows/gpu-integration-tests.yaml deleted file mode 100644 index d5939b8..0000000 --- a/.github/workflows/gpu-integration-tests.yaml +++ /dev/null @@ -1,109 +0,0 @@ -name: GPU Integration Tests (manual dispatch) -on: - workflow_dispatch: - -jobs: - start-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - outputs: - mapping: ${{ steps.aws-start.outputs.mapping }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Create cloud runner - id: aws-start - uses: omsf/start-aws-gha-runner@v1.0.0 - with: - aws_image_id: ami-076a54ed41e67782d - aws_instance_type: g4dn.xlarge - aws_home_dir: /home/ubuntu - aws_root_device_size: 125 - env: - GH_PAT: ${{ secrets.GH_PAT }} - - self-hosted-test: - runs-on: self-hosted - timeout-minutes: 720 # 12 hours - defaults: - run: - shell: bash -leo pipefail {0} - - needs: - - start-aws-runner - steps: - - uses: actions/checkout@v4 - - - name: Print disk usage - run: "df -h" - - - name: Print Docker details - run: "docker version || true" - - - name: Check for nvidia-smi - run: "nvidia-smi" - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - condarc: | - channels: - - conda-forge - create-args: >- - python=3.13 - cuda-version=12.8 - - - name: "Check if OpenMM can get a GPU" - run: python -m openmm.testInstallation - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - # if we add more to this, consider changing to for + env vars - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - DUECREDIT_ENABLE: 'yes' - PONTIBUS_CPUVSLOW_TESTS: FALSE - PONTIBUS_GPU_TESTS: TRUE - run: | - # The -m flag will only run tests with @pytest.mark.gpu - pytest -n logical -vv --durations=10 -m gpu - - stop-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - needs: - - start-aws-runner - - self-hosted-test - if: ${{ always() }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Stop instances - uses: omsf/stop-aws-gha-runner@v1.0.0 - with: - instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} - env: - GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml deleted file mode 100644 index 5f622af..0000000 --- a/.github/workflows/mypy.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: "mypy" -on: - pull_request: - branches: - - main - push: - branches: - - main - -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -defaults: - run: - shell: bash -leo pipefail {0} - -jobs: - mypy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - cache-environment: true - cache-downloads: true - create-args: >- - python=3.11 - init-shell: bash - - - name: "Install steps" - run: | - python -m pip install --no-deps git+https://github.com/OpenFreeEnergy/gufe@main - python -m pip install mypy - python -m pip install --no-deps -e . - - - name: "Environment Information" - run: | - micromamba info - micromamba list - - - name: "Lint with mypy" - run: mypy From a9894a8e4c4862b32ae67c99a61757d2958de5f5 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 08:46:42 -0500 Subject: [PATCH 3/8] Force 3.11 --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 58c189a..e8e0baf 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,7 +3,7 @@ version: 2 build: os: "ubuntu-24.04" tools: - python: "mambaforge-latest" + python: "3.11" jobs: create_environment: - asdf plugin add pixi From a49b957c2e0537b7b43b60d9754e798b901b2c29 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 09:11:03 -0500 Subject: [PATCH 4/8] Revert "Drop CI" This reverts commit 7ed039aaeab4742b8d44b3ce0329006f0416d305. --- .github/workflows/ci-dev-main.yaml | 65 +++++++++++ .github/workflows/ci.yaml | 84 ++++++++++++++ .github/workflows/cpu-vslow-tests.yaml | 109 +++++++++++++++++++ .github/workflows/gpu-integration-tests.yaml | 109 +++++++++++++++++++ .github/workflows/mypy.yaml | 47 ++++++++ 5 files changed, 414 insertions(+) create mode 100644 .github/workflows/ci-dev-main.yaml create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/cpu-vslow-tests.yaml create mode 100644 .github/workflows/gpu-integration-tests.yaml create mode 100644 .github/workflows/mypy.yaml diff --git a/.github/workflows/ci-dev-main.yaml b/.github/workflows/ci-dev-main.yaml new file mode 100644 index 0000000..3e2aa39 --- /dev/null +++ b/.github/workflows/ci-dev-main.yaml @@ -0,0 +1,65 @@ +name: "CI - main branch of deps" +on: + push: + branches: + - main + schedule: + # At 07:00 UTC on Monday (weekly) + - cron: "0 7 * * 1" + workflow_dispatch: + + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +defaults: + run: + shell: bash -l {0} + +jobs: + tests: + runs-on: ${{ matrix.os }} + name: "${{ matrix.os }} - ${{ matrix.python-version }}" + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + python-version: + - "3.12" + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: devtools/environment_dev.yml + environment-name: pontibus-dev + create-args: >- + python=${{ matrix.python-version }} + init-shell: bash + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + # if we add more to this, consider changing to for + env vars + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + PONTIBUS_SLOW_TESTS: TRUE + PONTIBUS_CPUVSLOW_TESTS: FALSE + PONTIBUS_GPU_TESTS: FALSE + DUECREDIT_ENABLE: 'yes' + run: | + pytest -n logical -v --durations=10 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..15f7f5c --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,84 @@ +name: "CI" +on: + pull_request: + branches: + - main + paths-ignore: + - "docs/*" + push: + branches: + - main + schedule: + # At 07:00 UTC on Monday and Thursday + - cron: "0 7 * * *" + workflow_dispatch: + + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +defaults: + run: + shell: bash -l {0} + +jobs: + tests: + runs-on: ${{ matrix.os }} + name: "${{ matrix.os }} - ${{ matrix.python-version }}" + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + python-version: + - "3.11" + - "3.12" + - "3.13" + include: + - os: "macos-latest" + python-version: "3.13" + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + create-args: >- + python=${{ matrix.python-version }} + init-shell: bash + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + # if we add more to this, consider changing to for + env vars + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + # For now, disable these as they are too slow to run on gh ci + PONTIBUS_SLOW_TESTS: ${{ fromJSON('{"false":"false","true":"true"}')[github.event_name != 'pull_request'] }} + DUECREDIT_ENABLE: 'yes' + run: | + pytest -n logical -v --cov=pontibus --cov-report=xml --durations=10 + + - name: codecov-pr + if: ${{ github.repository == 'OpenFreeEnergy/pontibus' + && github.event_name != 'schedule' }} + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: coverage.xml + fail_ci_if_error: False + verbose: True diff --git a/.github/workflows/cpu-vslow-tests.yaml b/.github/workflows/cpu-vslow-tests.yaml new file mode 100644 index 0000000..78984bb --- /dev/null +++ b/.github/workflows/cpu-vslow-tests.yaml @@ -0,0 +1,109 @@ +name: CPU Very Slow Tests (manual dispatch) +on: + workflow_dispatch: + +jobs: + start-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + outputs: + mapping: ${{ steps.aws-start.outputs.mapping }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Create cloud runner + id: aws-start + uses: omsf/start-aws-gha-runner@v1.0.0 + with: + aws_image_id: ami-0b7f661c228e6a4bb + aws_instance_type: c8i.2xlarge + aws_home_dir: /home/ubuntu + aws_root_device_size: 125 + env: + GH_PAT: ${{ secrets.GH_PAT }} + + self-hosted-test: + runs-on: self-hosted + timeout-minutes: 720 # 12 hours + defaults: + run: + shell: bash -leo pipefail {0} + + needs: + - start-aws-runner + steps: + - uses: actions/checkout@v4 + + - name: Schedule auto-shutdown after 24 hours + # This is the failsafe if timeout-minutes above fails + # More info https://github.com/openforcefield/openff-evaluator/issues/740 + run: nohup bash -c 'sleep 86400 && sudo shutdown -h now' > /tmp/auto-shutdown.log 2>&1 & + + - name: Print disk usage + run: "df -h" + + - name: Print Docker details + run: "docker version || true" + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + condarc: | + channels: + - conda-forge + create-args: >- + python=3.13 + + - name: "Check if OpenMM can get a GPU" + run: python -m openmm.testInstallation + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + DUECREDIT_ENABLE: 'yes' + PONTIBUS_CPUVSLOW_TESTS: TRUE + PONTIBUS_GPU_TESTS: FALSE + run: | + # The -m flag will only run tests with @pytest.mark.cpuvslow + pytest -n logical -vv --durations=10 -m cpuvslow + + stop-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + needs: + - start-aws-runner + - self-hosted-test + if: ${{ always() }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Stop instances + uses: omsf/stop-aws-gha-runner@v1.0.0 + with: + instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} + env: + GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/gpu-integration-tests.yaml b/.github/workflows/gpu-integration-tests.yaml new file mode 100644 index 0000000..d5939b8 --- /dev/null +++ b/.github/workflows/gpu-integration-tests.yaml @@ -0,0 +1,109 @@ +name: GPU Integration Tests (manual dispatch) +on: + workflow_dispatch: + +jobs: + start-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + outputs: + mapping: ${{ steps.aws-start.outputs.mapping }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Create cloud runner + id: aws-start + uses: omsf/start-aws-gha-runner@v1.0.0 + with: + aws_image_id: ami-076a54ed41e67782d + aws_instance_type: g4dn.xlarge + aws_home_dir: /home/ubuntu + aws_root_device_size: 125 + env: + GH_PAT: ${{ secrets.GH_PAT }} + + self-hosted-test: + runs-on: self-hosted + timeout-minutes: 720 # 12 hours + defaults: + run: + shell: bash -leo pipefail {0} + + needs: + - start-aws-runner + steps: + - uses: actions/checkout@v4 + + - name: Print disk usage + run: "df -h" + + - name: Print Docker details + run: "docker version || true" + + - name: Check for nvidia-smi + run: "nvidia-smi" + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + condarc: | + channels: + - conda-forge + create-args: >- + python=3.13 + cuda-version=12.8 + + - name: "Check if OpenMM can get a GPU" + run: python -m openmm.testInstallation + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + # if we add more to this, consider changing to for + env vars + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + DUECREDIT_ENABLE: 'yes' + PONTIBUS_CPUVSLOW_TESTS: FALSE + PONTIBUS_GPU_TESTS: TRUE + run: | + # The -m flag will only run tests with @pytest.mark.gpu + pytest -n logical -vv --durations=10 -m gpu + + stop-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + needs: + - start-aws-runner + - self-hosted-test + if: ${{ always() }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Stop instances + uses: omsf/stop-aws-gha-runner@v1.0.0 + with: + instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} + env: + GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml new file mode 100644 index 0000000..5f622af --- /dev/null +++ b/.github/workflows/mypy.yaml @@ -0,0 +1,47 @@ +name: "mypy" +on: + pull_request: + branches: + - main + push: + branches: + - main + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +defaults: + run: + shell: bash -leo pipefail {0} + +jobs: + mypy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + cache-environment: true + cache-downloads: true + create-args: >- + python=3.11 + init-shell: bash + + - name: "Install steps" + run: | + python -m pip install --no-deps git+https://github.com/OpenFreeEnergy/gufe@main + python -m pip install mypy + python -m pip install --no-deps -e . + + - name: "Environment Information" + run: | + micromamba info + micromamba list + + - name: "Lint with mypy" + run: mypy From ff3d0869a54947a0b3ac6b3be9b62072c8179d1b Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 09:23:01 -0500 Subject: [PATCH 5/8] Revert "Force 3.11" This reverts commit a9894a8e4c4862b32ae67c99a61757d2958de5f5. --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index e8e0baf..58c189a 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,7 +3,7 @@ version: 2 build: os: "ubuntu-24.04" tools: - python: "3.11" + python: "mambaforge-latest" jobs: create_environment: - asdf plugin add pixi From 6a10e6b4f53f4019220ade96ba5a183aa0c025c5 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 09:23:16 -0500 Subject: [PATCH 6/8] Revert "Try switching back to Mambaforge" This reverts commit 44ceae18db9dfc2779e111dde1091d537321f780. --- .readthedocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 58c189a..f890236 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,7 +3,7 @@ version: 2 build: os: "ubuntu-24.04" tools: - python: "mambaforge-latest" + python: "latest" jobs: create_environment: - asdf plugin add pixi From 8a709853d845d107a471b79cba39db7dcc3c06ee Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 09:23:28 -0500 Subject: [PATCH 7/8] Reapply "Drop CI" This reverts commit a49b957c2e0537b7b43b60d9754e798b901b2c29. --- .github/workflows/ci-dev-main.yaml | 65 ----------- .github/workflows/ci.yaml | 84 -------------- .github/workflows/cpu-vslow-tests.yaml | 109 ------------------- .github/workflows/gpu-integration-tests.yaml | 109 ------------------- .github/workflows/mypy.yaml | 47 -------- 5 files changed, 414 deletions(-) delete mode 100644 .github/workflows/ci-dev-main.yaml delete mode 100644 .github/workflows/ci.yaml delete mode 100644 .github/workflows/cpu-vslow-tests.yaml delete mode 100644 .github/workflows/gpu-integration-tests.yaml delete mode 100644 .github/workflows/mypy.yaml diff --git a/.github/workflows/ci-dev-main.yaml b/.github/workflows/ci-dev-main.yaml deleted file mode 100644 index 3e2aa39..0000000 --- a/.github/workflows/ci-dev-main.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: "CI - main branch of deps" -on: - push: - branches: - - main - schedule: - # At 07:00 UTC on Monday (weekly) - - cron: "0 7 * * 1" - workflow_dispatch: - - -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -defaults: - run: - shell: bash -l {0} - -jobs: - tests: - runs-on: ${{ matrix.os }} - name: "${{ matrix.os }} - ${{ matrix.python-version }}" - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest"] - python-version: - - "3.12" - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: devtools/environment_dev.yml - environment-name: pontibus-dev - create-args: >- - python=${{ matrix.python-version }} - init-shell: bash - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - # if we add more to this, consider changing to for + env vars - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - PONTIBUS_SLOW_TESTS: TRUE - PONTIBUS_CPUVSLOW_TESTS: FALSE - PONTIBUS_GPU_TESTS: FALSE - DUECREDIT_ENABLE: 'yes' - run: | - pytest -n logical -v --durations=10 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 15f7f5c..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,84 +0,0 @@ -name: "CI" -on: - pull_request: - branches: - - main - paths-ignore: - - "docs/*" - push: - branches: - - main - schedule: - # At 07:00 UTC on Monday and Thursday - - cron: "0 7 * * *" - workflow_dispatch: - - -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -defaults: - run: - shell: bash -l {0} - -jobs: - tests: - runs-on: ${{ matrix.os }} - name: "${{ matrix.os }} - ${{ matrix.python-version }}" - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest"] - python-version: - - "3.11" - - "3.12" - - "3.13" - include: - - os: "macos-latest" - python-version: "3.13" - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - create-args: >- - python=${{ matrix.python-version }} - init-shell: bash - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - # if we add more to this, consider changing to for + env vars - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - # For now, disable these as they are too slow to run on gh ci - PONTIBUS_SLOW_TESTS: ${{ fromJSON('{"false":"false","true":"true"}')[github.event_name != 'pull_request'] }} - DUECREDIT_ENABLE: 'yes' - run: | - pytest -n logical -v --cov=pontibus --cov-report=xml --durations=10 - - - name: codecov-pr - if: ${{ github.repository == 'OpenFreeEnergy/pontibus' - && github.event_name != 'schedule' }} - uses: codecov/codecov-action@v5 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: coverage.xml - fail_ci_if_error: False - verbose: True diff --git a/.github/workflows/cpu-vslow-tests.yaml b/.github/workflows/cpu-vslow-tests.yaml deleted file mode 100644 index 78984bb..0000000 --- a/.github/workflows/cpu-vslow-tests.yaml +++ /dev/null @@ -1,109 +0,0 @@ -name: CPU Very Slow Tests (manual dispatch) -on: - workflow_dispatch: - -jobs: - start-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - outputs: - mapping: ${{ steps.aws-start.outputs.mapping }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Create cloud runner - id: aws-start - uses: omsf/start-aws-gha-runner@v1.0.0 - with: - aws_image_id: ami-0b7f661c228e6a4bb - aws_instance_type: c8i.2xlarge - aws_home_dir: /home/ubuntu - aws_root_device_size: 125 - env: - GH_PAT: ${{ secrets.GH_PAT }} - - self-hosted-test: - runs-on: self-hosted - timeout-minutes: 720 # 12 hours - defaults: - run: - shell: bash -leo pipefail {0} - - needs: - - start-aws-runner - steps: - - uses: actions/checkout@v4 - - - name: Schedule auto-shutdown after 24 hours - # This is the failsafe if timeout-minutes above fails - # More info https://github.com/openforcefield/openff-evaluator/issues/740 - run: nohup bash -c 'sleep 86400 && sudo shutdown -h now' > /tmp/auto-shutdown.log 2>&1 & - - - name: Print disk usage - run: "df -h" - - - name: Print Docker details - run: "docker version || true" - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - condarc: | - channels: - - conda-forge - create-args: >- - python=3.13 - - - name: "Check if OpenMM can get a GPU" - run: python -m openmm.testInstallation - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - DUECREDIT_ENABLE: 'yes' - PONTIBUS_CPUVSLOW_TESTS: TRUE - PONTIBUS_GPU_TESTS: FALSE - run: | - # The -m flag will only run tests with @pytest.mark.cpuvslow - pytest -n logical -vv --durations=10 -m cpuvslow - - stop-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - needs: - - start-aws-runner - - self-hosted-test - if: ${{ always() }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Stop instances - uses: omsf/stop-aws-gha-runner@v1.0.0 - with: - instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} - env: - GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/gpu-integration-tests.yaml b/.github/workflows/gpu-integration-tests.yaml deleted file mode 100644 index d5939b8..0000000 --- a/.github/workflows/gpu-integration-tests.yaml +++ /dev/null @@ -1,109 +0,0 @@ -name: GPU Integration Tests (manual dispatch) -on: - workflow_dispatch: - -jobs: - start-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - outputs: - mapping: ${{ steps.aws-start.outputs.mapping }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Create cloud runner - id: aws-start - uses: omsf/start-aws-gha-runner@v1.0.0 - with: - aws_image_id: ami-076a54ed41e67782d - aws_instance_type: g4dn.xlarge - aws_home_dir: /home/ubuntu - aws_root_device_size: 125 - env: - GH_PAT: ${{ secrets.GH_PAT }} - - self-hosted-test: - runs-on: self-hosted - timeout-minutes: 720 # 12 hours - defaults: - run: - shell: bash -leo pipefail {0} - - needs: - - start-aws-runner - steps: - - uses: actions/checkout@v4 - - - name: Print disk usage - run: "df -h" - - - name: Print Docker details - run: "docker version || true" - - - name: Check for nvidia-smi - run: "nvidia-smi" - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - condarc: | - channels: - - conda-forge - create-args: >- - python=3.13 - cuda-version=12.8 - - - name: "Check if OpenMM can get a GPU" - run: python -m openmm.testInstallation - - - name: "Install" - run: python -m pip install --no-deps -e . - - - name: "Test imports" - run: | - # if we add more to this, consider changing to for + env vars - python -Ic "import pontibus; print(pontibus.__version__)" - - - name: "Environment Information" - run: | - micromamba info - micromamba list - pip list - - - name: "Run tests" - env: - DUECREDIT_ENABLE: 'yes' - PONTIBUS_CPUVSLOW_TESTS: FALSE - PONTIBUS_GPU_TESTS: TRUE - run: | - # The -m flag will only run tests with @pytest.mark.gpu - pytest -n logical -vv --durations=10 -m gpu - - stop-aws-runner: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - needs: - - start-aws-runner - - self-hosted-test - if: ${{ always() }} - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS - aws-region: us-east-2 - - name: Stop instances - uses: omsf/stop-aws-gha-runner@v1.0.0 - with: - instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} - env: - GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml deleted file mode 100644 index 5f622af..0000000 --- a/.github/workflows/mypy.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: "mypy" -on: - pull_request: - branches: - - main - push: - branches: - - main - -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -defaults: - run: - shell: bash -leo pipefail {0} - -jobs: - mypy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: "Setup Micromamba" - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: environment.yml - environment-name: pontibus - cache-environment: true - cache-downloads: true - create-args: >- - python=3.11 - init-shell: bash - - - name: "Install steps" - run: | - python -m pip install --no-deps git+https://github.com/OpenFreeEnergy/gufe@main - python -m pip install mypy - python -m pip install --no-deps -e . - - - name: "Environment Information" - run: | - micromamba info - micromamba list - - - name: "Lint with mypy" - run: mypy From 3220d4e1cc3163fe2b1815a2e0dc9a3d3d078d1e Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 31 Aug 2026 09:26:53 -0500 Subject: [PATCH 8/8] Revert "Reapply "Drop CI"" This reverts commit 8a709853d845d107a471b79cba39db7dcc3c06ee. --- .github/workflows/ci-dev-main.yaml | 65 +++++++++++ .github/workflows/ci.yaml | 84 ++++++++++++++ .github/workflows/cpu-vslow-tests.yaml | 109 +++++++++++++++++++ .github/workflows/gpu-integration-tests.yaml | 109 +++++++++++++++++++ .github/workflows/mypy.yaml | 47 ++++++++ 5 files changed, 414 insertions(+) create mode 100644 .github/workflows/ci-dev-main.yaml create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/cpu-vslow-tests.yaml create mode 100644 .github/workflows/gpu-integration-tests.yaml create mode 100644 .github/workflows/mypy.yaml diff --git a/.github/workflows/ci-dev-main.yaml b/.github/workflows/ci-dev-main.yaml new file mode 100644 index 0000000..3e2aa39 --- /dev/null +++ b/.github/workflows/ci-dev-main.yaml @@ -0,0 +1,65 @@ +name: "CI - main branch of deps" +on: + push: + branches: + - main + schedule: + # At 07:00 UTC on Monday (weekly) + - cron: "0 7 * * 1" + workflow_dispatch: + + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +defaults: + run: + shell: bash -l {0} + +jobs: + tests: + runs-on: ${{ matrix.os }} + name: "${{ matrix.os }} - ${{ matrix.python-version }}" + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + python-version: + - "3.12" + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: devtools/environment_dev.yml + environment-name: pontibus-dev + create-args: >- + python=${{ matrix.python-version }} + init-shell: bash + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + # if we add more to this, consider changing to for + env vars + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + PONTIBUS_SLOW_TESTS: TRUE + PONTIBUS_CPUVSLOW_TESTS: FALSE + PONTIBUS_GPU_TESTS: FALSE + DUECREDIT_ENABLE: 'yes' + run: | + pytest -n logical -v --durations=10 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..15f7f5c --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,84 @@ +name: "CI" +on: + pull_request: + branches: + - main + paths-ignore: + - "docs/*" + push: + branches: + - main + schedule: + # At 07:00 UTC on Monday and Thursday + - cron: "0 7 * * *" + workflow_dispatch: + + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +defaults: + run: + shell: bash -l {0} + +jobs: + tests: + runs-on: ${{ matrix.os }} + name: "${{ matrix.os }} - ${{ matrix.python-version }}" + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + python-version: + - "3.11" + - "3.12" + - "3.13" + include: + - os: "macos-latest" + python-version: "3.13" + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + create-args: >- + python=${{ matrix.python-version }} + init-shell: bash + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + # if we add more to this, consider changing to for + env vars + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + # For now, disable these as they are too slow to run on gh ci + PONTIBUS_SLOW_TESTS: ${{ fromJSON('{"false":"false","true":"true"}')[github.event_name != 'pull_request'] }} + DUECREDIT_ENABLE: 'yes' + run: | + pytest -n logical -v --cov=pontibus --cov-report=xml --durations=10 + + - name: codecov-pr + if: ${{ github.repository == 'OpenFreeEnergy/pontibus' + && github.event_name != 'schedule' }} + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: coverage.xml + fail_ci_if_error: False + verbose: True diff --git a/.github/workflows/cpu-vslow-tests.yaml b/.github/workflows/cpu-vslow-tests.yaml new file mode 100644 index 0000000..78984bb --- /dev/null +++ b/.github/workflows/cpu-vslow-tests.yaml @@ -0,0 +1,109 @@ +name: CPU Very Slow Tests (manual dispatch) +on: + workflow_dispatch: + +jobs: + start-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + outputs: + mapping: ${{ steps.aws-start.outputs.mapping }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Create cloud runner + id: aws-start + uses: omsf/start-aws-gha-runner@v1.0.0 + with: + aws_image_id: ami-0b7f661c228e6a4bb + aws_instance_type: c8i.2xlarge + aws_home_dir: /home/ubuntu + aws_root_device_size: 125 + env: + GH_PAT: ${{ secrets.GH_PAT }} + + self-hosted-test: + runs-on: self-hosted + timeout-minutes: 720 # 12 hours + defaults: + run: + shell: bash -leo pipefail {0} + + needs: + - start-aws-runner + steps: + - uses: actions/checkout@v4 + + - name: Schedule auto-shutdown after 24 hours + # This is the failsafe if timeout-minutes above fails + # More info https://github.com/openforcefield/openff-evaluator/issues/740 + run: nohup bash -c 'sleep 86400 && sudo shutdown -h now' > /tmp/auto-shutdown.log 2>&1 & + + - name: Print disk usage + run: "df -h" + + - name: Print Docker details + run: "docker version || true" + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + condarc: | + channels: + - conda-forge + create-args: >- + python=3.13 + + - name: "Check if OpenMM can get a GPU" + run: python -m openmm.testInstallation + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + DUECREDIT_ENABLE: 'yes' + PONTIBUS_CPUVSLOW_TESTS: TRUE + PONTIBUS_GPU_TESTS: FALSE + run: | + # The -m flag will only run tests with @pytest.mark.cpuvslow + pytest -n logical -vv --durations=10 -m cpuvslow + + stop-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + needs: + - start-aws-runner + - self-hosted-test + if: ${{ always() }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Stop instances + uses: omsf/stop-aws-gha-runner@v1.0.0 + with: + instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} + env: + GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/gpu-integration-tests.yaml b/.github/workflows/gpu-integration-tests.yaml new file mode 100644 index 0000000..d5939b8 --- /dev/null +++ b/.github/workflows/gpu-integration-tests.yaml @@ -0,0 +1,109 @@ +name: GPU Integration Tests (manual dispatch) +on: + workflow_dispatch: + +jobs: + start-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + outputs: + mapping: ${{ steps.aws-start.outputs.mapping }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Create cloud runner + id: aws-start + uses: omsf/start-aws-gha-runner@v1.0.0 + with: + aws_image_id: ami-076a54ed41e67782d + aws_instance_type: g4dn.xlarge + aws_home_dir: /home/ubuntu + aws_root_device_size: 125 + env: + GH_PAT: ${{ secrets.GH_PAT }} + + self-hosted-test: + runs-on: self-hosted + timeout-minutes: 720 # 12 hours + defaults: + run: + shell: bash -leo pipefail {0} + + needs: + - start-aws-runner + steps: + - uses: actions/checkout@v4 + + - name: Print disk usage + run: "df -h" + + - name: Print Docker details + run: "docker version || true" + + - name: Check for nvidia-smi + run: "nvidia-smi" + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + condarc: | + channels: + - conda-forge + create-args: >- + python=3.13 + cuda-version=12.8 + + - name: "Check if OpenMM can get a GPU" + run: python -m openmm.testInstallation + + - name: "Install" + run: python -m pip install --no-deps -e . + + - name: "Test imports" + run: | + # if we add more to this, consider changing to for + env vars + python -Ic "import pontibus; print(pontibus.__version__)" + + - name: "Environment Information" + run: | + micromamba info + micromamba list + pip list + + - name: "Run tests" + env: + DUECREDIT_ENABLE: 'yes' + PONTIBUS_CPUVSLOW_TESTS: FALSE + PONTIBUS_GPU_TESTS: TRUE + run: | + # The -m flag will only run tests with @pytest.mark.gpu + pytest -n logical -vv --durations=10 -m gpu + + stop-aws-runner: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + needs: + - start-aws-runner + - self-hosted-test + if: ${{ always() }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::010438489691:role/GHARunnerAWS + aws-region: us-east-2 + - name: Stop instances + uses: omsf/stop-aws-gha-runner@v1.0.0 + with: + instance_mapping: ${{ needs.start-aws-runner.outputs.mapping }} + env: + GH_PAT: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml new file mode 100644 index 0000000..5f622af --- /dev/null +++ b/.github/workflows/mypy.yaml @@ -0,0 +1,47 @@ +name: "mypy" +on: + pull_request: + branches: + - main + push: + branches: + - main + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +defaults: + run: + shell: bash -leo pipefail {0} + +jobs: + mypy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: "Setup Micromamba" + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: pontibus + cache-environment: true + cache-downloads: true + create-args: >- + python=3.11 + init-shell: bash + + - name: "Install steps" + run: | + python -m pip install --no-deps git+https://github.com/OpenFreeEnergy/gufe@main + python -m pip install mypy + python -m pip install --no-deps -e . + + - name: "Environment Information" + run: | + micromamba info + micromamba list + + - name: "Lint with mypy" + run: mypy