-
Notifications
You must be signed in to change notification settings - Fork 586
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
Feature proposal: Integrate dependency support #77
Comments
We would very much like to use this action, because it will be a huge speed improvement as compared to pulling our pre-baked CI docker image. However, we absolutely need dependency management support - and specifically poetry. So sadly we can't switch until some kind of poetry support is implemented... |
I probably wouldn't install the project dependencies in the same step as setting up python, but it would be nice if the action included the major package managers. Like the node action includes yarn. |
I opened a PR that adds poetry to the virtual environments |
We ended up creating an action to install Poetry after setting up Python - it's still faster than pulling a complete pre-baked docker image with the operating system: https://github.com/moneymeets/action-setup-poetry Adding poetry to the base action images would of course only make it better! |
They closed my PR, as they think because poetry only takes a few seconds to install, it is not needed in the action image, and using actions is better. |
Like many of you, I also immediately run an "install dependencies" step after running this action, thus I've created a composite action: name: 'Set up python'
description: 'Set up GitHub Actions workflow with a version of Python configured with our settings'
inputs:
python-version:
description: "Version range or exact version of Python to use, using SemVer's version range syntax"
required: false
default: '3.9'
python-requirements-file:
description: "Path to the python requirements file"
required: false
default: 'requirements.txt'
outputs:
python-path:
description: "The absolute path to the Python executable"
value: '${{ steps.python.outputs.python-path }}'
python-version:
description: "The installed and configured Python version"
value: '${{ steps.python.outputs.python-version }}'
cache-hit:
description: "A boolean value to indicate a cache entry was found"
value: '${{ steps.python.outputs.cache-hit }}'
runs:
using: composite
steps:
- id: python
uses: actions/setup-python@v4
with:
token: '${{ env.GITHUB_TOKEN }}'
python-version: '${{ inputs.python-version }}'
cache: 'pip'
cache-dependency-path: '${{ inputs.python-requirements-file }}'
- id: libxmlsec1-dev
run: sudo apt-get update && sudo apt-get --assume-yes install pkg-config libxmlsec1-dev
shell: bash
- id: requirements
run: pip install --exists-action w --requirement "${{ inputs.python-requirements-file }}"
shell: bash The action documentation states:
This means that the inputs to run the "install dependencies" step are already available, at least for the currently supported package managers, thus this action could execute it in one go. |
My usual take on this is that actions should follow the Unix philosophy. But in this case, by adding built-in dependency caching, we’ve already tightly coupled with the popular Python package managers. We'd welcome a PR for this if anyone wants to take that on. |
I think a most users of this action run an "install dependencies" step immediately after. I think it would improve the developer experience if the "install dependencies" step was integrated into this action.
Current workflow:
Option 1: Support installing packages with pip
Option 2: Add full support for all package managers
What do you think? Option 1 is much smaller in scope than option 2, but I think both would be low maintenance (Python has a lot of package managers, but not that many).
The text was updated successfully, but these errors were encountered: