{"id":20082024,"url":"https://github.com/exercism/tooling-manager","last_synced_at":"2025-07-08T07:10:05.336Z","repository":{"id":39863250,"uuid":"304979705","full_name":"exercism/tooling-manager","owner":"exercism","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-22T13:01:59.000Z","size":90,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-30T04:38:15.706Z","etag":null,"topics":["community-contributions-paused"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exercism.png","metadata":{"funding":{"github":["exercism"],"custom":["https://exercism.org/donate"]},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-10-17T22:25:10.000Z","updated_at":"2025-06-22T13:02:03.000Z","dependencies_parsed_at":"2024-03-01T15:27:28.067Z","dependency_job_id":"8cca2929-9fcd-4c63-b0f5-91445674779f","html_url":"https://github.com/exercism/tooling-manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/exercism/tooling-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Ftooling-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Ftooling-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Ftooling-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Ftooling-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exercism","download_url":"https://codeload.github.com/exercism/tooling-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Ftooling-manager/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262950262,"owners_count":23389632,"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":["community-contributions-paused"],"created_at":"2024-11-13T15:41:27.273Z","updated_at":"2025-07-08T07:10:05.275Z","avatar_url":"https://github.com/exercism.png","language":"Ruby","readme":"# Tooling Manager\n\n![Tests](https://github.com/exercism/tooling-manager/workflows/Tests/badge.svg)\n[![Maintainability](https://api.codeclimate.com/v1/badges/6000a7e8b72f65176c00/maintainability)](https://codeclimate.com/github/exercism/tooling-manager/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/6000a7e8b72f65176c00/test_coverage)](https://codeclimate.com/github/exercism/tooling-manager/test_coverage)\n\nAn service responsible for deploying and managing Exercism's tooling.\n\nIt does the following:\n\n- Gets the machines EC2 tags\n- Looks for tags that list which languages should be used for each tool (e.g. `tooling-test-runners: all`)\n- Creates a list of all the language/tool types\n- For each:\n  - Finds the production tag for that in ECR\n  - Downloads the production image\n  - Symlinks it.\n\nAll of that can be stepped through quite clearly in [`lib/tooling_manager/manager.rb`](lib/tooling_manager/manage.rb).\n\n## Server Setup\n\nEach tooling server should have the following tags:\n\n- `tooling-test-runners`\n- `tooling-analyzers`\n- `tooling-representers`\n\nEach should have a value of a language group.\nLanguage groups are stored in DynamoDB.\n\nThe language group is prefixed with the type when looked up.\n\nFor example, specifying the tag: `tooling-test-runners: \"all\"`, will lookup the `test-runners-all` group in DynamoDB.\n","funding_links":["https://github.com/sponsors/exercism","https://exercism.org/donate"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Ftooling-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexercism%2Ftooling-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Ftooling-manager/lists"}