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

feature request: look up a hash by version #83

Open
lucasgonze opened this issue Jun 17, 2022 · 9 comments · May be fixed by #90
Open

feature request: look up a hash by version #83

lucasgonze opened this issue Jun 17, 2022 · 9 comments · May be fixed by #90

Comments

@lucasgonze
Copy link
Contributor

Pinning by hash createst UI friction. With a tool like yarn a developer can use the CLI to look up the hash and upgrade the yaml in a terse command - yarn upgrade [email protected]. With pin-github-action the developer has to find the repo, look up the tag of the version they want, copy the hash, and paste the hash into their yaml.

pin-github-action should either:

  1. Be able to upgrade a single dependency using a command similar to yarn
  2. Be able to look up the hash in the CLI, so they can upgrade the yaml by hand
@lucasgonze
Copy link
Contributor Author

If you are in agreement with this feature, I am willing to submit a PR implementing it.

@mheap
Copy link
Owner

mheap commented Jun 20, 2022

@lucasgonze I'm not sure what you're suggesting we implement here. Are you looking for a way to specify a specific version of a dependency, or to update the hash in a workflow for an existing pinned dependency?

@lucasgonze
Copy link
Contributor Author

Let's say you have this:

uses: DoozyX/clang-format-lint-action@9ea72631b74e61ce337d0839a90e76180e997283 # [email protected]

and there exists a 0.14 with hash 1234567.

You issue this command:

node bin.js --update DoozyX/[email protected]

Then the yaml file changes to:

uses: DoozyX/clang-format-lint-action@1234567 # [email protected]

As a simplification, the CLI might simply report on the hash at a given version, in order to save the work of looking up the tag on Github. So this command:

node bin.js --lookup DoozyX/[email protected]

Would return this in the shell:

1234567

@mheap
Copy link
Owner

mheap commented Jun 20, 2022

Thanks for the examples, it makes it much clearer.

What are the benefits of adding support for node bin.js --update DoozyX/[email protected] in addition to updating the YAML to uses: DoozyX/[email protected] then re-running bin.js? This would look up the hash for the new version provided (or you could update [email protected] to [email protected] and re-run bin.js and it would update the hash too

@lucasgonze
Copy link
Contributor Author

My intention with this is to avoid modifying hashes apart from the one named in the parameter.

The reason I would want to only touch the one item is concern that other items might be iterated to a hash that hadn't been vetted, and this would reduce the security of pinning by hash to the same level as pinning by version.

Am I understanding this right?

@mheap
Copy link
Owner

mheap commented Jun 21, 2022

Yep, that's how it would work today.

We currently have an --allow flag to ignore specific actions from being pinned. Would adding an --only flag enable your use case?

# Update a single action
./bin.js --only  DoozyX/clang-format-lint-action

# Or update everything by a user/org
./bin.js --only DoozyX/*

This would pull the latest hash for the version specified in the pin@main comment. If you wanted to manually update the version that you're pinning to, you'd have to update the YAML file.

@lucasgonze
Copy link
Contributor Author

--only would do the job.

I also like the "everything by a user/org" idea, because it allows for very trusted orgs like actions/.

@lucasgonze
Copy link
Contributor Author

FYI: my PR for this feature is not yet ready, but I have submitted a couple other trivial features that became useful during development.

lucasgonze added a commit to lucasgonze/pin-github-action that referenced this issue Jun 24, 2022
@lucasgonze lucasgonze linked a pull request Jun 24, 2022 that will close this issue
@zeisss
Copy link

zeisss commented Jul 6, 2023

Slightly off-topic, but github's Dependabot can not update github actions pinned by SHA if there is an appropriately formatted comment. See https://github.blog/changelog/2022-10-31-dependabot-now-updates-comments-in-github-actions-workflows-referencing-action-versions/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants