name: "PR - Test Updated Features" on: pull_request: jobs: detect-changes: runs-on: ubuntu-latest outputs: features: ${{ steps.filter.outputs.changes }} steps: - uses: dorny/paths-filter@v2 id: filter with: filters: | anaconda: ./**/anaconda/** aws-cli: ./**/aws-cli/** azure-cli: ./**/azure-cli/** common-utils: ./**/common-utils/** conda: ./**/conda/** desktop-lite: ./**/desktop-lite/** docker-outside-of-docker: ./**/docker-outside-of-docker/** docker-in-docker: ./**/docker-in-docker/** dotnet: ./**/dotnet/** git: ./**/git/** git-lfs: ./**/git-lfs/** github-cli: ./**/github-cli/** go: ./**/go/** hugo: ./**/hugo/** java: ./**/java/** kubectl-helm-minikube: ./**/kubectl-helm-minikube/** node: ./**/node/** nvidia-cuda: ./**/nvidia-cuda/** oryx: ./**/oryx/** php: ./**/php/** powershell: ./**/powershell/** python: ./**/python/** ruby: ./**/ruby/** rust: ./**/rust/** sshd: ./**/sshd/** terraform: ./**/terraform/** nix: ./**/nix/** test: needs: [detect-changes] runs-on: ubuntu-latest continue-on-error: true strategy: matrix: features: ${{ fromJSON(needs.detect-changes.outputs.features) }} baseImage: [ "ubuntu:focal", "ubuntu:jammy", "debian:11", "debian:12", "mcr.microsoft.com/devcontainers/base:ubuntu", "mcr.microsoft.com/devcontainers/base:debian", ] steps: - uses: actions/checkout@v3 - name: "Install latest devcontainer CLI" run: npm install -g @devcontainers/cli - name: "Generating tests for '${{ matrix.features }}' against '${{ matrix.baseImage }}'" run: devcontainer features test --skip-scenarios -f ${{ matrix.features }} -i ${{ matrix.baseImage }} . test-scenarios: needs: [detect-changes] runs-on: ubuntu-latest continue-on-error: true strategy: matrix: features: ${{ fromJSON(needs.detect-changes.outputs.features) }} steps: - uses: actions/checkout@v3 - name: "Install latest devcontainer CLI" run: npm install -g @devcontainers/cli - name: "Testing '${{ matrix.features }}' scenarios" run: devcontainer features test -f ${{ matrix.features }} --skip-autogenerated .