From c25889f71dc23070c5225118b8622547153d19dc Mon Sep 17 00:00:00 2001 From: Arthur Silva Sens Date: Mon, 16 Dec 2024 17:00:29 -0300 Subject: [PATCH] Trigger windows e2e tests when windows-related files change (#36857) #### Description We've noticed that many of the CI failures on main come from Windows e2e tests. We want to be more proactive in catching those failures, so this PR changes the workflow triggering Windows e2e tests to ensure they run on Pull Requests that change Windows-related files, even if the label `Run Windows` is absent. It does so by looking at changed files. If the word `windows` is present in the file name, it triggers the workflow. #### Link to tracking issue Related to https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/36788 --------- Signed-off-by: Arthur Silva Sens --- .github/workflows/e2e-tests-windows.yml | 15 +++++++- .../scripts/is_changed_file_windows.sh | 34 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100755 .github/workflows/scripts/is_changed_file_windows.sh diff --git a/.github/workflows/e2e-tests-windows.yml b/.github/workflows/e2e-tests-windows.yml index 0745599b555f..bcfb4f38d865 100644 --- a/.github/workflows/e2e-tests-windows.yml +++ b/.github/workflows/e2e-tests-windows.yml @@ -19,9 +19,22 @@ env: SEGMENT_DOWNLOAD_TIMEOUT_MINS: 2 jobs: + windows-file-changed: + runs-on: ubuntu-latest + if: ${{ github.event_name == 'pull_request' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Did windows files changed + run: echo "changed=$(./.github/workflows/scripts/is_changed_file_windows.sh )" >> "$GITHUB_OUTPUT" + - run: echo $(./.github/workflows/scripts/is_changed_file_windows.sh ${{ github.event.pull_request.base.sha }} ${{ github.sha }} ) + collector-build: runs-on: windows-latest - if: ${{ github.actor != 'dependabot[bot]' && (contains(github.event.pull_request.labels.*.name, 'Run Windows') || github.event_name == 'push' || github.event_name == 'merge_group') }} + needs: [windows-file-changed] + if: ${{ github.actor != 'dependabot[bot]' && ((contains(github.event.pull_request.labels.*.name, 'Run Windows') || github.event_name == 'push' || github.event_name == 'merge_group') || needs.windows-file-changed.outputs.changed == 'true') }} steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/scripts/is_changed_file_windows.sh b/.github/workflows/scripts/is_changed_file_windows.sh new file mode 100755 index 000000000000..e1f7276e79ad --- /dev/null +++ b/.github/workflows/scripts/is_changed_file_windows.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +# +# verifies if any changed file is related to windows architecture. +# this script is used to determine if e2e tests should be run on windows. +# +# It's intended to be used in a GitHub Actions workflow: +# bash .github/workflows/scripts/is_changed_file_windows.sh ${{ github.event.pull_request.base.sha }} ${{ github.sha }} + + +# Get changed files +base_sha=$1 +head_sha=$2 +changed_files=$(git diff --name-only $base_sha $head_sha) + +# Find windows related files +windows_files=$(find * -regex ".*windows.*.go") + + +# Loop over changed files and check if they exist in windows_files +found_windows_file=false +for file in $changed_files; do + for windows_file in $windows_files; do + if [[ $file == "$windows_file" ]]; then + found_windows_file=true + break + fi + done +done + +echo "$found_windows_file" \ No newline at end of file