]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Integrate `build_msi` into main CI workflow (#121778)
authorSviatoslav Sydorenko (Святослав Сидоренко) <wk.cvs.github@sydorenko.org.ua>
Wed, 24 Jul 2024 09:46:39 +0000 (11:46 +0200)
committerGitHub <noreply@github.com>
Wed, 24 Jul 2024 09:46:39 +0000 (03:46 -0600)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
.github/workflows/build.yml
.github/workflows/build_msi.yml [deleted file]
.github/workflows/reusable-windows-msi.yml [new file with mode: 0644]

index fc5b98f02206264a1ae837f3ab55e582b42e6f21..5c894abda71a878fd403f531f3faa4e7b739d0ab 100644 (file)
@@ -48,6 +48,7 @@ jobs:
       #   }}
       #
       run-docs: ${{ steps.docs-changes.outputs.run-docs || false }}
+      run-win-msi: ${{ steps.win-msi-changes.outputs.run-win-msi || false }}
       run_tests: ${{ steps.check.outputs.run_tests || false }}
       run_hypothesis: ${{ steps.check.outputs.run_hypothesis || false }}
       run_cifuzz: ${{ steps.check.outputs.run_cifuzz || false }}
@@ -123,6 +124,20 @@ jobs:
         id: docs-changes
         run: |
           echo "run-docs=true" >> "${GITHUB_OUTPUT}"
+      - name: Get a list of the MSI installer-related files
+        id: changed-win-msi-files
+        uses: Ana06/get-changed-files@v2.3.0
+        with:
+          filter: |
+            Tools/msi/**
+            .github/workflows/reusable-windows-msi.yml
+          format: csv  # works for paths with spaces
+      - name: Check for changes in MSI installer-related files
+        if: >-
+          steps.changed-win-msi-files.outputs.added_modified_renamed != ''
+        id: win-msi-changes
+        run: |
+          echo "run-win-msi=true" >> "${GITHUB_OUTPUT}"
 
   check-docs:
     name: Docs
@@ -218,6 +233,21 @@ jobs:
       arch: ${{ matrix.arch }}
       free-threading: ${{ matrix.free-threading }}
 
+  build_windows_msi:
+    name: >-  # ${{ '' } is a hack to nest jobs under the same sidebar category
+      Windows MSI${{ '' }}
+    needs: check_source
+    if: fromJSON(needs.check_source.outputs.run-win-msi)
+    strategy:
+      matrix:
+        arch:
+        - x86
+        - x64
+        - arm64
+    uses: ./.github/workflows/reusable-windows-msi.yml
+    with:
+      arch: ${{ matrix.arch }}
+
   build_macos:
     name: 'macOS'
     needs: check_source
@@ -571,6 +601,7 @@ jobs:
     - build_ubuntu_ssltests
     - build_wasi
     - build_windows
+    - build_windows_msi
     - test_hypothesis
     - build_asan
     - build_tsan
@@ -585,6 +616,7 @@ jobs:
       with:
         allowed-failures: >-
           build_ubuntu_ssltests,
+          build_windows_msi,
           cifuzz,
           test_hypothesis,
         allowed-skips: >-
diff --git a/.github/workflows/build_msi.yml b/.github/workflows/build_msi.yml
deleted file mode 100644 (file)
index 65d32c7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-name: TestsMSI
-
-on:
-  workflow_dispatch:
-  push:
-    branches:
-    - 'main'
-    - '3.*'
-    paths:
-    - 'Tools/msi/**'
-    - '.github/workflows/build_msi.yml'
-  pull_request:
-    branches:
-    - 'main'
-    - '3.*'
-    paths:
-    - 'Tools/msi/**'
-    - '.github/workflows/build_msi.yml'
-
-permissions:
-  contents: read
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
-  cancel-in-progress: true
-
-jobs:
-  build:
-    name: Windows Installer
-    runs-on: windows-latest
-    timeout-minutes: 60
-    strategy:
-      matrix:
-        type: [x86, x64, arm64]
-    env:
-      IncludeFreethreaded: true
-    steps:
-    - uses: actions/checkout@v4
-    - name: Build CPython installer
-      run: .\Tools\msi\build.bat --doc -${{ matrix.type }}
diff --git a/.github/workflows/reusable-windows-msi.yml b/.github/workflows/reusable-windows-msi.yml
new file mode 100644 (file)
index 0000000..fc34ab7
--- /dev/null
@@ -0,0 +1,24 @@
+name: TestsMSI
+
+on:
+  workflow_call:
+    inputs:
+      arch:
+        description: CPU architecture
+        required: true
+        type: string
+
+permissions:
+  contents: read
+
+jobs:
+  build:
+    name: installer for ${{ inputs.arch }}
+    runs-on: windows-latest
+    timeout-minutes: 60
+    env:
+      IncludeFreethreaded: true
+    steps:
+    - uses: actions/checkout@v4
+    - name: Build CPython installer
+      run: .\Tools\msi\build.bat --doc -${{ inputs.arch }}