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

node-version-file should support absolute paths #852

Open
2 of 5 tasks
sidvishnoi opened this issue Sep 12, 2023 · 12 comments
Open
2 of 5 tasks

node-version-file should support absolute paths #852

sidvishnoi opened this issue Sep 12, 2023 · 12 comments
Labels
feature request New feature or request to improve the current logic

Comments

@sidvishnoi
Copy link

Description:

If we pass a absolute path to node-version-file, for example, when using with Composite Actions, the resulting path is resolved incorrectly, due to a path.join() call.

setup-node/src/main.ts

Lines 96 to 100 in 5e21ff4

if (versionFileInput) {
const versionFilePath = path.join(
process.env.GITHUB_WORKSPACE!,
versionFileInput
);

Action version:
v3

Platform:

  • Ubuntu
  • macOS
  • Windows

Runner type:

  • Hosted
  • Self-hosted

Tools version:

Repro steps:

  1. In a composite action with .nvmrc, use following as input:
    node-version-file: ${{ github.action_path }}/.nvmrc

Example broken action run: https://github.com/sidvishnoi/mediasession/actions/runs/6158104300/job/16710218833?pr=1

Expected behavior:

If it can check whether provided node-version-file exists as is, or perhaps use path.resolve(), it won't break with absolute paths.

Actual behavior:

Error: The specified node version file at: /home/runner/work/mediasession/mediasession/home/runner/work/_actions/w3c/spec-prod/fix-nvmrc/.nvmrc does not exist
                                                                                      ^^^
@dmitry-shibanov
Copy link
Contributor

Hello @sidvishnoi. Thank you for your report. We'll take a look on it.

@evandam
Copy link

evandam commented Dec 7, 2023

Hi folks, I'm running into this issue as well, trying to use ${{ github.action_path }}/.tool-versions but it tries to append the path to the current directory.

It's a pretty frustrating and unexpected behavior as far as I can tell. Any hope to see a fix to this soon? 🙌

@scalp42
Copy link

scalp42 commented Dec 7, 2023

Can confirm would be nice if it could be looked into. @w3c has a workaround here but less than ideal 🙏

@marknuzz
Copy link

@actions/setup-actions-team @HarithaVattikuti

Apologies for the pings, but it looks like Dmitry hasn't been active on this project in a long time, and this issue may have slipped through the cracks. It would be awesome if someone could take a look at this and any other issues that may have been buried.

@gowridurgad gowridurgad self-assigned this Nov 6, 2024
@gowridurgad
Copy link

Hi @sidvishnoi, Thank you for your suggestion to support absolute paths in the node-version-file. Although we do not have any plans to add this feature at this time, we will consider it as a feature request for the future.
In the meantime, please use the following workarounds:

  1. Use a script to determine the relative path of the action directory and pass it to the node-version-file input:
id: action_path
run: echo "action_path=$(node -p 'require("path").relative(process.env.GITHUB_WORKSPACE, "${{ github.action_path }}")')" >> $GITHUB_ENV
shell: bash
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: ${{ env.action_path }}/.nvmrc

This script calculates the relative path from the GitHub workspace to the action directory and sets it as the node-version-file, ensuring the path is resolved correctly within the repository context.
2. Set the node version directly in the action, bypassing the need for a version file.

I hope this clarifies the issue and provides a suitable workaround. If you have any further questions, please feel free to ask.

@gowridurgad
Copy link

Hi @sidvishnoi, Just a gentle reminder regarding this issue, If you have any updates or need further assistance, Please let us know.

@sidvishnoi
Copy link
Author

@gowridurgad the workaround you shared above is what I created for W3C 😉

Further assistance would be not requiring this workaround.

@gowridurgad
Copy link

Hi @sidvishnoi, Here is an additional workaround you can use:
Use symbolic links:
Create a symbolic link: ln -s ${{ github.action_path }}/.nvmrc
Add the symbolic link creation step in your composite action before setting up Node.js. Here’s how you can update your composite action:

- name: Create symbolic link for .nvmrc
   run: ln -s ${{ github.action_path }}/.nvmrc
   shell: bash

 - name: Set up Node.js
   uses: actions/setup-node@v4  
   with:
     node-version-file: ./.nvmrc

This script will create a symbolic link from the root of your repository to the .nvmrc file in your action directory before setting up Node.js.
Let us know if this helps or if you have any further questions!

@gowridurgad
Copy link

Hi @sidvishnoi, Just a gentle reminder regarding this issue, If you have any updates or need further assistance, Please let us know.

@sidvishnoi
Copy link
Author

@gowridurgad There's no point in asking me for updates, as you've said "we will consider it as a feature request for the future." Asking over and over will not get a different answer from me, given it was me who suggested the workarounds you're sharing in one way or other.
I hope you're reading answers and not just asking questions. In this AI age, doesn't feel very human.

@gowridurgad
Copy link

Hi @sidvishnoi, Thank you for your feedback. As mentioned previously, we have noted this as a feature request for future consideration. We have sent a reminder to check if the second workaround worked for you. Apologies if it feels repetitive, but our intention is to ensure clarity and keep the discussion transparent. We truly appreciate your patience and continued engagement.

@gowridurgad gowridurgad added feature request New feature or request to improve the current logic and removed bug Something isn't working labels Dec 17, 2024
@gowridurgad gowridurgad removed their assignment Dec 17, 2024
@leemeador
Copy link

It would solve the issue to add a new context entry similar to github.action_path. Perhaps it would be called github.relative_action_path and would hold the relative path to the action's base folder from the working folder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request to improve the current logic
Projects
None yet
Development

No branches or pull requests

7 participants