-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
0.10.x merge into main #1235
Merged
Merged
0.10.x merge into main #1235
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
8deb77f
run CI on new 0.10.x branch (#1212)
mikemhenry 186375d
print perses version on startup (#1176)
mikemhenry 33e0e74
Update comments in `RESTCapableHybridTopologyFactory` (#1189)
zhang-ivy a46516c
use python executable from env (#1174)
mikemhenry 2d19c20
Support pymbar 4 (#1173)
mikemhenry 4834ff7
Remove example testing (#1214)
mikemhenry b362e4b
Store initial and final topologies for all phases -- small molecule p…
ijpulidos f2f63a9
Improve docker building (#1200)
mikemhenry d77ab23
Clean examples -- CLI protein-ligand example for Tyk2 (#1223)
ijpulidos ef15992
Realtime analysis interval to default to checkpoint interval (#1227)
ijpulidos aca858f
MPI example with dipeptide mutation (#1228)
ijpulidos f6ee190
Fix/issue 1194 (#1230)
mikemhenry ff55126
Fix/issue 1196 (#1229)
mikemhenry 7fb8306
Fix spectator support (#1233)
ijpulidos 7907ed8
Merge branch 'main' into 0.10.x
mikemhenry 5b452b4
pin <4 for pymbar on GPU
mikemhenry File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
# This workflow uses actions that are not certified by GitHub. | ||
# They are provided by a third-party and are governed by | ||
# separate terms of service, privacy policy, and support | ||
# documentation. | ||
|
||
# GitHub recommends pinning actions to a commit SHA. | ||
# To get a newer version, you will need to update the SHA. | ||
# You can also reference a tag or branch, but the action may change without warning. | ||
|
||
name: Create and publish a Docker image | ||
|
||
on: | ||
push: | ||
branches: | ||
- feat/improve_docker_building | ||
workflow_dispatch: | ||
|
||
defaults: | ||
run: | ||
shell: bash -l {0} | ||
|
||
env: | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: choderalab/perses | ||
|
||
jobs: | ||
build-and-push-image: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
steps: | ||
- name: Free disk space | ||
run: | | ||
run: | | ||
sudo docker rmi $(docker image ls -aq) >/dev/null 2>&1 || true | ||
sudo rm -rf \ | ||
/usr/share/dotnet /usr/local/lib/android /opt/ghc \ | ||
/usr/local/share/powershell /usr/share/swift /usr/local/.ghcup \ | ||
/usr/lib/jvm || true | ||
echo "some directories deleted" | ||
sudo apt install aptitude -y >/dev/null 2>&1 | ||
sudo aptitude purge aria2 ansible azure-cli shellcheck rpm xorriso zsync \ | ||
esl-erlang firefox gfortran-8 gfortran-9 google-chrome-stable \ | ||
google-cloud-sdk imagemagick \ | ||
libmagickcore-dev libmagickwand-dev libmagic-dev ant ant-optional kubectl \ | ||
mercurial apt-transport-https mono-complete libmysqlclient \ | ||
unixodbc-dev yarn chrpath libssl-dev libxft-dev \ | ||
libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev \ | ||
snmp pollinate libpq-dev postgresql-client powershell ruby-full \ | ||
sphinxsearch subversion mongodb-org azure-cli microsoft-edge-stable \ | ||
-y -f >/dev/null 2>&1 | ||
sudo aptitude purge google-cloud-sdk -f -y >/dev/null 2>&1 | ||
sudo aptitude purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true | ||
sudo apt purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true | ||
sudo aptitude purge '~n ^mysql' -f -y >/dev/null 2>&1 | ||
sudo aptitude purge '~n ^php' -f -y >/dev/null 2>&1 | ||
sudo aptitude purge '~n ^dotnet' -f -y >/dev/null 2>&1 | ||
sudo apt-get autoremove -y >/dev/null 2>&1 | ||
sudo apt-get autoclean -y >/dev/null 2>&1 | ||
echo "some packages purged" | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Get Latest Version | ||
id: latest-version | ||
run: | | ||
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) | ||
echo $LATEST_TAG | ||
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_OUTPUT | ||
# In this case the version is the same as the latest_tag | ||
VERSION=$LATEST_TAG | ||
echo $VERSION | ||
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | ||
|
||
- name: Print Latest Version | ||
run: echo ${{ steps.latest-version.outputs.VERSION }} | ||
|
||
- name: Create fully qualified image registry path | ||
id: fqirp | ||
run: | | ||
FQIRP=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.latest-version.outputs.VERSION }} | ||
echo "FQIRP=$FQIRP" >> $GITHUB_OUTPUT | ||
|
||
- name: Print FQIRP | ||
run: echo ${{ steps.fqirp.outputs.FQIRP }} | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | ||
tags: | | ||
type=schedule,pattern=nightly,enable=true,priority=1000 | ||
type=ref,event=branch,enable=true,priority=600 | ||
type=ref,event=tag,enable=true,priority=600 | ||
type=ref,event=pr,prefix=pr-,enable=true,priority=600 | ||
type=semver,pattern={{major}}.{{minor}} | ||
type=semver,pattern={{version}} | ||
type=sha | ||
${{ steps.latest-version.outputs.VERSION }} | ||
latest | ||
|
||
- name: Build and export to Docker | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
file: docker/Dockerfile | ||
load: true | ||
push: false | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
build-args: | | ||
VERSION=${{ steps.latest-version.outputs.VERSION }} | ||
|
||
- name: Test image | ||
run: | | ||
mkdir oe_license_dir | ||
# Write out license to a file | ||
echo "${{ secrets.OE_LICENSE }}" > oe_license_dir/oe_license.txt | ||
docker run --rm ${{ steps.fqirp.outputs.FQIRP }} perses-cli --help | ||
# Mount oe_license_dir (which should have the license file) to /openeye on container for testing | ||
#docker run -e GITHUB_ACTIONS=true --mount type=bind,source=$PWD/oe_license_dir/,target=/openeye/,readonly --rm ${{ steps.fqirp.outputs.FQIRP }} pytest --pyargs perses -a "not advanced" -n auto -m "not gpu_needed" -v | ||
|
||
- name: Push Docker image | ||
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc | ||
with: | ||
context: . | ||
file: docker/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
build-args: | | ||
VERSION=${{ steps.latest-version.outputs.VERSION }} | ||
|
||
- name: Setup Apptainer | ||
uses: eWaterCycle/setup-apptainer@v2 | ||
with: | ||
apptainer-version: 1.1.2 | ||
|
||
- name: Build Apptainer Image | ||
run: singularity build perses_${{ steps.latest-version.outputs.VERSION }}.sif docker-daemon:${{ steps.fqirp.outputs.FQIRP }} | ||
|
||
- name: Test & Push Apptainer Image | ||
run: | | ||
set -e | ||
mkdir test_apptainer | ||
cd test_apptainer | ||
singularity run ../perses_${{ steps.latest-version.outputs.VERSION }}.sif perses-cli --help | ||
#singularity run --bind ../oe_license_dir/:/openeye/ --env "GITHUB_ACTIONS=true" ../perses_${{ steps.latest-version.outputs.VERSION }}.sif pytest --pyargs perses -a "not advanced" -n auto -m "not gpu_needed" -v | ||
echo ${{ secrets.GITHUB_TOKEN }} | singularity remote login -u ${{ secrets.GHCR_USERNAME }} --password-stdin oras://ghcr.io | ||
singularity push ../perses_${{ steps.latest-version.outputs.VERSION }}.sif oras://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.latest-version.outputs.VERSION }}-apptainer | ||
singularity push ../perses_${{ steps.latest-version.outputs.VERSION }}.sif oras://${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-apptainer |
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
FROM mambaorg/micromamba:latest | ||
|
||
LABEL org.opencontainers.image.source = "https://github.com/choderalab/perses" | ||
LABEL org.opencontainers.image.description="Experiments with expanded ensemble simulation to explore chemical and mutational space." | ||
LABEL org.opencontainers.image.authors = "John D. Chodera" | ||
LABEL org.opencontainers.image.licenses=MIT | ||
# perses version we want to build | ||
ARG VERSION | ||
|
||
# install ps | ||
USER root | ||
RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
procps \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
USER $MAMBA_USER | ||
|
||
# Don't buffer stdout & stderr streams, so if there is a crash no partial buffer output is lost | ||
# https://docs.python.org/3/using/cmdline.html#cmdoption-u | ||
ENV PYTHONUNBUFFERED=1 | ||
|
||
RUN micromamba install -y -n base -c conda-forge -c openeye openeye-toolkits git pytest-xdist pytest-attrib mpiplus mpich mpi mpi4py clusterutils "perses==$VERSION" cudatoolkit=11.2 && \ | ||
micromamba clean --all --yes | ||
|
||
# Make directory and tell openeye where to find | ||
# license file | ||
USER root | ||
RUN mkdir /openeye | ||
USER $MAMBA_USER | ||
ENV OE_LICENSE=/openeye/oe_license.txt | ||
|
||
# Ensure that conda environment is automatically activated | ||
# https://github.com/mamba-org/micromamba-docker#running-commands-in-dockerfile-within-the-conda-environment | ||
ARG MAMBA_DOCKERFILE_ACTIVATE=1 |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to pin the pymbar version here as well or only in the conda-forge recipe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I rather do it in the conda-forge recipe since if we don't have a pin in the yaml we use for tests, it is really easy then in CI to make a matrix testing different versions or like the way we do it now, since there is no pin, cpu tests get pymbar 4, but in our GPU CI yaml, we use the extra build args to then pin pymbar<4. If we put it in the env yaml, we would get an error because micomamba doesn't know what to do when the yaml says >3 but the cli command says <4