diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 74ca7760..55618006 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Jekyll", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/jekyll:1-bullseye", + "image": "mcr.microsoft.com/devcontainers/jekyll:2", // Features to add to the dev container. More info: https://containers.dev/features. "features": { diff --git a/.devcontainer/fetch-index.sh b/.devcontainer/fetch-index.sh deleted file mode 100755 index a5a2aba6..00000000 --- a/.devcontainer/fetch-index.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -pushd /tmp - curl -LO https://github.com/oras-project/oras/releases/download/v0.13.0/oras_0.13.0_linux_amd64.tar.gz - mkdir -p oras-install/ - tar -zxf oras_0.13.0_*.tar.gz -C oras-install/ - mv oras-install/oras /usr/local/bin/ - rm -rf oras_0.13.0_*.tar.gz oras-install/ -popd - -cd /workspaces/devcontainers.github.io/_data -oras pull ghcr.io/devcontainers/index:latest -cp devcontainer-index.json ../static/ \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..f33a02cd --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for more information: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates +# https://containers.dev/guide/dependabot + +version: 2 +updates: + - package-ecosystem: "devcontainers" + directory: "/" + schedule: + interval: weekly diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5fe63fd7..858414d1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -58,7 +58,7 @@ jobs: destination: ./_site - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v3 # Deployment job deploy: @@ -70,4 +70,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v4 diff --git a/_data/collection-index.yml b/_data/collection-index.yml index 10e0c52f..1553b248 100644 --- a/_data/collection-index.yml +++ b/_data/collection-index.yml @@ -8,6 +8,11 @@ contact: https://github.com/devcontainers/templates/issues repository: https://github.com/devcontainers/templates ociReference: ghcr.io/devcontainers/templates +- name: Azure SQL Database Dev Container Templates + maintainer: Azure SQL Developer Experiences Team + contact: https://github.com/microsoft/azuresql-devcontainers/issues + repository: https://github.com/microsoft/azuresql-devcontainers + ociReference: ghcr.io/microsoft/azuresql-devcontainers - name: Iterative Tools for Machine Learning Features maintainer: Iterative, Inc contact: https://github.com/iterative/features/issues @@ -33,16 +38,6 @@ contact: https://github.com/mpriscella/features/issues repository: https://github.com/mpriscella/features ociReference: ghcr.io/mpriscella/features -- name: DevContainers-Contrib Features - maintainer: Daniel Braun - contact: https://github.com/devcontainers-contrib/features/issues - repository: https://github.com/devcontainers-contrib/features - ociReference: ghcr.io/devcontainers-contrib/features -- name: DevContainers-Contrib Templates - maintainer: Daniel Braun - contact: https://github.com/devcontainers-contrib/templates/issues - repository: https://github.com/devcontainers-contrib/templates - ociReference: ghcr.io/devcontainers-contrib/templates - name: Assorted Features maintainer: eitsupi contact: https://github.com/eitsupi/devcontainer-features/issues @@ -283,11 +278,6 @@ contact: https://github.com/swift-server/swift-devcontainer-template/issues repository: https://github.com/swift-server/swift-devcontainer-template ociReference: ghcr.io/swift-server/swift-devcontainer-template -- name: Android SDK Tools and Apt packages - maintainer: akhildevelops - contact: https://github.com/akhildevelops/devcontainer-features/issues - repository: https://github.com/akhildevelops/devcontainer-features - ociReference: ghcr.io/akhildevelops/devcontainer-features - name: UNSW cs3231 OS Development maintainer: Hamish Cox contact: https://github.com/HamishWHC/cs3231-devcontainer/issues @@ -308,16 +298,16 @@ contact: https://github.com/swift-server-community/swift-devcontainer-features/issues repository: https://github.com/swift-server-community/swift-devcontainer-features ociReference: ghcr.io/swift-server-community/swift-devcontainer-features +- name: Kvokka Dev Container Features + maintainer: kvokka + contact: https://github.com/kvokka/features/issues + repository: https://github.com/kvokka/features + ociReference: ghcr.io/kvokka/features - name: gickis Dev Container Features maintainer: Andrii Tararaka contact: https://github.com/gickis/devcontainer-features/issues repository: https://github.com/gickis/devcontainer-features ociReference: ghcr.io/gickis/devcontainer-features -- name: Flutter SDK - maintainer: Jarrod Colburn - contact: jarrod@jarrodcolburn.com - repository: https://github.com/jarrodcolburn/features - ociReference: ghcr.io/jarrodcolburn/features - name: sonikro Dev Container Features maintainer: Jonathan Nagayoshi contact: https://github.com/sonikro/devcontainer-features/issues @@ -353,11 +343,6 @@ contact: https://github.com/ksh5022/devcontainer-features/issues repository: https://github.com/ksh5022/devcontainer-features ociReference: ghcr.io/ksh5022/devcontainer-features -- name: GMkonan devcontainer features - maintainer: GMkonan - contact: https://github.com/GMkonan/feature/issues - repository: https://github.com/GMkonan/feature - ociReference: ghcr.io/gmkonan/feature - name: Dapr devcontainer features maintainer: Dapr maintainers contact: https://github.com/dapr/cli/issues @@ -618,11 +603,6 @@ contact: https://github.com/MarlonPassos-git/dev-container-features/issues repository: https://github.com/MarlonPassos-git/dev-container-features ociReference: ghcr.io/marlonpassos-git/dev-container-features -- name: DevContainers for Fedora-based Development - maintainer: RonaldTM9999 - contact: https://github.com/RonaldTM9999/devcontainers/issues - repository: https://github.com/RonaldTM9999/devcontainers - ociReference: ghcr.io/ronaldtm9999/devcontainers - name: DevContainer Features by Paul Gilber maintainer: Paul Gilber contact: https://github.com/paul-gilber/devcontainer-features/issues @@ -678,10 +658,10 @@ contact: https://github.com/rsm-hcd repository: https://github.com/rsm-hcd/devcontainer-templates ociReference: ghcr.io/rsm-hcd/devcontainer-templates -- name: Additional Dev Container Features by Georg Ofenbeck +- name: Additional Dev Container Features by Georg Ofenbeck maintainer: Georg Ofenbeck contact: https://github.com/GeorgOfenbeck/features/issues - repository: https://github.com/GeorgOfenbeck/features + repository: https://github.com/GeorgOfenbeck/features ociReference: ghcr.io/georgofenbeck/features - name: Dev Container Features by Niko Böckerman maintainer: Niko Böckerman @@ -707,7 +687,7 @@ maintainer: johnluicn contact: https://github.com/johnluicn/devcontainer-templates/issues repository: https://github.com/johnluicn/devcontainer-templates - ociReference: ghcr.io/johnluicn/devcontainer-templates + ociReference: ghcr.io/johnluicn/devcontainer-templates - name: Bob buildsystem and DevBox features maintainer: Dirk Louwers contact: https://github.com/dlouwers/devcontainer-features/issues @@ -767,7 +747,7 @@ maintainer: Cadu Ribeiro contact: https://github.com/duduribeiro/devcontainer-features/issues repository: https://github.com/duduribeiro/devcontainer-features/ - ociReference: ghcr.io/duduribeiro/devcontainer-features + ociReference: ghcr.io/duduribeiro/devcontainer-features - name: Dev Container Features by skriptfabrik maintainer: skriptfabrik contact: https://github.com/skriptfabrik/devcontainer-features/issues @@ -783,3 +763,322 @@ contact: https://github.com/nils-geistmann/devcontainers-features/issues repository: https://github.com/nils-geistmann/devcontainers-features/ ociReference: ghcr.io/nils-geistmann/devcontainers-features +- name: OpenFGA CLI + maintainer: Andrew Porter + contact: https://github.com/partydrone/devcontainer/issues + repository: https://github.com/partydrone/devcontainer + ociReference: ghcr.io/partydrone/devcontainer/features +- name: Dev Container Features by rafaph + maintainer: Raphael Castro + contact: https://github.com/rafaph/devcontainer-features/issues + repository: https://github.com/rafaph/devcontainer-features + ociReference: ghcr.io/rafaph/devcontainer-features +- name: SPFx Dev Container + maintainer: Troy + contact: https://github.com/tpalacino/SPFx-dev-container/issues + repository: https://github.com/tpalacino/SPFx-dev-container + ociReference: ghcr.io/tpalacino/spfx-dev-container +- name: GMkonan devcontainer features + maintainer: GMkonan + contact: https://github.com/GMkonan/fly-cli-feature/issues + repository: https://github.com/GMkonan/fly-cli-feature + ociReference: ghcr.io/gmkonan/fly-cli-feature +- name: Dev Container Features by E-gineering + maintainer: E-gineering + contact: https://github.com/e-gineering/devcontainer-features/issues + repository: https://github.com/e-gineering/devcontainer-features + ociReference: ghcr.io/e-gineering/devcontainer-features +- name: Dev Container Templates by E-gineering + maintainer: E-gineering + contact: https://github.com/e-gineering/devcontainer-templates/issues + repository: https://github.com/e-gineering/devcontainer-templates + ociReference: ghcr.io/e-gineering/devcontainer-templates +- name: ROS2 devcontainer Template + maintainer: Tony Najjar + contact: https://github.com/tonynajjar/ros2_devcontainer_template/issues + repository: https://github.com/tonynajjar/ros2_devcontainer_template/ + ociReference: ghcr.io/tonynajjar/ros2_devcontainer_template +- name: Clojure devcontainer templates + maintainer: Carsten Behring + contact: https://github.com/scicloj/devcontainer-templates/issues + repository: https://github.com/scicloj/devcontainer-templates/ + ociReference: ghcr.io/scicloj/devcontainer-templates +- name: Synology devcontainer Templates + maintainer: ChaosWars + contact: https://github.com/ChaosWars/synology-features/issues + repository: https://github.com/ChaosWars/synology-features/ + ociReference: ghcr.io/chaoswars/synology-features +- name: Assorted Features + maintainer: tcaky + contact: https://github.com/tcaky/devcontainer-features/issues + repository: https://github.com/tcaky/devcontainer-features + ociReference: ghcr.io/tcaky/devcontainer-features +- name: Dev & Container features + maintainer: LarsNieuwenhuizen + contact: https://github.com/LarsNieuwenhuizen/features/issues + repository: https://github.com/LarsNieuwenhuizen/features + ociReference: ghcr.io/larsnieuwenhuizen/features +- name: Dev Container Features by enrico9034 + maintainer: enrico9034 + contact: https://github.com/enrico9034/devcontainer-features/issues + repository: https://github.com/enrico9034/devcontainer-features + ociReference: ghcr.io/enrico9034/devcontainer-features +- name: Dev Container Templates by ThePhaseless + maintainer: ThePhaseless + contact: https://github.com/ThePhaseless/devcontainer-templates/issues + repository: https://github.com/ThePhaseless/devcontainer-templates + ociReference: ghcr.io/thephaseless/devcontainer-templates +- name: Devcontainer Features by nikiforovall + maintainer: nikiforovall + contact: https://github.com/nikiforovall/devcontainer-features/issues + repository: https://github.com/nikiforovall/devcontainer-features + ociReference: ghcr.io/nikiforovall/devcontainer-features +- name: Dev Container Templates by matheusfvesco + maintainer: matheusfvesco + contact: https://github.com/matheusfvesco/devcontainer-templates/issues + repository: https://github.com/matheusfvesco/devcontainer-templates + ociReference: ghcr.io/matheusfvesco/devcontainer-templates +- name: Dennis Irsigler Dev Container Features + maintainer: dirsigler + contact: https://github.com/dirsigler/devcontainer-features/issues + repository: https://github.com/dirsigler/devcontainer-features + ociReference: ghcr.io/dirsigler/devcontainer-features +- name: Dev Container Templates by sleter + maintainer: sleter + contact: https://github.com/sleter/mojo-devcontainer/issues + repository: https://github.com/sleter/mojo-devcontainer + ociReference: ghcr.io/sleter/mojo-devcontainer +- name: Devcontainer features by sidecus + maintainer: sidecus + contact: https://github.com/sidecus/devcontainer-features/issues + repository: https://github.com/sidecus/devcontainer-features + ociReference: ghcr.io/sidecus/devcontainer-features +- name: MATLAB Feature for DevContainers + maintainer: The MathWorks Inc. + contact: https://github.com/mathworks/devcontainer-features/issues + repository: https://github.com/mathworks/devcontainer-features + ociReference: ghcr.io/mathworks/devcontainer-features +- name: Julian Pawlowski Dev Container Features + maintainer: Julian Pawlowski + contact: https://github.com/jpawlowski/devcontainer-features/issues + repository: https://github.com/jpawlowski/devcontainer-features + ociReference: ghcr.io/jpawlowski/devcontainer-features +- name: pre-commit hooks(via pip) & sonarlint + maintainer: gvatsal60 (Vatsal Gupta) + contact: https://github.com/gvatsal60/dev-container-features/issues + repository: https://github.com/gvatsal60/dev-container-features + ociReference: ghcr.io/gvatsal60/dev-container-features +- name: Devcontainer features by git-saj + maintainer: git-saj + contact: https://github.com/git-saj/devcontainer-features/issues + repository: https://github.com/git-saj/devcontainer-features + ociReference: ghcr.io/git-saj/devcontainer-features +- name: Devcontainer features by Codefabrik + maintainer: Codefabrik GmbH + contact: https://github.com/code-fabrik/features/issues + repository: https://github.com/code-fabrik/features + ociReference: ghcr.io/code-fabrik/features +- name: Devcontainer features by Juan Ayala + maintainer: Juan Ayala + contact: https://github.com/juan-ayala/devcontainer-features/issues + repository: https://github.com/juan-ayala/devcontainer-features + ociReference: ghcr.io/juan-ayala/devcontainer-features +- name: Devcontainer templates by Juan Ayala + maintainer: Juan Ayala + contact: https://github.com/juan-ayala/devcontainer-templates/issues + repository: https://github.com/juan-ayala/devcontainer-templates + ociReference: ghcr.io/juan-ayala/devcontainer-templates +- name: LocalStack DevContainer Feature + maintainer: LocalStack GmbH + contact: https://github.com/localstack/devcontainer-feature/issues + repository: https://github.com/localstack/devcontainer-feature + ociReference: ghcr.io/localstack/devcontainer-feature +- name: LocalStack DevContainer Template + maintainer: LocalStack GmbH + contact: https://github.com/localstack/devcontainer-template/issues + repository: https://github.com/localstack/devcontainer-template + ociReference: ghcr.io/localstack/devcontainer-template +- name: Dev Container features by Adaptavist + maintainer: Mark Gibson + contact: https://github.com/adaptavist/devcontainer-features/issues + repository: https://github.com/adaptavist/devcontainer-features + ociReference: ghcr.io/adaptavist/devcontainer-features +- name: Dev Container features by phil-bell + maintainer: Phil Bell + contact: https://github.com/phil-bell/devcontainer-features/issues + repository: https://github.com/phil-bell/devcontainer-features + ociReference: ghcr.io/phil-bell/devcontainer-features +- name: Dev Container Templates by Alex Wegener + maintainer: Alex Wegener + contact: https://github.com/lx-0/devcontainer-templates/issues + repository: https://github.com/lx-0/devcontainer-templates + ociReference: ghcr.io/lx-0/devcontainer-templates +- name: Hauke's Features for Development Containers + maintainer: Hauke D + contact: https://github.com/haukex/devcontainer-features/issues + repository: https://github.com/haukex/devcontainer-features + ociReference: ghcr.io/haukex/devcontainer-features +- name: Devcontainer features by vmvarela + maintainer: Victor M. Varela + contact: https://github.com/vmvarela/devcontainer-features/issues + repository: https://github.com/vmvarela/devcontainer-features +- name: Crystal features + maintainer: Caesarovich + contact: https://github.com/Caesarovich/devcontainer-feature-crystal/issues + repository: https://github.com/Caesarovich/devcontainer-feature-crystal + ociReference: ghcr.io/caesarovich/devcontainer-feature-crystal +- name: Dev Container Features by devcontainers-extra + maintainer: devcontainers-extra + contact: https://github.com/devcontainers-extra/features/issues + repository: https://github.com/devcontainers-extra/features + ociReference: ghcr.io/devcontainers-extra/features +- name: devcontainer features by Bas Steins + maintainer: Bas Steins + contact: https://bas.codes + repository: https://github.com/bascodes/devcontainer-features + ociReference: ghcr.io/bascodes/devcontainer-features +- name: devcontainer features by rhiroe + maintainer: rhiroe + contact: https://github.com/rhiroe/features/issues + repository: https://github.com/rhiroe/features + ociReference: ghcr.io/rhiroe/features +- name: devcontainer features by martinaskestad + maintainer: martinaskestad + contact: https://github.com/martinaskestad/features/issues + repository: https://github.com/martinaskestad/features + ociReference: ghcr.io/martinaskestad/features +- name: devcontainer features for wolfi base docker image + maintainer: David Zucker + contact: https://github.com/davzucky/devcontainers-features-wolfi/issues + repository: https://github.com/davzucky/devcontainers-features-wolfi + ociReference: ghcr.io/davzucky/devcontainers-features-wolfi +- name: Dev Container Features by ForWarD Software + maintainer: ForWarD Software + contact: https://github.com/forwardsoftware/devcontainer-features/issues + repository: https://github.com/forwardsoftware/devcontainer-features + ociReference: ghcr.io/forwardsoftware/devcontainer-features +- name: devcontainer feature to install apt dependencies defined in an `Aptfile.dev` file. + maintainer: Viktor Schmidt + contact: https://github.com/viktorianer/devcontainer-features/issues + repository: https://github.com/viktorianer/devcontainer-features/tree/main/src/apt + ociReference: ghcr.io/viktorianer/devcontainer-features/apt +- name: devcontainer features by ChaosWars + maintainer: ChaosWars + contact: https://github.com/ChaosWars/vscode-features/issues + repository: https://github.com/ChaosWars/vscode-features + ociReference: ghcr.io/chaoswars/vscode-features +- name: Community features by devcontainer.community + maintainer: devcontainer.community + contact: https://devcontainer.community + repository: https://github.com/devcontainer-community/devcontainer-features + ociReference: ghcr.io/devcontainer-community/devcontainer-features +- name: Additional Dev Container Features by braun-daniel + maintainer: Daniel Braun + contact: https://github.com/braun-daniel/devcontainer-features/issues + repository: https://github.com/braun-daniel/devcontainer-features + ociReference: ghcr.io/braun-daniel/devcontainer-features +- name: Dev Container Features by Ivan Szkiba + maintainer: Ivan Szkiba + contact: https://github.com/szkiba/devcontainer-features/issues + repository: https://github.com/szkiba/devcontainer-features + ociReference: ghcr.io/szkiba/devcontainer-features +- name: devcontainer features by TheDiveO + maintainer: TheDiveO + contact: https://github.com/thediveo/devcontainer-features/issues + repository: https://github.com/thediveo/devcontainer-features + ociReference: ghcr.io/thediveo/devcontainer-features +- name: devcontainer features by .NET Aspire + maintainer: danmoseley + contact: https://github.com/dotnet/aspire-devcontainer-feature/issues + repository: https://github.com/dotnet/aspire-devcontainer-feature + ociReference: ghcr.io/dotnet/aspire-devcontainer-feature +- name: devcontainer features by RouL + maintainer: Markus Zhang + contact: https://github.com/RouL/devcontainer-features/issues + repository: https://github.com/RouL/devcontainer-features + ociReference: ghcr.io/roul/devcontainer-features +- name: devcontainer templates by techiro + maintainer: techiro + contact: https://github.com/techiro/devcontainer-template/issues + repository: https://github.com/techiro/devcontainer-template + ociReference: ghcr.io/techiro/devcontainer-template +- name: Claude Code Feature + maintainer: Anthropic + contact: https://github.com/anthropics/devcontainer-features/issues + repository: https://github.com/anthropics/devcontainer-features + ociReference: ghcr.io/anthropics/devcontainer-features/claude-code +- name: devcontainer templates by blooop + maintainer: Austin Gregg-Smith + contact: https://github.com/blooop/devcontainer-templates/issues + repository: https://github.com/blooop/devcontainer-templates + ociReference: ghcr.io/blooop/devcontainer-templates +- name: devcontainer features by prplecake + maintainer: Matthew Jorgensen (prplecake) + contact: https://github.com/prplecake/devcontainer-features/issues + repository: https://github.com/prplecake/devcontainer-features + ociReference: ghcr.io/prplecake/devcontainer-features +- name: Ziglang devcontainer Template + maintainer: fardragon + contact: https://github.com/fardragon/devcontainers-zig-template/issues + repository: https://github.com/fardragon/devcontainers-zig-template + ociReference: ghcr.io/fardragon/devcontainers-zig-template +- name: TTCN-3-Devcontainer + maintainer: Muhammad Umair Khan + contact: https://github.com/m-umair-khan-dev/devcontainers/issues + repository: https://github.com/m-umair-khan-dev/devcontainers + ociReference: ghcr.io/m-umair-khan-dev/devcontainers/ttcn-3-devcontainer +- name: Dev Container Features by Grafana Labs + maintainer: Grafana Labs + contact: https://github.com/grafana/devcontainer-features/issues + repository: https://github.com/grafana/devcontainer-features + ociReference: ghcr.io/grafana/devcontainer-features +- name: Dev Container Features by httpdss + maintainer: httpdss + contact: https://github.com/httpdss/devcontainers-features/issues + repository: https://github.com/httpdss/devcontainers-features + ociReference: ghcr.io/httpdss/devcontainers-features +- name: Axon Ivy devcontainer template + maintainer: axonivy + contact: https://github.com/axonivy/devcontainer-templates/issues + repository: https://github.com/axonivy/devcontainer-templates + ociReference: ghcr.io/axonivy/devcontainer-templates +- name: Dev Container Features by Coder + maintainer: Coder + contact: https://github.com/coder/devcontainer-features/issues + repository: https://github.com/coder/devcontainer-features + ociReference: ghcr.io/coder/devcontainer-features +- name: Dev Container Features by atty303 + maintainer: atty303 + contact: https://github.com/atty303/devcontainer-features/issues + repository: https://github.com/atty303/devcontainer-features + ociReference: ghcr.io/atty303/devcontainer-features +- name: devcontainer features by MuhmdRaouf + maintainer: Mohammed Abdel Raouf (MuhmdRaouf) + contact: https://github.com/muhmdraouf/devcontainers-features/issues + repository: https://github.com/muhmdraouf/devcontainers-features + ociReference: ghcr.io/muhmdraouf/devcontainers-features +- name: Dev Container Features by John Ajera + maintainer: John Ajera + contact: https://github.com/jajera/features/issues + repository: https://github.com/jajera/features + ociReference: ghcr.io/jajera/features +- name: MrSimonEmms Dev Container Features + maintainer: MrSimonEmms + contact: https://github.com/mrsimonemms/devcontainers/issues + repository: https://github.com/mrsimonemms/devcontainers + ociReference: ghcr.io/mrsimonemms/devcontainers +- name: HTTPie Feature + maintainer: Ferdinand Keller + contact: https://github.com/ferdinandkeller/features/issues + repository: https://github.com/ferdinandkeller/features + ociReference: ghcr.io/ferdinandkeller/features/httpie +- name: Rojo Feature + maintainer: Ryan Luu + contact: https://github.com/RyanLua/features/issues + repository: https://github.com/RyanLua/features + ociReference: ghcr.io/ryanlua/features +- name: Roblox Template + maintainer: Ryan Luu + contact: https://github.com/RyanLua/templates/issues + repository: https://github.com/RyanLua/templates + ociReference: ghcr.io/ryanlua/templates diff --git a/_implementors/contributing.md b/_implementors/contributing.md index 597847fb..8fc2edb4 100644 --- a/_implementors/contributing.md +++ b/_implementors/contributing.md @@ -19,7 +19,7 @@ Here is a sample: | Property | Type | Description | |:------------------|:------------|:------------| | `image` | string | **Required** when using an image. The name of an image in a container registry ([DockerHub](https://hub.docker.com), [GitHub Container Registry](https://docs.github.com/packages/guides/about-github-container-registry), [Azure Container Registry](https://azure.microsoft.com/services/container-registry/)) that VS Code and other `devcontainer.json` supporting services / tools should use to create the dev container. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} - PRs to the [schema](https://github.com/microsoft/vscode/blob/main/extensions/configuration-editing/schemas/devContainer.schema.src.json), i.e code or shell scripts demonstrating approaches for implementation. diff --git a/_implementors/features-distribution.md b/_implementors/features-distribution.md index 134c9c1c..b01ac4c5 100644 --- a/_implementors/features-distribution.md +++ b/_implementors/features-distribution.md @@ -23,7 +23,7 @@ Goals include: Features source code is stored in a git repository. -For ease of authorship and maintenance, [1..n] features can share a single git repository. This set of Features is referred to as a "collection," and will share the same [`devcontainer-collection.json`](#devcontainer-collection.json) file and "namespace" (eg. `/`). +For ease of authorship and maintenance, [1..n] features can share a single git repository. This set of Features is referred to as a "collection," and will share the same [`devcontainer-collection.json`](#devcontainer-collection-json) file and "namespace" (eg. `/`). Source code for the set follows the example file structure below: @@ -81,7 +81,7 @@ The `devcontainer-collection.json` is an auto-generated metadata file. | :--- | :--- | :--- | | `sourceInformation` | object | Metadata from the implementing packaging tool. | | `features` | array | The list of features that are contained in this collection.| -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} Each Features's `devcontainer-feature.json` metadata file is appended into the `features` top-level array. diff --git a/_implementors/features.md b/_implementors/features.md index 9608b65b..8c4ce517 100644 --- a/_implementors/features.md +++ b/_implementors/features.md @@ -57,7 +57,7 @@ The properties of the file are as follows: | `legacyIds` | array | Array of old IDs used to publish this Feature. The property is useful for renaming a currently published Feature within a single namespace. | | `deprecated` | boolean | Indicates that the Feature is deprecated, and will not receive any further updates/support. This property is intended to be used by the supporting tools for highlighting Feature deprecation. | | `mounts` | object | Defaults to unset. Cross-orchestrator way to add additional mounts to a container. Each value is an object that accepts the same values as the [Docker CLI `--mount` flag](https://docs.docker.com/engine/reference/commandline/run/#mount). The Pre-defined [devcontainerId](/implementors/json_reference#variables-in-devcontainerjson) variable may be referenced in the value. For example:
`"mounts": [{ "source": "dind-var-lib-docker", "target": "/var/lib/docker", "type": "volume" }]` | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} (**) The ID must refer to either a Feature (1) published to an OCI registry, (2) a Feature Tgz URI, or (3) a Feature in the local file tree. Deprecated Feature identifiers (i.e GitHub Release) are not supported and the presence of this property may be considered a fatal error or ignored. For [local Features (ie: during development)](../features-distribution#addendum-locally-referenced), you may also depend on other local Features by providing a relative path to the Feature, relative to folder containing the active `devcontainer.json`. This behavior of Features within this property again mirror the `features` object in `devcontainer.json`. @@ -73,7 +73,7 @@ The following lifecycle hooks may be declared as properties of `devcontainer-fea | `postCreateCommand` | [string, array, object](/implementors/json_reference#formatting-string-vs-array-properties)| | `postStartCommand` | [string, array, object](/implementors/json_reference#formatting-string-vs-array-properties) | | `postAttachCommand` | [string, array, object](/implementors/json_reference#formatting-string-vs-array-properties) | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} #### Behavior @@ -144,7 +144,7 @@ The options property contains a map of option IDs and their related configuratio | `optionId.enum` | array | A strict list of allowed string values. Free-form values are **not** allowed. Omit when using `optionId.proposals`. | | `optionId.default` | string or boolean | Default value for the option. | | `optionId.description` | string | Description for the option. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} ### User environment variables @@ -264,7 +264,7 @@ The `id` format specified dicates how a supporting tool will locate and download | `//[:]` | Reference to feature in OCI registry(*) | `ghcr.io/user/repo/go`
`ghcr.io/user/repo/go:1`
`ghcr.io/user/repo/go:latest`| | `https://` | Direct HTTPS URI to a tarball. | `https://github.com/user/repo/releases/devcontainer-feature-go.tgz` | | `./`| A relative directory(**) to folder containing a devcontainer-feature.json. | `./myGoFeature` | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} (*) OCI registry must implement the [OCI Artifact Distribution Specification](https://github.com/opencontainers/distribution-spec). Some implementors can be [found here](https://oras.land/implementors/). diff --git a/_implementors/json_reference.md b/_implementors/json_reference.md index b0378ac1..05dcf95b 100644 --- a/_implementors/json_reference.md +++ b/_implementors/json_reference.md @@ -34,7 +34,7 @@ Metadata properties marked with a 🏷️️ can be stored in the `devcontainer. | `features` | object | An object of [Dev Container Feature IDs](../../features) and related options to be added into your primary container. The specific options that are available varies by feature, so see its documentation for additional details. For example:
`"features": { "ghcr.io/devcontainers/features/github-cli": {} }` | | `overrideFeatureInstallOrder` | array | By default, Features will attempt to automatically set the order they are installed based on a `installsAfter` property within each of them. This property allows you to override the Feature install order when needed. For example:
`"overrideFeatureInstallОrder": [ "ghcr.io/devcontainers/features/common-utils", "ghcr.io/devcontainers/features/github-cli" ]` | | `customizations` 🏷️| object | Product specific properties, defined in [supporting tools](../../supporting) | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} ## Scenario specific properties @@ -55,7 +55,7 @@ The focus of `devcontainer.json` is to describe how to enrich a container for th | `workspaceMount` | string | Requires `workspaceFolder` be set as well. Overrides the default local mount point for the workspace when the container is created. Supports the same values as the [Docker CLI `--mount` flag](https://docs.docker.com/engine/reference/commandline/run/#mount). Environment and [pre-defined variables](#variables-in-devcontainerjson) may be referenced in the value. For example:
`"workspaceMount": "source=${localWorkspaceFolder}/sub-folder,target=/workspace,type=bind,consistency=cached", "workspaceFolder": "/workspace"` | | `workspaceFolder` | string | Requires `workspaceMount` be set. Sets the default path that `devcontainer.json` supporting services / tools should open when connecting to the container. Defaults to the automatic source code mount location. | | `runArgs` | array | An array of [Docker CLI arguments](https://docs.docker.com/engine/reference/commandline/run/) that should be used when running the container. Defaults to `[]`. For example, this allows ptrace based debuggers like C++ to work in the container:
`"runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ]` . | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} ### Docker Compose specific properties @@ -65,7 +65,7 @@ The focus of `devcontainer.json` is to describe how to enrich a container for th | `service` | string | **Required** when using [Docker Compose](https://docs.docker.com/compose/). The name of the service `devcontainer.json` supporting services / tools should connect to once running. | | `runServices` | array | An array of services in your Docker Compose configuration that should be started by `devcontainer.json` supporting services / tools. These will also be stopped when you disconnect unless `"shutdownAction"` is `"none"`. Defaults to all services. | | `workspaceFolder` | string | Sets the default path that `devcontainer.json` supporting services / tools should open when connecting to the container (which is often the path to a volume mount where the source code can be found in the container). Defaults to `"/"`. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} ## Tool-specific properties @@ -84,7 +84,7 @@ When creating or working with a dev container, you may need different commands t | `postStartCommand` 🏷️ | string,
array,
object | A command to run each time the container is successfully started.

