diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 045d3dd257b94b4779f84084892f223a86ff406b..96750cb6c8bb4084588d8cb96d492c69991a7ea5 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -499,8 +499,8 @@ jobs:
             /logs/**/*.log*
 
   export-data:
-    if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail
-    needs: [linting-done, portdb]
+    if: ${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true'}} # Allow previous steps to be skipped, but not fail
+    needs: [linting-done, portdb, changes]
     runs-on: ubuntu-latest
     env:
       TOP: ${{ github.workspace }}
@@ -535,7 +535,7 @@ jobs:
 
 
   portdb:
-    if: ${{ !failure() && !cancelled() && needs.changes.outputs.linting == 'true' }} # Allow previous steps to be skipped, but not fail
+    if: ${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true'}} # Allow previous steps to be skipped, but not fail
     needs:
       - linting-done
       - changes
@@ -702,6 +702,7 @@ jobs:
             trial-olddeps
             sytest
             portdb
+            export-data
             complement
             check-signoff
             lint-newsfile
diff --git a/changelog.d/16387.misc b/changelog.d/16387.misc
new file mode 100644
index 0000000000000000000000000000000000000000..eae0501d6b5d83ea442229f4e9fe55034bec8907
--- /dev/null
+++ b/changelog.d/16387.misc
@@ -0,0 +1 @@
+Avoid running CI steps when the files they check have not been changed.
\ No newline at end of file