per1234 e22b976180 Use npm to manage tool dependencies
Some of the assets use tools sourced from the npm software registry.

Previously, the version of the tools used was not controlled. This was problematic because:

- A different version of the tool may be used on the contributor's machine than on the CI runner, resulting in confusing
  failures.
- The project is immediately subject to disruption or breakage resulting from a release of the tool.

---

These tools were installed via either of the following methods:

`npx <pkg>`

This approach has the following behaviors of interest:

https://docs.npmjs.com/cli/v8/commands/npx#description

> If any requested packages are not present in the local project dependencies, then they are installed to a folder in the npm cache, which is added to the PATH environment variable in the executed process.

> Package names provided without a specifier will be matched with whatever version exists in the local project. Package names with a specifier will only be considered a match if they have the exact same name and version as the local dependency.

This means that the version used was:

1. Whatever happens to be present in the local cache
2. The latest available version if it is not already present

`npm install --global <pkg>`

The latest available version of the package is used.

---

The new approach is to specify the version of the tools via the standard npm metadata files (package.json +
package-lock.json). This approach was chosen over the `npx <pkg>@<version>` alternative for the following reasons:

- Enables automated updates via Dependabot PRs
- Enables automated vulnerability alerts
- Separates dependency management from the asset contents (i.e., no need to mess with the taskfile or workflow on every
  update)
- Matches how we are already managing Python dependencies (pyproject.toml + poetry.lock)
2022-12-16 16:19:02 -08:00
2021-12-02 16:14:42 +01:00
2021-05-03 22:24:36 -07:00
2022-10-10 23:12:39 +02:00

arduino/setup-task

Test TypeScript status Check TypeScript status Check TypeScript Configuration status Check npm status Integration Tests status Check Action Metadata status Check Prettier Formatting status Check Markdown status Spell Check status Check License status Check npm Dependencies status Sync Labels status

A GitHub Actions action that makes the Task task runner / build tool available to use in your workflow.

Inputs

version

The version of Task to install. Can be an exact version (e.g., 3.4.2) or a version range (e.g., 3.x).

Default: 3.x

repo-token

(Optional) GitHub access token used for GitHub API requests. Heavy usage of the action can result in workflow run failures caused by rate limiting. GitHub provides a more generous allowance for Authenticated API requests.

It will be convenient to use ${{ secrets.GITHUB_TOKEN }}.

Usage

To get the action's default version of Task just add this step:

- name: Install Task
  uses: arduino/setup-task@v1

If you want to pin a major or minor version you can use the .x wildcard:

- name: Install Task
  uses: arduino/setup-task@v1
  with:
    version: 2.x

To pin the exact version:

- name: Install Task
  uses: arduino/setup-task@v1
  with:
    version: 2.6.1

Security

If you think you found a vulnerability or other security-related bug in this project, please read our security policy and report the bug to our Security Team 🛡️ Thank you!

e-mail contact: security@arduino.cc

Description
GitHub Actions action to make Task available for use in your workflow.
Readme GPL-3.0 6.1 MiB
Languages
TypeScript 97.9%
JavaScript 2.1%