Note that the array syntax will execute the command without a shell. You can [learn more](#formatting-string-vs-array-properties) about formatting string vs array vs object properties. | | `postAttachCommand` 🏷️ | string,
array,
object | A command to run each time a tool has successfully attached to the container.

Note that the array syntax will execute the command without a shell. You can [learn more](#formatting-string-vs-array-properties) about formatting string vs array vs object properties. | | `waitFor` 🏷️ | enum | An enum that specifies the command any tool should wait for before connecting. Defaults to `updateContentCommand`. This allows you to use `onCreateCommand` or `updateContentCommand` for steps that must happen before `devcontainer.json` supporting tools connect while still using `postCreateCommand` for steps that can happen behind the scenes afterwards. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} For each command property, if the value is a single string, it will be run in `/bin/sh`. Use `&&` in a string to execute multiple commands. For example, `"yarn install"` or `"apt-get update && apt-get install -y curl"`. The array syntax `["yarn", "install"]` will invoke the command (in this case `yarn`) directly without using a shell. Each fires after your source code has been mounted, so you can also run shell scripts from your source tree. For example: `bash scripts/install-dev-tools.sh`. @@ -99,7 +99,8 @@ While `devcontainer.json` does not focus on hardware or VM provisioning, it can | `hostRequirements.cpus` 🏷️ | integer | Indicates the minimum required number of CPUs / virtual CPUs / cores. For example: `"hostRequirements": {"cpus": 2}` | | `hostRequirements.memory` 🏷️ | string | A string indicating minimum memory requirements with a `tb`, `gb`, `mb`, or `kb` suffix. For example, `"hostRequirements": {"memory": "4gb"}` | | `hostRequirements.storage` 🏷️ | string | A string indicating minimum storage requirements with a `tb`, `gb`, `mb`, or `kb` suffix. For example, `"hostRequirements": {"storage": "32gb"}` | - {: .table .table-bordered .table-responsive} +| `hostRequirements.gpu` 🏷️ | boolean,
string,
object | Indicates if any GPU is required. A boolean indicates if a GPU is required or not. The string `"optional"` indicates that a GPU is used when available, but is not required.

The object syntax specifies how much GPU resources are required. The `cores` property indicates the minimum number of cores and the `memory` property indicates minimum storage requirements with a `tb`, `gb`, `mb`, or `kb` suffix. For example, `"gpu": { "cores": 1000, "storage": "32gb" }` | + {: .table .table-bordered} ## Port attributes @@ -112,7 +113,7 @@ The `portsAttributes` and `otherPortsAttributes` properties allow you to map def | `onAutoForward` 🏷️ | enum | Controls what should happen when a port is auto-forwarded once you've connected to the container. `notify` is the default, and a notification will appear when the port is auto-forwarded. If set to `openBrowser`, the port will be opened in the system's default browser. A value of `openBrowserOnce` will open the browser only once. `openPreview` will open the URL in `devcontainer.json` supporting services' / tools' embedded preview browser. A value of `silent` will forward the port, but take no further action. A value of `ignore` means that this port should not be auto-forwarded at all. | | `requireLocalPort` 🏷️ | boolean | Dictates when port forwarding is required to map the port in the container to the same port locally or not. If set to `false`, the `devcontainer.json` supporting services / tools will attempt to use the specified port forward to `localhost`, and silently map to a different one if it is unavailable. If set to `true`, you will be notified if it is not possible to use the same port. Defaults to `false`. | | `elevateIfNeeded` 🏷️ | boolean | Forwarding low ports like 22, 80, or 443 to `localhost` on the same port from `devcontainer.json` supporting services / tools may require elevated permissions on certain operating systems. Setting this property to `true` will automatically try to elevate the `devcontainer.json` supporting tool's permissions in this situation. Defaults to `false`. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} ## Formatting string vs. array properties @@ -171,7 +172,7 @@ Variables can be referenced in certain string values in `devcontainer.json` in t | `${localWorkspaceFolderBasename}` | Any | Name of the local folder that was opened in the `devcontainer.json` supporting service / tool (that contains `.devcontainer/devcontainer.json`). | | `${containerWorkspaceFolderBasename}` | Any | Name of the folder where the workspace files can be found in the container. | | `${devcontainerId}` | Any | Allow Features to refer to an identifier that is unique to the dev container they are installed into and that is stable across rebuilds.
The properties supporting it in devcontainer.json are: `name`, `runArgs`, `initializeCommand`, `onCreateCommand`, `updateContentCommand`, `postCreateCommand`, `postStartCommand`, `postAttachCommand`, `workspaceFolder`, `workspaceMount`, `mounts`, `containerEnv`, `remoteEnv`, `containerUser`, `remoteUser`, and `customizations`. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} ## Schema diff --git a/_implementors/spec.md b/_implementors/spec.md index 304125b8..ecd0600b 100644 --- a/_implementors/spec.md +++ b/_implementors/spec.md @@ -91,7 +91,7 @@ To apply the metadata together with a user's `devcontainer.json` at runtime, the | `shutdownAction` | `string` (enum) | Last value wins. | ✓ | | | `updateRemoteUserUID` | `boolean` | Last value wins. | ✓ | | | `hostRequirements` | `cpus`, `memory`, `storage`, `gpu` | Max value wins. | ✓ | | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} Variables in string values will be substituted at the time the value is applied. When the order matters, the `devcontainer.json` is considered last. diff --git a/_implementors/templates-distribution.md b/_implementors/templates-distribution.md index 6e6f0f21..3e96eb5a 100644 --- a/_implementors/templates-distribution.md +++ b/_implementors/templates-distribution.md @@ -19,7 +19,7 @@ Goals include: A Template's source code is stored in a git repository. -For ease of authorship and maintenance, [1..n] Templates can share a single git repository. This set of Templates is referred to as a "collection," and will share the same [`devcontainer-collection.json`](#devcontainer-collection.json) file and "namespace" (eg. `/`). +For ease of authorship and maintenance, [1..n] Templates can share a single git repository. This set of Templates is referred to as a "collection," and will share the same [`devcontainer-collection.json`](#devcontainer-collection) file and "namespace" (eg. `/`). > **Note:** Templates and [Features](/implementors/features) should be placed in different git repositories. @@ -78,7 +78,7 @@ The `devcontainer-collection.json` is an auto-generated metadata file. | :--- | :--- | :--- | | `sourceInformation` | object | Metadata from the implementing packaging tool. | | `templates` | array | The list of Templates that are contained in this collection.| -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} Each Template's `devcontainer-template.json` metadata file is appended into the `templates` top-level array. diff --git a/_implementors/templates.md b/_implementors/templates.md index 9e12eff2..8a0a519e 100644 --- a/_implementors/templates.md +++ b/_implementors/templates.md @@ -37,11 +37,12 @@ The properties of the file are as follows: | `description` | string | Description of the Template. | | `documentationURL` | string | Url that points to the documentation of the Template. | | `licenseURL` | string | Url that points to the license of the Template. | -| `options` | object | A map of options that the supporting tools should use to populate different configuration options for the Template. | +| [`options`](#options) | object | A map of options that the supporting tools should use to populate different configuration options for the Template. | | `platforms` | array | Languages and platforms supported by the Template. | | `publisher` | string | Name of the publisher/maintainer of the Template. | | `keywords` | array | List of strings relevant to a user that would search for this Template. | -{: .table .table-bordered .table-responsive} +| [`optionalPaths`](#optionalPaths) | array | An array of files or directories that tooling may consider "optional" when applying a Template. Directories are indicated with a trailing `/*`, (eg: `.github/*`). +{: .table .table-bordered} ### The `options` property The `options` property contains a map of option IDs and their related configuration settings. These `options` are used by the supporting tools to prompt the user to choose from different Template configuration options. The tools would replace the option ID with the selected value in all the files (within the sub-directory of the Template). This replacement would happen before dropping the `.devcontainer.json` (or `.devcontainer/devcontainer.json`) and other files (within the sub-directory of the Template) required to containerize your project. See [option resolution](#option-resolution) for more details. For example: @@ -67,10 +68,34 @@ The `options` property contains a map of option IDs and their related configurat | `optionId.proposals` | array | A list of suggested string values. Free-form values **are** allowed. Omit when using `optionId.enum`. | | `optionId.enum` | array | A strict list of allowed string values. Free-form values are **not** allowed. Omit when using `optionId.proposals`. | | `optionId.default` | string | Default value for the option. | -{: .table .table-bordered .table-responsive} +{: .table .table-bordered} > `Note`: The `options` must be unique for every `devcontainer-template.json` +### The `optionalPaths` property + +Before applying a Template, tooling must inspect the `optionalPaths` property of a Template and prompt the user on whether each file or folder should be included in the resulting output workspace folder. A path is relative to the root of the Template source directory. + +- For a single file, provide the full relative path (without any leading or trailing path delimiters). +- For a directory, provide the full relative path with a trailing slash and asterisk (`/*`) appended to the path. The directory and its children will be recursively ignored. + +Examples are shown below: + +```jsonc +{ + "id": "cpp", + "version": "3.0.0", + "name": "C++", + "description": "Develop C++ applications", + "optionalPaths": [ + "GETTING-STARTED.md", // Single file + "example-project-1/MyProject.csproj", // Single file in nested directory + ".github/*" // Entire recursive contents of directory + ] +} +``` + + ### Referencing a Template The `id` format (`//