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

Path Validation Error: Path(s) specified in the action for caching does not exist #1137

Open
2 of 5 tasks
yashsway opened this issue Sep 18, 2024 · 8 comments
Open
2 of 5 tasks
Assignees
Labels
bug Something isn't working

Comments

@yashsway
Copy link

Description:
Getting a strange error in the "Post setup node.js" step in my GitHub workflow. I ran the workflow with debugging enabled and this step fails with this error:

Error: Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.

Action version:
v3 as uses: actions/setup-node@v3

Platform:

  • Ubuntu (ubuntu-latest)
  • macOS
  • Windows

Runner type:

  • Hosted
  • Self-hosted

Tools version:
pnpm ("packageManager": "pnpm@9.1.2" in package.json at the root of my monorepo)

Repro steps:
This is my GitHub action.

name: Release (Private Packages)
on:
  push:
    branches:
      - master
    paths:
      - ".changeset/**"
      - ".github/workflows/packages-release.yml"
  workflow_dispatch:
env:
  CI: true
  PNPM_CACHE_FOLDER: .pnpm-store
jobs:
  version_or_release:
    name: 'Version and open PR (or) release private packages'
    timeout-minutes: 15
    runs-on: ubuntu-latest
    environment: 'Production - Private Packages'
    steps:
      - name: checkout code repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: pnpm/action-setup@v4
      - name: setup node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18
          cache: 'pnpm'
      - name: setup pnpm store config
        run: pnpm config set store-dir $PNPM_CACHE_FOLDER
      - name: install dependencies
        run: pnpm install --frozen-lockfile
      - name: setup npmrc file to configure pnpm
        run: |
          cat << EOF > "$HOME/.npmrc"
            @mycompany:registry=https://npm.pkg.github.com
            //npm.pkg.github.com/:_authToken=$NPM_PUBLISH_TOKEN
            //registry.npmjs.org/:_authToken=null
          EOF
        env:
          NPM_PUBLISH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
          HOME: ${{ github.workspace }}
      - name: create and publish versions
        uses: changesets/action@v1
        with:
          cwd: ${{ github.workspace }}
          version: pnpm run version
          commit: "chore: update package versions"
          title: "Release (Private Packages)"
          publish: pnpm run publish:ci
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          HOME: ${{ github.workspace }}

Expected behavior:
Not really sure what is actually supposed to happen here.

Actual behavior:
With debugging enabled, this is the full trace for the step:

0s
##[debug]Evaluating condition for step: 'Post setup node.js'
##[debug]Evaluating: success()
##[debug]Evaluating success:
##[debug]=> true
##[debug]Result: true
##[debug]Starting: Post setup node.js
##[debug]Loading inputs
##[debug]Evaluating: (((github.server_url == 'https://github.com') && github.token) || '')
##[debug]Evaluating Or:
##[debug]..Evaluating And:
##[debug]....Evaluating Equal:
##[debug]......Evaluating Index:
##[debug]........Evaluating github:
##[debug]........=> Object
##[debug]........Evaluating String:
##[debug]........=> 'server_url'
##[debug]......=> 'https://github.com'
##[debug]......Evaluating String:
##[debug]......=> 'https://github.com'
##[debug]....=> true
##[debug]....Evaluating Index:
##[debug]......Evaluating github:
##[debug]......=> Object
##[debug]......Evaluating String:
##[debug]......=> 'token'
##[debug]....=> ''
##[debug]..=> '
'
##[debug]=> ''
##[debug]Expanded: ((('https://github.com' == 'https://github.com') && '
') || '')
##[debug]Result: '***'
##[debug]Loading env
Post job cleanup.
##[debug]Checking zstd --quiet --version
##[debug]1.5.6
##[debug]zstd version: 1.5.6
##[debug]implicitDescendants 'false'
##[debug]followSymbolicLinks 'true'
##[debug]implicitDescendants 'false'
##[debug]omitBrokenSymbolicLinks 'true'
##[debug]Search path '/home/runner/setup-pnpm/node_modules/.bin/store/v3'
##[debug]Cache Paths:
##[debug][]
Error: Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.
##[debug]Node Action run completed with exit code 1
##[debug]Finishing: Post setup node.js

@yashsway yashsway added bug Something isn't working needs triage labels Sep 18, 2024
@priyagupta108
Copy link
Contributor

