Manchmal möchte man in GitHub Actions nur etwas tun, wenn bestimmte Dateien verändert wurden. Also muss man erst herausfinden, welche Dateien verändert wurden. Dafür gibt es die Action tj-actions/verify-changed-files.

Um die veränderten Dateien zu finden, wird erst das Repo ausgecheckt:

- name: Checkout of repo
  uses: actions/checkout@v4
  with:
    fetch-depth: 0
Code-Sprache: YAML (yaml)

Anschließend ruft man die Action auf:

- name: Get changed files
  id: changed-files
  uses: tj-actions/changed-files@v44
Code-Sprache: YAML (yaml)

Die Actions erstellt eine Output-Variable all_changed_files in der alle veränderten Dateien gelistet sind. Diese könnte man nun z.B. ausgeben:

- name: List the changed files
  env:
    ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
  run: |
    for file in ${ALL_CHANGED_FILES}; do
      echo "$file was changed."
    done
Code-Sprache: YAML (yaml)

Die vollständige Workflow Datei sieht in diesem Beispiel dann so aus:

name: Get list of changed files

on:
  push:

jobs:
  changed_files:
    runs-on: ubuntu-latest
    name: List changes files

    steps:
      # Checkout with full history
      - name: Checkout of repo
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      
      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v44

      - name: List the changed files
        env:
          ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
        run: |
          for file in ${ALL_CHANGED_FILES}; do
            echo "$file was changed."
          done

Code-Sprache: YAML (yaml)