Comments (10)
EDIT 12/28/2022 yaml file has been modified.
@cortadocodes
When using allowlist_externals
, Tox
needs a path to find Poetry
.
This is one example that works for me.
details
tox.ini
[tox]
envlist =
py{37,38}
skipsdist = true
isolated_build = true
[testenv]
allowlist_externals =
poetry
commands_pre =
poetry install --with test -v
commands =
poetry run pytest --cov --cov-append --cov-report=term-missing -v
...
.github/workflows/poetry_caching_on_windows_with_install_poetry.yml
name: Poetry caching on Windows with install-poetry
on: workflow_dispatch
permissions:
contents: read
env:
config-poetry-version: '' # Empty is the latest version.
#config-poetry-path: ${USERPROFILE}\.local\bin # An error occurs.
config-poetry-path: ${USERPROFILE}\.local\venv\Scripts
config-poetry-cache-paths: |
~\.local\VERSION
#~\.local\bin\poetry.exe # An error occurs.
~\.local\venv
config-poetry-cache-key-fmt: 'd-poetry-{0}-{1}-python-{2}'
config-venv-cache-key-fmt: 'd-venv-{0}-python-{1}-{2}'
jobs:
create-cache:
name: caching 1/2 - ${{ matrix.os }}, ${{ matrix.python-version }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
python-version: ['3.8']
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Load cached Poetry installation
id: cached-poetry
uses: actions/cache@v3
with:
path: ${{ env.config-poetry-cache-paths }}
key: ${{ format(env.config-poetry-cache-key-fmt, env.config-poetry-version, matrix.os, steps.setup-python.outputs.python-version) }}
- name: Install Poetry ${{ env.config-poetry-version }} for Windows
if: steps.cached-poetry.outputs.cache-hit != 'true'
env:
POETRY_VERSION: ${{ env.config-poetry-version }}
uses: snok/install-poetry@v1
- name: Add Poetry to the PATH environment variable
shell: bash
run: |
echo "${{ env.config-poetry-path }}" >> $GITHUB_PATH
- name: Debug
shell: cmd
run: |
set PATH
- name: Configure Poetry
run: |
poetry config virtualenvs.in-project true
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: ${{ format(env.config-venv-cache-key-fmt, matrix.os, steps.setup-python.outputs.python-version, hashFiles('**/poetry.lock')) }}
- name: Set the environment used by Poetry on Windows 1/2
if: runner.os == 'Windows' && steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
id: py
shell: bash
run: |
VER='${{ steps.setup-python.outputs.python-version }}'
ARR=(${VER//./ })
echo "tag=${ARR[0]}.${ARR[1]}" >> $GITHUB_OUTPUT
- name: Set the environment used by Poetry on Windows 2/2
if: runner.os == 'Windows' && steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
shell: bash
env:
PY_PYTHON: ${{ steps.py.outputs.tag }}
run: |
poetry env use py
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root --with dev
- name: Test with pytest
run: |
poetry run tox -e py
# Same as above.
load-cache:
needs: create-cache
name: caching 2/2 - ${{ matrix.os }}, ${{ matrix.python-version }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
python-version: ['3.8']
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Load cached Poetry installation
id: cached-poetry
uses: actions/cache@v3
with:
path: ${{ env.config-poetry-cache-paths }}
key: ${{ format(env.config-poetry-cache-key-fmt, env.config-poetry-version, matrix.os, steps.setup-python.outputs.python-version) }}
# No need if you have cached Poetry.
#- name: Install Poetry ${{ env.config-poetry-version }} for Windows
# if: steps.cached-poetry.outputs.cache-hit != 'true'
# env:
# POETRY_VERSION: ${{ env.config-poetry-version }}
# uses: snok/install-poetry@v1
- name: Add Poetry to the PATH environment variable
shell: bash
run: |
echo "${{ env.config-poetry-path }}" >> $GITHUB_PATH
- name: Configure Poetry
run: |
poetry config virtualenvs.in-project true
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: ${{ format(env.config-venv-cache-key-fmt, matrix.os, steps.setup-python.outputs.python-version, hashFiles('**/poetry.lock')) }}
# No need if you have cached venv.
#- name: Install dependencies
# if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
# run: poetry install --no-interaction --no-root --with dev
- name: Test with pytest
run: |
poetry run tox -e py
Tox will fail if the path to Poetry is assigned in POSIX style.
This is an example that works, but it is partially mixed.
Please use Tox3 for verification.
Tox4 doesn't ensure.
from install-poetry.
I've had to revert to v1.3.2
of this action to get it working again with Windows.
from install-poetry.
I tried setting the shell to bash as recommended:
- It fixed the
poetry check
step (poetry
wasn't found as a commandlet before) - But the tests in the
tox
step failed
Here are the workflow runs showing the failures - hope they help!
- Using the latest version of
snok/install-poetry
- Using the latest version of
snok/install-poetry
with the default shell set tobash
from install-poetry.
Ah I see, thank you! We're using tox with poetry whitelisted
from install-poetry.
What does your workflow looks like? That's unfortunate.
from install-poetry.
from install-poetry.
Can't see that there's anything wrong with the action. Your workflow should work on the latest if you set the shell to bash, as described here I think
These are the tests we're running, and everything seems good. If the action was broken for windows I think we'd see it, no? Can you see anything missing?
from install-poetry.
You have to install poetry into the tox environment (deps). However, and this might be a silly question, why are you using tox to run the tests when you are using GitHub actions and poetry? poetry run pytest
or unittest or whatever is already going to run your tests in a python virtual envelope, and you can separate environments with a GitHub actions matrix.
In any event, there is this also: https://pypi.org/project/tox-poetry/
from install-poetry.
I can do that if necessary but I didn't have to for any of the previous versions of snok/install-poetry
. This is what's making me think there's a bug or a breaking change somewhere in the latest version.
We're still using tox
because it allows us to test in other environments than a GHA worker if we need to and it gives us more control than just using GHA. We are using a GHA OS matrix for MacOS, Linux, and Windows. The install-poetry
action is only failing on the Windows runner.
from install-poetry.
I can do that if necessary but I didn't have to for any of the previous versions of
snok/install-poetry
. This is what's making me think there's a bug or a breaking change somewhere in the latest version.We're still using
tox
because it allows us to test in other environments than a GHA worker if we need to and it gives us more control than just using GHA. We are using a GHA OS matrix for MacOS, Linux, and Windows. Theinstall-poetry
action is only failing on the Windows runner.
There for sure is something broken right now. I just figured tox-poetry would be useful. If tox is configured to use an existing environment it could be a problem here, but if tox is creating the environment and then can't find poetry that's because tox is properly sandboxing the environment. Any tools you use inside the toxenv need to be installed by tox itself.
from install-poetry.
Related Issues (20)
- poetry: command not found HOT 2
- Skip poetry install step with cache hit HOT 10
- Poetry fails on matrix strategies combinations HOT 4
- Add env: section to parse envs that are used in each poetry call HOT 1
- .venv caching is not working using composable actions? HOT 3
- urllib.error.URLError: <urlopen error unknown url type: https> HOT 4
- Error: `GLIBC_2.34' not found HOT 2
- poetry: command not found - When running multiple self-hosted runners on the same machine. HOT 3
- The `with` `virtualenvs-in-project` setting does not seem to work for me HOT 5
- Cache not found HOT 3
- Does not respect POETRY_HOME HOT 2
- Actions started failing recently. HOT 15
- Shared Library Error (libpython3.8.so.1.0) on builds using runner with python 3.9 or above HOT 1
- Poetry Requires Python 3.8+ HOT 3
- $VENV not set on Poetry installation cache restore HOT 3
- How to change working-directory ? HOT 5
- Install poetry in self-hosted github runner to allow different python versions HOT 8
- Virtual environment created in wrong location
- Calling poetry via CMake script on Windows HOT 4
- Update docs for Windows Server 2019 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from install-poetry.