docs(dotfiles-sync): 📝 clarify staging vs copy security boundary #89
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "CI - Test Features" | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| strategy: | |
| matrix: | |
| include: | |
| # essential-dev - works on any base image | |
| - features: essential-dev | |
| baseImage: debian:latest | |
| - features: essential-dev | |
| baseImage: ubuntu:latest | |
| - features: essential-dev | |
| baseImage: mcr.microsoft.com/devcontainers/base:ubuntu | |
| # shell-history-per-project - works on any base image | |
| - features: shell-history-per-project | |
| baseImage: debian:latest | |
| - features: shell-history-per-project | |
| baseImage: ubuntu:latest | |
| - features: shell-history-per-project | |
| baseImage: mcr.microsoft.com/devcontainers/base:ubuntu | |
| # git-absorb - works on any base image | |
| - features: git-absorb | |
| baseImage: debian:latest | |
| - features: git-absorb | |
| baseImage: ubuntu:latest | |
| - features: git-absorb | |
| baseImage: mcr.microsoft.com/devcontainers/base:ubuntu | |
| # angular-dev - requires Node.js | |
| - features: angular-dev | |
| baseImage: mcr.microsoft.com/devcontainers/javascript-node:20 | |
| # package-auto-install - requires Node.js | |
| - features: package-auto-install | |
| baseImage: mcr.microsoft.com/devcontainers/javascript-node:20 | |
| # vite-plus - requires Node.js | |
| - features: vite-plus | |
| baseImage: mcr.microsoft.com/devcontainers/typescript-node:20 | |
| # typescript-dev - requires VS Code (extensions only, no install.sh logic) | |
| # Will automatically install essential-dev via installsAfter dependency | |
| - features: typescript-dev | |
| baseImage: mcr.microsoft.com/devcontainers/typescript-node:20 | |
| # auto-header - works on any base image with bash and python3 | |
| - features: auto-header | |
| baseImage: ubuntu:latest | |
| # peon-ping - works on any base image with curl and python3 | |
| - features: peon-ping | |
| baseImage: ubuntu:latest | |
| - features: peon-ping | |
| baseImage: mcr.microsoft.com/devcontainers/base:ubuntu | |
| # github-dev - requires common-utils (curl, ca-certificates) | |
| - features: github-dev | |
| baseImage: mcr.microsoft.com/devcontainers/base:debian | |
| - features: github-dev | |
| baseImage: mcr.microsoft.com/devcontainers/base:ubuntu | |
| # dotfiles-sync - works on any base image | |
| - features: dotfiles-sync | |
| baseImage: debian:latest | |
| - features: dotfiles-sync | |
| baseImage: mcr.microsoft.com/devcontainers/base:ubuntu | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Install latest devcontainer CLI | |
| run: npm install -g @devcontainers/cli | |
| - name: Create mount sources for dotfiles-sync | |
| if: matrix.features == 'dotfiles-sync' | |
| # All bind sources declared in src/dotfiles-sync/devcontainer-feature.json | |
| # must exist on the host or `docker run` aborts before the test runs. | |
| run: | | |
| mkdir -p ~/.ssh ~/.gnupg \ | |
| ~/.config/git ~/.config/gh ~/.config/pnpm ~/.config/pip \ | |
| ~/.cargo ~/.aws ~/.kube ~/.docker | |
| touch ~/.gitconfig ~/.gitignore_global ~/.npmrc ~/.yarnrc.yml \ | |
| ~/.config/pnpm/rc ~/.config/gh/config.yml ~/.config/gh/hosts.yml \ | |
| ~/.cargo/config.toml ~/.config/pip/pip.conf \ | |
| ~/.aws/config ~/.kube/config ~/.docker/config.json | |
| - name: Test feature '${{ matrix.features }}' against '${{ matrix.baseImage }}' | |
| run: devcontainer features test --features ${{ matrix.features }} --base-image | |
| ${{ matrix.baseImage }} . |