{"id":18431790,"url":"https://github.com/devcontainers-community/publish-feature","last_synced_at":"2026-05-02T02:37:47.404Z","repository":{"id":187763370,"uuid":"677528028","full_name":"devcontainers-community/publish-feature","owner":"devcontainers-community","description":"💻 Publish a single devcontainer feature","archived":false,"fork":false,"pushed_at":"2024-01-27T11:31:51.000Z","size":32,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T18:56:05.594Z","etag":null,"topics":["container-image","devcontainer-feature","devcontainer-features","devcontainers","github-actions","oci","publishing"],"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/devcontainers-community.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-11T20:09:41.000Z","updated_at":"2023-08-15T19:45:52.000Z","dependencies_parsed_at":"2024-01-27T01:32:54.599Z","dependency_job_id":"dcdc3e3b-f153-4798-b497-7c8ddfea48b0","html_url":"https://github.com/devcontainers-community/publish-feature","commit_stats":null,"previous_names":["jcbhmr/publish-feature","devcontainers-community/publish-feature"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers-community%2Fpublish-feature","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers-community%2Fpublish-feature/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers-community%2Fpublish-feature/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devcontainers-community%2Fpublish-feature/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devcontainers-community","download_url":"https://codeload.github.com/devcontainers-community/publish-feature/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248728649,"owners_count":21152264,"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":["container-image","devcontainer-feature","devcontainer-features","devcontainers","github-actions","oci","publishing"],"created_at":"2024-11-06T05:26:18.458Z","updated_at":"2026-05-02T02:37:47.351Z","avatar_url":"https://github.com/devcontainers-community.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Publish Dev Container Feature\n\n💻 Publish a **single** Dev Container Feature\n\n\u003cp align=center\u003e\n  \u003cimg height=200 src=https://i.imgur.com/juxM8Xu.png\u003e\n\u003c/p\u003e\n\n1️⃣ Publishes a **single** feature instead of a whole monorepo \\\n🤝 Works well with [Dev Container Feature polyrepos] \\\n0️⃣ Zero-config; sensible defaults\n\n👀 Check out [devcontainers-community/feature-starter] for a template feature\nrepo that uses this action.\n\n## Usage\n\n![GitHub Actions](https://img.shields.io/static/v1?style=for-the-badge\u0026message=GitHub+Actions\u0026color=2088FF\u0026logo=GitHub+Actions\u0026logoColor=FFFFFF\u0026label=)\n![GitHub](https://img.shields.io/static/v1?style=for-the-badge\u0026message=GitHub\u0026color=181717\u0026logo=GitHub\u0026logoColor=FFFFFF\u0026label=)\n\nTo get started, just create a new GitHub Repository that has a valid\n`devcontainer-feature.json` manifest file and a working `install.sh` script.\nThen add this to a GitHub Workflow like `.github/workflows/publish-feature.yml`:\n\n```yml\n# publish-feature.yml\nname: Publish feature\non:\n  release:\n    types: published\n  workflow_dispatch:\nconcurrency:\n  group: ${{ github.workflow }}\n  cancel-in-progress: true\njobs:\n  permissions:\n    contents: read\n    packages: write\n  publish-feature:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - uses: devcontainers-community/publish-feature@v1\n```\n\nThis will publish the Dev Container Feature to\nyour-username/features/id-of-your-feature and can be used like this:\n\n```jsonc\n// devcontainer.json\n{\n  \"features\": {\n    \"ghcr.io/octocat/my-features/my-feature\": {}\n  }\n}\n```\n\n### Inputs\n\n- **`path`:** Where the `devcontainer-feature.json` manifest is located. The\n  default is `.`.\n\n- **`files`:** Which files to include in the OCI published image. You can\n  specify a multiline list of glob patterns to include in the package. By\n  default this includes everything. The `README.md`, `LICENSE`, and\n  `devcontainer-feature.json` files will always be included in the generated\n  image.\n\n- **`source`:** What to put for the `org.opencontainers.source` annotation on\n  the image. This defaults to the current GitHub repository using\n  `${{ github.server_url }}` and `${{ github.repository }}`.\n\n- **`image`:** The destination image to push to. You can use a `*` which will be\n  replaced by the `id` field from the `devcontainer-feature.json` that was used.\n  By default this is `ghcr.io/${{ github.repository_owner }}/features/*`\n\n- **`latest`:** A boolean flag to indicate whether or not to push to the\n  `:latest` tag of the image. By default this is `true`. Set this to `false` if\n  you're publishing an older version.\n\n## Development\n\n![Deno](https://img.shields.io/static/v1?style=for-the-badge\u0026message=Deno\u0026color=000000\u0026logo=Deno\u0026logoColor=FFFFFF\u0026label=)\n\nThis GitHub Action is written using Deno. At some point in the future, it may be\ntransitioned to use plain Node.js. At present, though, we use a wrapper script\nto download the self-contained `deno` binary locally and then run the `main.ts`\nscript.\n\nTo get started editing, fork this repo and make your changes. To test those\nchanges, push them to your own `main` branch or open a PR! We use GitHub\nActions-ception to test this Action using GitHub Actions.\n\n\u003c!-- prettier-ignore-start --\u003e\n[dev container feature polyrepos]: https://github.com/devcontainers-community/features\n[devcontainers-community/feature-starter]: https://github.comm/devcontainers-community/feature-starter\n\u003c!-- prettier-ignore-end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcontainers-community%2Fpublish-feature","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevcontainers-community%2Fpublish-feature","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevcontainers-community%2Fpublish-feature/lists"}