]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.8] bpo-40548: GitHub Action workflow: skip jobs on doc only PRs (GH-20100)
authorVictor Stinner <vstinner@python.org>
Fri, 15 May 2020 03:27:48 +0000 (05:27 +0200)
committerGitHub <noreply@github.com>
Fri, 15 May 2020 03:27:48 +0000 (05:27 +0200)
* bpo-40548: Always run GitHub action, even on doc PRs (GH-19981)

Always run GitHub action jobs, even on documentation-only pull
requests. So it will be possible to make a GitHub action job, like
the Windows (64-bit) job, mandatory.

(cherry picked from commit 4e363761fc02a89d53aba4382dc451293bd6f0ba)

* bpo-40548: GitHub Action workflow: skip jobs on doc only PRs (GH-19983)

Signed-off-by: Filipe Laíns <lains@archlinux.org>
(cherry picked from commit 75d7257b201a56f950c20cd9f5753a83fff4742b)

* bpo-40548: github actions: pass the changes check on no source changes (GH-20097)

Signed-off-by: Filipe Laíns <lains@archlinux.org>
(cherry picked from commit 6a78589b6b22878491a4b042bb8b3161e1d120f6)

Co-authored-by: Filipe Laíns <filipe.lains@gmail.com>
Co-authored-by: Filipe Laíns <lains@archlinux.org>
.github/workflows/build.yml

index d3d67475135a19ee514bc3b93847c7276915a283..27d7f15aa593173127375a91ee4ea384caeccc2a 100644 (file)
@@ -1,27 +1,37 @@
 name: Tests
 
+# bpo-40548: "paths-ignore" is not used to skip documentation-only PRs, because
+# it prevents to mark a job as mandatory. A PR cannot be merged if a job is
+# mandatory but not scheduled because of "paths-ignore".
 on:
-  #push:
-  #  branches:
-  #  - master
-  #  - 3.8
-  #  - 3.7
-  #  paths-ignore:
-  #  - 'Doc/**'
-  #  - 'Misc/**'
   pull_request:
     branches:
     - master
     - 3.8
     - 3.7
-    paths-ignore:
-    - 'Doc/**'
-    - 'Misc/**'
 
 jobs:
+  check_source:
+    name: 'Check for source changes'
+    runs-on: ubuntu-latest
+    outputs:
+      run_tests: ${{ steps.check.outputs.run_tests }}
+    steps:
+      - uses: actions/checkout@v2
+      - name: Check for source changes
+        id: check
+        run: |
+          if [ -z "GITHUB_BASE_REF" ]; then
+            echo '::set-output name=run_tests::true'
+          else
+            git fetch origin $GITHUB_BASE_REF --depth=1
+            git diff --name-only origin/$GITHUB_BASE_REF... | grep -qvE '(\.rst$|^Doc|^Misc)' && echo '::set-output name=run_tests::true' || true
+          fi
   build_win32:
     name: 'Windows (x86)'
     runs-on: windows-latest
+    needs: check_source
+    if: needs.check_source.outputs.run_tests == 'true'
     steps:
     - uses: actions/checkout@v1
     - name: Build CPython
@@ -34,6 +44,8 @@ jobs:
   build_win_amd64:
     name: 'Windows (x64)'
     runs-on: windows-latest
+    needs: check_source
+    if: needs.check_source.outputs.run_tests == 'true'
     steps:
     - uses: actions/checkout@v1
     - name: Build CPython
@@ -46,6 +58,8 @@ jobs:
   build_macos:
     name: 'macOS'
     runs-on: macos-latest
+    needs: check_source
+    if: needs.check_source.outputs.run_tests == 'true'
     steps:
     - uses: actions/checkout@v1
     - name: Configure CPython
@@ -60,6 +74,8 @@ jobs:
   build_ubuntu:
     name: 'Ubuntu'
     runs-on: ubuntu-latest
+    needs: check_source
+    if: needs.check_source.outputs.run_tests == 'true'
     env:
       OPENSSL_VER: 1.1.1f
     steps: