vscode-github-actions icon indicating copy to clipboard operation
vscode-github-actions copied to clipboard

The pythonLocation environment variable is shown as invalid access in this context

Open Julfried opened this issue 11 months ago • 2 comments

Describe the bug

When using the pythonLocation environment variable set by the actions/setup-python action, this extension reports "Context access might be invalid" even though it is a valid environment variable documented in the official setup-python action.

To Reproduce

Steps to reproduce the behavior:

  1. With this workflow:

    name: Test Workflow
    
    on:
      workflow_dispatch:
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-python@v5
            with:
              python-version: '3.12'
          - name: Cache pip
            uses: actions/cache@v4
            with:
              path: ${{ env.pythonLocation }}/.cache/pip
              key: python-${{ hashFiles('setup.py', 'pyproject.toml') }}
    
  2. Open the "Problems" panel in VS Code.

  3. See the error:

    Context access might be invalid: pythonLocation
    

Expected behavior

The pythonLocation environment variable, which is documented and valid when using actions/setup-python, should be recognized properly by this extension.

Screenshots

If applicable, include screenshots of the warning in the Problems panel.

Extension Version

vX.Y.Z

Additional context

  • Official documentation for the pythonLocation variable: [setup-python environment variables](https://github.com/actions/setup-python#outputs-and-environment-variables).
  • This warning is a false positive, as the workflow executes without issues and the variable is set correctly.
  • Is this a bug or a limitation of the extension?

Julfried avatar Jan 14 '25 12:01 Julfried

In my understanding, currently vscode-github-actions only lint inputs and outputs recorded in action.yml of an action (see the action.yml of setup-python action), hence it has no knowledge about what environment variables and dynamic outputs are set.

muzimuzhi avatar Jan 14 '25 14:01 muzimuzhi

Thanks for clarification, this limitation makes sense. I found a workaround to address this issue: explicitly setting pythonLocation as a workflow environment variable within the env block for steps that use it:

- name: Cache pip
  id: cache-pip
  uses: actions/cache@v4
  with:
    path: ${{ env.pythonLocation }}
    key: ${{ env.pythonLocation }}-${{ hashFiles('setup.py', 'pyproject.toml') }}
  env:
    pythonLocation: ${{ env.pythonLocation }}

Julfried avatar Jan 14 '25 14:01 Julfried