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

Create ADR for integrating cache functionality to setup-python action #247

Merged

Conversation

dmitry-shibanov
Copy link
Contributor

Prepare an ADR for support caching in setup-python.

@dmitry-shibanov dmitry-shibanov marked this pull request as ready for review October 1, 2021 13:53
- pipenv - enable caching for pipenv dependencies
- '' - disable caching (default value)
- Cache feature will be disabled by default to make sure that we don't break existing customers.
- Action will try to search dependencies files (requirements.txt for pip and Pipfile.lock for pipenv) in the repository root (or relative to the repository root, if patterns are used) and throw error if no one is found.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The most popular file to manage required packages for pip is requirements.txt, so we've decided to use it as default one to calculate hash for the cache key. The main problem with this file is that the requirements file format allows to specify dependency versions using logical operators (for example chardet>=3.0.4) or specify dependencies without any versions. In this case the pip install -r requirements.txt command will always try to install the latest available package version. It can lead to an increase in total build time, since restored cache will not be used if the requirements.txt file is not updated and a newer version of the dependency is available.

Unfortunately, there is no widely used lock file for the pip package manager, so we've decided to use requirements.txt file. We will add a note in the docs about possible issue and provide the cache-dependency-path input so that customer can select a different dependencies file.

Any thoughts and feedback are appreciated

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I agree with this approach 👍 I've mostly seen requirements.txt being used so I think it makes perfect sense to start off with supporting this.

Copy link
Collaborator

@konradpabjan konradpabjan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! Left some simple suggestions to improve the readability. Excited about this 😃

docs/adrs/0000-caching-dependencies.md Outdated Show resolved Hide resolved
docs/adrs/0000-caching-dependencies.md Outdated Show resolved Hide resolved
docs/adrs/0000-caching-dependencies.md Outdated Show resolved Hide resolved
docs/adrs/0000-caching-dependencies.md Outdated Show resolved Hide resolved
docs/adrs/0000-caching-dependencies.md Outdated Show resolved Hide resolved
docs/adrs/0000-caching-dependencies.md Outdated Show resolved Hide resolved
docs/adrs/0000-caching-dependencies.md Show resolved Hide resolved
- pipenv - enable caching for pipenv dependencies
- '' - disable caching (default value)
- Cache feature will be disabled by default to make sure that we don't break existing customers.
- Action will try to search dependencies files (requirements.txt for pip and Pipfile.lock for pipenv) in the repository root (or relative to the repository root, if patterns are used) and throw error if no one is found.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I agree with this approach 👍 I've mostly seen requirements.txt being used so I think it makes perfect sense to start off with supporting this.

@MaksimZhukov MaksimZhukov merged commit 3ef38b8 into actions:main Nov 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants