diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index cbcf171..52b4206 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -7,25 +7,45 @@ on: workflow_dispatch: jobs: + changes: + runs-on: ubuntu-latest + permissions: + pull-requests: read + outputs: + # Expose matched filters as job 'features' output variable + features: ${{ steps.filter.outputs.changes }} + steps: + - uses: actions/checkout@v4 + + - id: autogenerate-filter + run: | + echo "filter<> "$GITHUB_OUTPUT" + + find src -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | xargs -I %s -- echo '%s: + - src/%s/** + - test/%s/**' >> "$GITHUB_OUTPUT" + + echo "EOF" >> "$GITHUB_OUTPUT" + + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: ${{ steps.autogenerate-filter.outputs.filter }} + test-autogenerated: + needs: changes + if: needs.changes.outputs.features != '[]' # Empty array runs-on: ubuntu-latest continue-on-error: true strategy: matrix: - features: - - android-sdk - - burp-suite - - coder - - cutter - - ghidra - - lib-common - - lib-github + features: ${{ fromJSON(needs.changes.outputs.features) }} baseImage: - debian:latest - ubuntu:latest - mcr.microsoft.com/devcontainers/base:ubuntu steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Install latest devcontainer CLI" run: npm install -g @devcontainers/cli @@ -34,21 +54,15 @@ jobs: run: devcontainer features test --skip-scenarios -f ${{ matrix.features }} -i ${{ matrix.baseImage }} . test-scenarios: + needs: changes + if: needs.changes.outputs.features != '[]' # Empty array runs-on: ubuntu-latest continue-on-error: true strategy: matrix: - features: - - android-sdk - - burp-suite - - coder - - coder - - cutter - - ghidra - - lib-common - - lib-github + features: ${{ fromJSON(needs.changes.outputs.features) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Install latest devcontainer CLI" run: npm install -g @devcontainers/cli @@ -57,10 +71,12 @@ jobs: run: devcontainer features test -f ${{ matrix.features }} --skip-autogenerated --skip-duplicated . test-global: + needs: changes + if: needs.changes.outputs.features != '[]' # Empty array runs-on: ubuntu-latest continue-on-error: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: "Install latest devcontainer CLI" run: npm install -g @devcontainers/cli