action icon indicating copy to clipboard operation
action copied to clipboard

desire to have a way to list relevant (changed) features

Open jcbhmr opened this issue 2 years ago • 2 comments

idk if this is the right spot to bring this up but hey 🤷‍♀️

I've recently found immense usefulness in being able to list which features changed and default to all of them if the changes cant be determined https://github.com/devcontainers-community/list-features (no its not very polished yet)

i notice that there seems to be an attempt to do this in the feature-starter repo:

   strategy:
      matrix:
        features: # 👈
          - color
          - hello
        baseImage:
          - debian:latest
          - ubuntu:latest
          - mcr.microsoft.com/devcontainers/base:ubuntu

I think it's very nice to be able to do this instead:

  list-features:
    outputs:
      relevant-features: ${{ steps.list-features.outputs.relevant-features }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - id: list-features
        uses: devcontainers-community/list-features@v2


    strategy:
      fail-fast: false
      matrix:
        include: ${{ fromJSON(needs.list-features.outputs.relevant-features) }}

# then do this
${{ matrix.id }} ${{ matrix.documentationURL }}

or this if you prefer to matrix your image too (disclaimer haven't tested this flow yet)

    strategy:
      fail-fast: false
      matrix:
        feature: ${{ fromJSON(needs.list-features.outputs.relevant-features) }}
        image:
          - debian:latest
          - ubuntu:latest
          - mcr.microsoft.com/devcontainers/base:ubuntu

# then do this
${{ matrix.feature.id }} ${{ matrix.image }} ${{ matrix.feature.documentationURL }}

used in a repo like this https://github.com/devcontainers-community/npm-features/blob/main/.github/workflows/test-features.yml

demo of it in action https://github.com/devcontainers-community/npm-features ex: image

id to see this thing into the official @devcontainers feaeture-starter or organization if that's possible. idk if this is completely breaking some kind of unspoken project ettiqute; i just want this thing to be "official" since it seems so cool.

jcbhmr avatar Aug 17 '23 21:08 jcbhmr

Hi 👋

I didn't realize that the features-starter repos's test.yaml executes tests for all Features (instead of running test for the modified Feature code)

The Feature's repo has been using dorny/paths-filter@v2 for finding the list of changed Features. See https://github.com/devcontainers/features/blob/main/.github/workflows/test-pr.yaml#L11. I agree, that it needs to add the filters field, which does adds some maintenance to it.

I think we avoided adding dorny/paths-filter@v2 to the Features-starter repo as it's a Template repo and folks would or would not be comfortable with using dorny/paths-filter@v2. (// cc @joshspicer feel free to correct my understanding)

@jcbhmr Looks like you are trying to suggest that we use https://github.com/devcontainers-community/list-features in the features-starter repo? Let me know if my understanding is correct.

samruddhikhandale avatar Aug 17 '23 23:08 samruddhikhandale

@jcbhmr Looks like you are trying to suggest that we use devcontainers-community/list-features in the features-starter repo? Let me know if my understanding is correct.

yeah that's pretty much it! 👍

jcbhmr avatar Aug 18 '23 00:08 jcbhmr