Hi @yashsway 👋,
Thank you for reporting this issue. We will investigate it and get back to you as soon as we have some feedback.

@wickkidd
Copy link

We're seeing this too for the first time today on yarn berry projects with actions/setup-node@v4.

@legobeat
Copy link

legobeat commented Oct 2, 2024

Unexpectedly getting the same with a project with a yarn v1 lockfile and cache: yarn, on v3, v4.0.0, and v4.0.4(=v4).

@m9195
Copy link

m9195 commented Oct 9, 2024

Hi Team,
We are also seeing the same error frequently in Monorepo

Post job cleanup.
Error: Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved.

This is my github action:-

- name: Set up Node.js
        uses: actions/setup-node@v4.0.4
        with:
          node-version: "18"
          cache: "yarn"

      - name: Set up SSH agent
        uses: webfactory/ssh-agent@v0.5.4
        with:
          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

      - name: Login to Azure
        uses: azure/login@v2.1.1
        with:
          creds: |
            {
              "clientId": "${{ env.ARM_CLIENT_ID }}",
              "clientSecret": "${{ env.ARM_CLIENT_SECRET }}",
              "tenantId": "${{ env.ARM_TENANT_ID }}",
              "subscriptionId": "${{ env.ARM_SUBSCRIPTION_ID }}"
            }

      - name: Authenticate with GitHub
        run: git config --global url."https://$MY_GITHUB_TOKEN@github.com".insteadOf https://github.com

      - name: Install Dependencies
        run: yarn install

Runner: Github Hosted

We are installing the required dependencies too , and this issue started to occur few days back.
Previously this was not the case. Kindly help us in resolving this

@mahalakshmi-rekadi
Copy link

Hello @yashsway
Thank you for reporting the issue!

The error "Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved" occurs because the caching action cannot find the specified paths. This typically happens when the necessary directories or files do not exist at the time the caching action is executed.

Explanation and Steps to Resolve:

Ensure Dependencies are Installed Before Caching:
The caching action needs the dependencies to be installed first to create the necessary directories and files. In your workflows, the pnpm install step should be executed before setting up caching.

Updated workflow:

env:
CI: true
PNPM_CACHE_FOLDER: .pnpm-store
jobs:
version_or_release:
name: 'Version and open PR (or) release private packages'
timeout-minutes: 15
runs-on: ubuntu-latest
environment: 'Production - Private Packages'
steps:
- name: Checkout code repository
uses: actions/checkout@v3
with:
fetch-depth: 0

  - name: Setup pnpm
    uses: pnpm/action-setup@v4

  - name: Install dependencies
    run: pnpm install --frozen-lockfile

 - name: Setup Node.js
    uses: actions/setup-node@v3
    with:
      node-version: 18
      cache: 'pnpm'
      cache-dependency-path: '**/pnpm-lock.yaml'

  - name: Setup pnpm store config
    run: pnpm config set store-dir $PNPM_CACHE_FOLDER

By ensuring that the dependencies are installed before the caching step, you can avoid the path validation error and successfully cache the pnpm dependencies.

If you are experiencing the same issue with a project that uses a Yarn v1 lockfile and the cache: yarn option, the same principle applies: ensure that the dependencies are installed before the caching step.

I hope this helps! Please let us know if you have any further concerns or questions.

@javiertury
Copy link

Ensure Dependencies are Installed Before Caching: The caching action needs the dependencies to be installed first to create the necessary directories and files. In your workflows, the pnpm install step should be executed before setting up caching.

Sorry @mahalakshmi-rekadi but it doesn't make any sense to me. What is the purpose of cache then? If we need to install the packages before activating cache, well, then cache is useless.

@mahalakshmi-rekadi
Copy link

Hello @javiertury ,
The purpose of caching in GitHub Actions is to reduce workflow run times by storing dependencies. When dependencies are installed (e.g., using pnpm install), they are cached. This cache is then used in future workflow runs to skip the installation step, provided the cache is up-to-date. If the cache is missing or outdated, the dependencies are reinstalled and the cache is updated accordingly.
The initial installation is essential as it creates the necessary directories and files, which are then cached. This caching mechanism significantly speeds up subsequent runs by restoring the cache instead of reinstalling dependencies, thus avoiding redundant installations.
I hope this helps! Please let us know if you have any further concerns or questions.

@javiertury
Copy link

javiertury commented Oct 15, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

8 participants