{"id":20490150,"url":"https://github.com/open-turo/action-setup-tools","last_synced_at":"2025-04-13T16:33:38.202Z","repository":{"id":37051667,"uuid":"452910936","full_name":"open-turo/action-setup-tools","owner":"open-turo","description":"GitHub Action for setting current versions of tooling to use","archived":false,"fork":false,"pushed_at":"2025-04-11T00:32:28.000Z","size":4699,"stargazers_count":3,"open_issues_count":6,"forks_count":2,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-11T01:30:07.702Z","etag":null,"topics":["action","actions","gha","github","tool","tooling","tools","version","versioning","versions"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-turo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-28T02:14:57.000Z","updated_at":"2025-04-03T00:19:04.000Z","dependencies_parsed_at":"2023-10-13T10:57:17.589Z","dependency_job_id":"bc787816-0ac7-4106-815b-d448a94fbeeb","html_url":"https://github.com/open-turo/action-setup-tools","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-turo%2Faction-setup-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-turo%2Faction-setup-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-turo%2Faction-setup-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-turo%2Faction-setup-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-turo","download_url":"https://codeload.github.com/open-turo/action-setup-tools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248744208,"owners_count":21154820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","actions","gha","github","tool","tooling","tools","version","versioning","versions"],"created_at":"2024-11-15T17:15:42.681Z","updated_at":"2025-04-13T16:33:38.183Z","avatar_url":"https://github.com/open-turo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `open-turo/action-setup-tools`\n\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- action-docs-description --\u003e\n## Description\n\nGitHub Action that installs and provisions supported tools for workflow steps in self-hosted runners. This relies on the agent having supported tooling installed.\n\u003c!-- action-docs-description --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n[![Release](https://img.shields.io/github/v/release/open-turo/action-setup-tools)](https://github.com/open-turo/action-setup-tools/releases/)\n[![Tests pass/fail](https://img.shields.io/github/workflow/status/open-turo/action-setup-tools/CI)](https://github.com/open-turo/action-setup-tools/actions/)\n[![License](https://img.shields.io/github/license/open-turo/action-setup-tools)](./LICENSE)\n[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](https://github.com/dwyl/esta/issues)\n![CI](https://github.com/open-turo/action-setup-tools/actions/workflows/release.yaml/badge.svg)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n[![Conventional commits](https://img.shields.io/badge/conventional%20commits-1.0.2-%23FE5196?logo=conventionalcommits\u0026logoColor=white)](https://conventionalcommits.org)\n[![Join us!](https://img.shields.io/badge/Turo-Join%20us%21-593CFB.svg)](https://turo.com/jobs)\n\nThis action works with the following tooling and repository files (in order of\npriority):\n\n-   [goenv](https://github.com/syndbg/goenv) - `.go-version`\n-   [nodenv](https://github.com/nodenv/nodenv) - `.node-version`, `.nvmrc`\n-   [pyenv](https://github.com/pyenv/pyenv) - `.python-version`\n-   [sdkman](https://sdkman.io/) - `.sdkmanrc`\n-   [tfenv](https://github.com/tfutils/tfenv) - `.terraform-version`\n\nAttempts to use configuration provided in the directory structure for each tool,\nbut this can be overridden with additional configuration in the action.\n\nWhen used with self-hosted runners it's possible to pre-install the tooling you\ndesire and allow `action-setup-tools` to function as a version check in CI for\nmuch faster workflows.\n\n## Usage\n\nThe Action relies on the checked out repository or workspace to have existing\nconfiguration files, for each tool, present in the root level of the repository.\nThe Action takes no inputs and reads these configuration files, such as\n`.node-version`, to configure the tooling correctly for the workflow.\n\n```yaml\nname: CI\non:\n    pull_request:\n        branches:\n            - \"main\"\njobs:\n    my-job:\n        runs-on: ubuntu-latest\n        steps:\n            - name: Checkout\n              uses: actions/checkout@v3\n            - name: Setup tools\n              uses: open-turo/action-setup-tools@v1\n            - name: Output current environment\n              run: env | sort\n```\n\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- action-docs-inputs --\u003e\n\n\u003c!-- action-docs-inputs --\u003e\n\n\u003c!-- action-docs-outputs --\u003e\n## Outputs\n\n| parameter | description |\n| --- | --- |\n| go | The version of golang that has been installed and is ready for use. |\n| node | The verison of Node.js that has been installed and is ready for use. |\n| java | The version of Java that has been installed and is ready for use. |\n| python | The version of Python that has been installed and is ready for use. |\n| terraform | The version of Terraform that has been installed and is ready for use. |\n\u003c!-- action-docs-outputs --\u003e\n\n\u003c!-- action-docs-runs --\u003e\n## Runs\n\nThis action is a `node20` action.\n\u003c!-- action-docs-runs --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n## Supported Tools\n\nThe following tool platforms are supported for configuration but not\ninstallation. If you are using a self-hosted runner you must pre-install these,\nor if you're using a hosted runner they must be installed separately.\n\n### Golang\n\nBy default the action will look for a `.go-version` file in the root level\ndirectory. If present it will setup the Golang environment to use that version\nof `go`, installing the specified version if necessary.\n\nThe Go tools are made available via [goenv](https://github.com/syndbg/goenv).\n\n### Java and Kotlin\n\nBy default the action will look for a `.sdkmanrc` file in the root level\ndirectory. If present and if specifies a `java` version it will setup the sdkman\nenvironment to use that version of `java`, installing it if necessary. More\ninformation about `sdkman` can be found [here](https://sdkman.io/). Note that\nthe java version identifier is an sdkman version identifier that includes a\nvendor identifier after a dash to indicate which vendor supplies the identified\nversion.\n\nNote that because [sdkman](https://sdkman.io/) supports other tools like Kotlin,\nfuture support for additional tools via this Action is possible.\n\n### Node.js\n\nBy default the action will look for a `.node-version` file in the root level\ndirectory. If present it will setup the node environment to use that version of\nnode, installing the specified version if necessary.\n\nThis will also attempt to install the `yarn` command and make it available to\nfuture steps in the workflow.\n\nThe Node.js tools are made available via\n[nodenv](https://github.com/nodenv/nodenv).\n\n### Python\n\nBy default the action will look for a `.python-version` file in the root level\ndirectory. If present it will setup the Python environment to use that version\nof python, installing the specified version if necessary.\n\nThis will also make the `pip` available for future steps in the workflow.\n\nThe Python tools are made available via [pyenv](https://github.com/pyenv/pyenv).\n\n### Terraform\n\nBy default the action will look for a `.terraform-version` file in the root\nlevel directory. If present it will setup the environment to use that version of\n`terraform`, installing the specified version if necessary.\n\nTerraform is made available via [tfenv](https://github.com/tfutils/tfenv).\n\n## Advanced sub-action usage\n\nThis repository exports a sub-action, `open-turo/action-setup-tools/versions@v1`\nwhich allows you to specify the exact version of the tools that you wish to use,\neven if they do not have configuration files present in the repository root or\nworkspace.\n\nThis is not the recommended usage of this action since it can produce different\nresults in CI or in your local environment and is more difficult to maintain\nthan using `.*-version` files.\n\n**Do not use this sub-action except in test workflows with fixed specific\nversion requirements.**\n\n```yaml\nname: CI\non:\n    pull_request:\n        branches:\n            - \"main\"\njobs:\n    my-job:\n        runs-on: ubuntu-latest\n        steps:\n            - name: Checkout\n              uses: actions/checkout@v4\n            - name: Configure fixed test versions\n              uses: open-turo/action-setup-tools/versions@v1\n              with:\n                  go: 1.17.6\n                  java: 17.0.2-tem\n                  node: 16.14.2\n                  python: 3.10.2\n                  terraform: 1.1.5\n            - name: Output current environment\n              run: env | sort\n```\n\n## Get Help\n\nPlease review Issues, post new Issues against this repository as needed.\n\n## Local development\n\nEnsure that you have installed locally the following tools:\n\n-   [goenv](https://github.com/syndbg/goenv)\n-   [nodenv](https://github.com/nodenv/nodenv)\n-   [pyenv](https://github.com/pyenv/pyenv)\n-   [sdkman](https://sdkman.io/)\n-   [tfenv](https://github.com/tfutils/tfenv)\n\n## Contributions\n\nPlease see [here](https://github.com/open-turo/contributions) for guidelines on\nhow to contribute to this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-turo%2Faction-setup-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-turo%2Faction-setup-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-turo%2Faction-setup-tools/lists"}