{"id":19909451,"url":"https://github.com/chrisreddington/validate-devcontainer","last_synced_at":"2025-06-25T01:33:31.934Z","repository":{"id":261292586,"uuid":"883854424","full_name":"chrisreddington/validate-devcontainer","owner":"chrisreddington","description":"A GitHub Action which reads a repository's  devcontainer.json and validates that it contains specific configuration.","archived":false,"fork":false,"pushed_at":"2025-01-06T06:19:45.000Z","size":456,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-06T14:28:15.444Z","etag":null,"topics":["codespace","codespaces","devcontainer","devcontainers","github-actions"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/chrisreddington.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-05T17:31:19.000Z","updated_at":"2025-01-02T09:36:55.000Z","dependencies_parsed_at":"2024-12-02T08:36:14.993Z","dependency_job_id":null,"html_url":"https://github.com/chrisreddington/validate-devcontainer","commit_stats":null,"previous_names":["chrisreddington/devcontainer-validator","chrisreddington/validate-devcontainer"],"tags_count":4,"template":false,"template_full_name":"actions/javascript-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisreddington%2Fvalidate-devcontainer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisreddington%2Fvalidate-devcontainer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisreddington%2Fvalidate-devcontainer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisreddington%2Fvalidate-devcontainer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrisreddington","download_url":"https://codeload.github.com/chrisreddington/validate-devcontainer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233543215,"owners_count":18691780,"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":["codespace","codespaces","devcontainer","devcontainers","github-actions"],"created_at":"2024-11-12T21:15:31.179Z","updated_at":"2025-01-11T22:23:43.374Z","avatar_url":"https://github.com/chrisreddington.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Validate Dev Container Configuration\n\n[![GitHub Super-Linter](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/linter.yml/badge.svg)](https://github.com/chrisreddington/validate-devcontainer)\n![CI](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/ci.yml/badge.svg)\n[![Check dist/](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/check-dist.yml/badge.svg)](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/check-dist.yml)\n[![CodeQL](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/codeql-analysis.yml)\n[![Coverage](./badges/coverage.svg)](./badges/coverage.svg)\n[![Validate Repository Configuration](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/baseline.yml/badge.svg)](https://github.com/chrisreddington/validate-devcontainer/actions/workflows/baseline.yml)\n\nA GitHub Action to validate Dev Container configuration. This action can check\nfor required Visual Studio Code extensions, validate task configuration and\ncheck for required features in devcontainer.json files.\n\n## Features\n\n- Validates presence of required Visual Studio Code extensions in\n  devcontainer.json\n- Optional validation of common development tasks (build, test, run)\n- Customizable devcontainer.json path\n- Configurable extension requirements\n- Validates presence of required devcontainer features in devcontainer.json\n\n## Usage\n\n```yaml\nSteps:\n  - uses: actions/checkout@v4\n\n  - name: Validate Dev Container\n    uses: chrisreddington/validate-devcontainer@v0.0.1\n    with:\n      # Required Visual Studio Code extensions (comma-separated)\n      required-extensions: 'GitHub.codespaces,GitHub.vscode-github-actions'\n\n      # Optional: Path to devcontainer.json\n      devcontainer-path: '.devcontainer/devcontainer.json'\n\n      # Optional: Enable task validation\n      validate-tasks: 'true'\n\n      # Optional: Required devcontainer features (comma-separated)\n      required-features: 'ghcr.io/devcontainers/features/github-cli:1,ghcr.io/devcontainers-contrib/features/prettier:1'\n```\n\n### Inputs\n\n| Input                 | Description                                                    | Required | Default                                                                                                                                                                            |\n| --------------------- | -------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `required-extensions` | Comma-separated list of required Visual Studio Code extensions | Yes      | GitHub.codespaces,github.vscode-github-actions,GitHub.copilot,GitHub.copilot-chat,github.copilot-workspace,GitHub.vscode-pull-request-github,GitHub.remotehub,GitHub.vscode-codeql |\n| `devcontainer-path`   | Path to devcontainer.json file                                 | No       | .devcontainer/devcontainer.json                                                                                                                                                    |\n| `validate-tasks`      | Enable validation of build, test, and run tasks                | No       | false                                                                                                                                                                              |\n| `required-features`   | Comma-separated list of required devcontainer features         | No       |                                                                                                                                                                                    |\n\n#### Extension Validation\n\nThe action checks for the presence of the required extensions in the\n`required-extensions` input. The input is a comma-separated list of extension\nIDs. The action checks for the presence of each extension in the\n`devcontainer.json` file.\n\n#### Task Validation\n\nWhen `validate-tasks` is set to `true`, the action checks for the following\nrequired tasks in devcontainer.json:\n\n- `build`\n- `test`\n- `run`\n\nEach task must be defined as a string value.\n\n#### Feature Validation\n\nThe action checks for the presence of the required features in the\n`required-features` input. The input is a comma-separated list of feature IDs.\nThe action checks for the presence of each feature in the `devcontainer.json`\nfile.\n\n#### Example devcontainer.json\n\n```json\n{\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\"GitHub.codespaces\", \"GitHub.vscode-github-actions\"]\n    }\n  },\n  \"tasks\": {\n    \"build\": \"npm run build\",\n    \"test\": \"npm test\",\n    \"run\": \"npm start\"\n  },\n  \"features\": {\n    \"ghcr.io/devcontainers/features/github-cli:1\": {},\n    \"ghcr.io/devcontainers-contrib/features/prettier:1\": {}\n  }\n}\n```\n\n## Development\n\n1. Install dependencies: npm install\n\n1. Run tests: npm test\n\n1. Build the action: npm run bundle\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisreddington%2Fvalidate-devcontainer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrisreddington%2Fvalidate-devcontainer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisreddington%2Fvalidate-devcontainer/lists"}