From 290c3bed470f387e730f26b293435f9f5fdc8b81 Mon Sep 17 00:00:00 2001 From: Sviatoslav Sydorenko Date: Mon, 15 Jul 2024 01:03:45 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=A7=AA=F0=9F=92=85=20Integrate=20`bui?= =?UTF-8?q?ld=5Fmsi`=20into=20main=20CI=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, this workflow would run on related file changes and not contribute the the overall outcome of the CI run. This patch turns it into a reusable workflow, integrating it closer with the rest of the setup. It remains non-voting and skips or failures will not block the CI, just as before. --- .github/workflows/build.yml | 32 +++++++++++++++++ .github/workflows/build_msi.yml | 40 ---------------------- .github/workflows/reusable-windows-msi.yml | 24 +++++++++++++ 3 files changed, 56 insertions(+), 40 deletions(-) delete mode 100644 .github/workflows/build_msi.yml create mode 100644 .github/workflows/reusable-windows-msi.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc5b98f0220626..cf0744b274f908 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 docs changes + 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 index 65d32c734e7745..00000000000000 --- a/.github/workflows/build_msi.yml +++ /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 index 00000000000000..fc34ab7c3eb1f2 --- /dev/null +++ b/.github/workflows/reusable-windows-msi.yml @@ -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 }} From a6bbc82fe8215f5824b7dd51fd71cc1370e13ab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sviatoslav=20Sydorenko=20=28=D0=A1=D0=B2=D1=8F=D1=82=D0=BE?= =?UTF-8?q?=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A1=D0=B8=D0=B4=D0=BE=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE=29?= Date: Tue, 23 Jul 2024 22:18:14 +0200 Subject: [PATCH 2/3] Make the CI job name less fun Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cf0744b274f908..1b3b2ba7e917ab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -235,7 +235,7 @@ jobs: build_windows_msi: name: >- # ${{ '' } is a hack to nest jobs under the same sidebar category - 📦 Windows MSI${{ '' }} + Windows MSI${{ '' }} needs: check_source if: fromJSON(needs.check_source.outputs.run-win-msi) strategy: From a0a5372f981641dc1ab8c214b027cb5b3a74de2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sviatoslav=20Sydorenko=20=28=D0=A1=D0=B2=D1=8F=D1=82=D0=BE?= =?UTF-8?q?=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A1=D0=B8=D0=B4=D0=BE=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE=29?= Date: Wed, 24 Jul 2024 10:26:39 +0200 Subject: [PATCH 3/3] Fix the MSI change detection step title Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b3b2ba7e917ab..5c894abda71a87 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -132,7 +132,7 @@ jobs: Tools/msi/** .github/workflows/reusable-windows-msi.yml format: csv # works for paths with spaces - - name: Check for docs changes + - name: Check for changes in MSI installer-related files if: >- steps.changed-win-msi-files.outputs.added_modified_renamed != '' id: win-msi-changes