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

Action started failing recently #210

Closed
epage opened this issue Sep 27, 2024 · 6 comments
Closed

Action started failing recently #210

epage opened this issue Sep 27, 2024 · 6 comments

Comments

@epage
Copy link

epage commented Sep 27, 2024

In all of my repos, I have a workflow like:

name: pre-commit

permissions: {} # none

on:
  pull_request:
  push:
    branches: [master]

jobs:
  pre-commit:
    permissions:
      contents: read
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-python@v5
    - uses: pre-commit/action@v3.0.1

See https://github.com/clap-rs/clap/blob/master/.github/workflows/pre-commit.yml

Recently, it started to fail

Run python -m pip install pre-commit
  python -m pip install pre-commit
  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
  env:
    RUST_BACKTRACE: 1
    CARGO_TERM_COLOR: always
    CLICOLOR: 1
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

https://github.com/clap-rs/clap/actions/runs/11062889874/job/30738117370?pr=5750

@asottile
Copy link
Member

read the output of the action before it

@epage
Copy link
Author

epage commented Sep 27, 2024

For anyone else looking into this, the "action before" being referred to is "setup-python". I kept to the default "don't specify the Python version" documented in this repo but have updated the version of "setup-python" to newer versions. This started failing when ubuntu-latest started getting mapped to the ubuntu-24.04 image.

The "output" being referred to is

Warning: Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '.python-version' file.
Warning: .python-version doesn't exist.
Warning: The `python-version` input is not set.  The version of Python currently in `PATH` will be used.

I saw that but I took that as the python-version field being defaulted to python --version, not that it would skip installing any version. To resolve this problem, you have to pick a specific Python version to use. It seems there isn't a way to say "get latest" and so users will need to keep in sync versions of Python that work with versions of pre-commit as tools auto-update pre-commit but extra work is needed to auto-update Python version.

@asottile
Copy link
Member

python-version: 3.x I believe will auto update to latest -- but idk github made some weird choices with setup-python to make it "more like setup-node" for some reason

epage added a commit to epage/_rust that referenced this issue Sep 27, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
epage added a commit to epage/_rust that referenced this issue Sep 27, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
epage added a commit to epage/_rust that referenced this issue Sep 27, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
epage added a commit to epage/_rust that referenced this issue Sep 27, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
@epage
Copy link
Author

epage commented Sep 27, 2024

Thanks for the tip!

SRv6d pushed a commit to SRv6d/winnow that referenced this issue Sep 29, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
SRv6d pushed a commit to SRv6d/winnow that referenced this issue Sep 29, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
SRv6d pushed a commit to SRv6d/winnow that referenced this issue Sep 29, 2024
This is needed with the ubuntu-24.04 images so that `setup-python` will
install a version of Python that the pre-commit action can install into.

See pre-commit/action#210 for more of an analysis of this.
e-minguez added a commit to e-minguez/terraform-equinix-metal-k3s that referenced this issue Oct 3, 2024
- Replaced Bird by native MetalLB
- Setup Ingress IP properly
- Deploy an extra Ingress to handle the Global IP (instead of abusing the regular Ingress that makes unable to expose cluster-wide apps and only global ones)
- Added Rancher deployment (Rancher flavor and version can be provided)
- K3s or RKE2 (any version can be specified)
- Added a helper script to perform the Rancher bootstrap process automatically as well as importing all the clusters to it
- Added `shfmt` to the pre-commit action
- Switched to Terraform >= 1.9.0 (as required to include a new validation)
- Fixed pre-commit action -> pre-commit/action#210

Closes equinix-labs#53, closes equinix-labs#81, closes equinix-labs#67, closes equinix-labs#66
e-minguez added a commit to e-minguez/terraform-equinix-metal-k3s that referenced this issue Oct 3, 2024
- Replaced Bird by native MetalLB
- Setup Ingress IP properly
- Deploy an extra Ingress to handle the Global IP (instead of abusing the regular Ingress that makes unable to expose cluster-wide apps and only global ones)
- Added Rancher deployment (Rancher flavor and version can be provided)
- K3s or RKE2 (any version can be specified)
- Added a helper script to perform the Rancher bootstrap process automatically as well as importing all the clusters to it
- Added `shfmt` to the pre-commit action
- Switched to Terraform >= 1.9.0 (as required to include a new validation)
- Fixed pre-commit action -> pre-commit/action#210

Closes equinix-labs#53, closes equinix-labs#81, closes equinix-labs#67, closes equinix-labs#66
e-minguez added a commit to e-minguez/terraform-equinix-metal-k3s that referenced this issue Oct 3, 2024
- Replaced Bird by native MetalLB
- Setup Ingress IP properly
- Deploy an extra Ingress to handle the Global IP (instead of abusing the regular Ingress that makes unable to expose cluster-wide apps and only global ones)
- Added Rancher deployment (Rancher flavor and version can be provided)
- K3s or RKE2 (any version can be specified)
- Added a helper script to perform the Rancher bootstrap process automatically as well as importing all the clusters to it
- Added `shfmt` to the pre-commit action
- Switched to Terraform >= 1.9.0 (as required to include a new validation)
- Fixed pre-commit action -> pre-commit/action#210

Closes equinix-labs#53, closes equinix-labs#81, closes equinix-labs#67, closes equinix-labs#66
@rhaschke
Copy link

I ran into the same issue and the comment #213 (comment) was not helpful to me. Eventually, I found the issue here.
I do not explicitly install python via actions/setup-python at all, because the ubuntu images already come with python installed. However, using this system version of python fails since Python 3.12 / ubuntu-24.04.

So, for me the issue is not yet resolved. Surely, @asottile, you can enforce people to (re)install a specific version of Python via the setup-python action, but then this should be documented in the README, which doesn't yet specify a Python version and emphasizes that this is important:

action/README.md

Lines 35 to 36 in 576ff52

- uses: actions/setup-python@v3
- uses: pre-commit/action@v3.0.1

@asottile
Copy link
Member

skill issue imo. it is in the readme you just didn't follow it or read the output of your own job

@pre-commit pre-commit locked as off-topic and limited conversation to collaborators Oct 11, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

3 participants