-
Notifications
You must be signed in to change notification settings - Fork 53
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
Make the action work on all Windows shells #99
Comments
I've had to revert to |
What does your workflow looks like? That's unfortunate. |
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? |
I tried setting the shell to bash as recommended:
Here are the workflow runs showing the failures - hope they help! |
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? In any event, there is this also: https://pypi.org/project/tox-poetry/ |
I can do that if necessary but I didn't have to for any of the previous versions of We're still using |
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. |
Ah I see, thank you! We're using tox with poetry whitelisted |
EDIT 12/28/2022 yaml file has been modified. @cortadocodes This is one example that works for me. details
[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
...
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. |
There should be a simple way to run an os-matrix, including windows, regardless of the shell you're running. We can detect which shell is running and adapt accordingly.
When we say "all" shells, I guess we actually only care about
And cmd might not be that important if we can't easily fix it, but powershell is the default and bash is what we've recommended in the past.
The text was updated successfully, but these errors were encountered: