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)