Skip to content
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

An overview of CircleCI issues #55

Open
wehs7661 opened this issue Aug 3, 2024 · 2 comments
Open

An overview of CircleCI issues #55

wehs7661 opened this issue Aug 3, 2024 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@wehs7661
Copy link
Owner

wehs7661 commented Aug 3, 2024

Here is a list of CirclCI issues we have encountered using different settings in .circleci/config.yml.

Using the default virtual machine

This refers to the case where the config.yaml file contains a section like below:

jobs:
  test:
    machine:
      - image: default
 
...

Currently, the default virtual machine uses Python 3.12, which always triggers the issue mentioned in #52 when installing ensemble_md. An example failed build can be found in b9ba478.

Using Docker images

This refers to the case where config.yaml file contains a section like below:

jobs:
  test:
    docker:
      - image: cimg/python:<<parameters.python-version>>
    parameters:
      python-version:
        type: string

...

Multiple builds based on different Python versions can be launched by the following section:

workflows:
  continuous-integration:
    jobs:
      - test:
          name: test-python-3.8
          python-version: "3.8"
      - test:
          name: test-python-3.9
          python-version: "3.9"

...

Here are issues we have seen for builds based on different versions.

  • Python 3.8: CI builds based on Python 3.8 seem to frequently get stuck when running test_init in test_replica_exchange_EE.py. An example failed build can be found in 63cece8.
  • Python 3.9: CI builds based on Python 3,9 seem to frequently get stuck when running test_combine_df_adjacent in test_analyze_free_energy.py. An example failed build can be found in fc5c093.
  • Python 3.10 and Python 3.11: CI builds based on 3.10 and 3.11 work most of the time, with only exceptions being failures from MPI tests as mentioned in Modify config.yaml of CircleCI to allow rerunning failed tests #44. An example failed build can be found in 154c2b4 (for both versions).
  • Python 3.12: CI builds based on Python 3.12 trigger issue Add tutorials of running and analyzing REXEE simulations #52 as mentioned above.

Temporary workaround

These are likely issues stemming from CircleCI itself rather than our package. For now, we remove tests based on Python versions 3.8, 3.9, and 3.12 and only preserve those based on Python 3.10 and 3.11. In addition, we remove MPI tests. We will revisit these CI issues when they become a bottleneck for the development of the package. This issue will be closed if we can find a way to successfully run CI builds based on Python 3.8 to 3.12, without having any MPI test issues.

@wehs7661
Copy link
Owner Author

wehs7661 commented Aug 3, 2024

Here is a copy of the content of issue #53, which as been closed as we decided to gather all CI-relevant issues here.


CircleCI builds based on Python 3.12 have been failing due to an error that seems related to some conflicts between Python 3.12 and versioneer.py, as shown below:

Processing /home/circleci/project
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [18 lines of output]
      /home/circleci/project/versioneer.py:421: SyntaxWarning: invalid escape sequence '\s'
        LONG_VERSION_PY['git'] = '''
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/home/circleci/project/setup.py", line 30, in <module>
          version=versioneer.get_version(),
                  ^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/circleci/project/versioneer.py", line 1480, in get_version
          return get_versions()["version"]
                 ^^^^^^^^^^^^^^
        File "/home/circleci/project/versioneer.py", line 1412, in get_versions
          cfg = get_config_from_root(root)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/circleci/project/versioneer.py", line 342, in get_config_from_root
          parser = configparser.SafeConfigParser()
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      AttributeError: module 'configparser' has no attribute 'SafeConfigParser'. Did you mean: 'RawConfigParser'?
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Exited with code exit status 1

An example failed build can be found for the the commit b9ba478. Currently, we have left out settings for performing CI based on Python 3.12 for now, but will look into this more in the future.

@wehs7661
Copy link
Owner Author

wehs7661 commented Aug 3, 2024

Also, here is a copy of issue #44


For unknown reasons, the unit tests for functions that use MPI occasionally fail with uninformative STDOUT/STDERR. Instead of figuring out the underlying reason for these failures, an easier way to ensure that at least the build on the master branch passed the CI may be simply rerunning the CI. However, this would require some modifications in config.yaml. Some instructions can be found here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant