From 587a09d7f8ffb0614cbb8d845c595deb44a9cc99 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 10:51:11 +0100 Subject: [PATCH 01/27] first pass --- .github/workflows/swift_test_matrix.yml | 65 +++++++++++++++------ scripts/generate_matrix.sh | 75 +++++++++++++++++++++---- 2 files changed, 113 insertions(+), 27 deletions(-) diff --git a/.github/workflows/swift_test_matrix.yml b/.github/workflows/swift_test_matrix.yml index 4d0a12bff9..d1f16f69d0 100644 --- a/.github/workflows/swift_test_matrix.yml +++ b/.github/workflows/swift_test_matrix.yml @@ -41,15 +41,30 @@ jobs: setup_command_expression="" fi workspace="/$(basename ${{ github.workspace }})" - docker run -v ${{ github.workspace }}:"$workspace" \ - -w "$workspace" \ - -e CI="$CI" \ - -e GITHUB_ACTIONS="$GITHUB_ACTIONS" \ - -e SWIFT_VERSION="${{ matrix.config.swift_version }}" \ - -e setup_command_expression="$setup_command_expression" \ - -e workspace="$workspace" \ - ${{ matrix.config.image }} \ - bash -c "$setup_command_expression ${{ matrix.config.command }} ${{ matrix.config.command_arguments }}" + + docker_args=( + "run" + "-v" "${{ github.workspace }}:$workspace" + "-w" "$workspace" + "-e" "CI=$CI" + "-e" "GITHUB_ACTIONS=$GITHUB_ACTIONS" + "-e" "SWIFT_VERSION=${{ matrix.config.swift_version }}" + "-e" "setup_command_expression=$setup_command_expression" + "-e" "workspace=$workspace" + ) + + if [[ '${{ toJson(matrix.config.env) }}' != '{}' ]]; then + while IFS="=" read -r key value; do + if [[ -n "$key" && -n "$value" ]]; then + docker_args+=("-e" "$key=$value") + fi + done < <(echo '${{ toJson(matrix.config.env) }}' | jq -r 'to_entries[] | "\(.key)=\(.value)"') + fi + + docker_args+=("${{ matrix.config.image }}") + docker_args+=("bash" "-c" "$setup_command_expression ${{ matrix.config.command }} ${{ matrix.config.command_arguments }}") + + docker "${docker_args[@]}" - name: Run matrix job (Windows) if: ${{ matrix.config.platform == 'Windows' }} run: | @@ -59,13 +74,29 @@ jobs: $setup_command_expression = "" } $workspace = "C:\" + (Split-Path ${{ github.workspace }} -Leaf) - docker run -v ${{ github.workspace }}:$($workspace) ` - -w $($workspace) ` - -e CI=%CI% ` - -e GITHUB_ACTIONS=%GITHUB_ACTIONS% ` - -e SWIFT_VERSION="${{ matrix.config.swift_version }}" ` - -e setup_command_expression=%setup_command_expression% ` - ${{ matrix.config.image }} ` - cmd /s /c "swift --version & $($setup_command_expression) ${{ matrix.config.command }} ${{ matrix.config.command_arguments }}" + + $docker_args = @( + "run", "-v", "${{ github.workspace }}:$($workspace)", + "-w", $workspace, + "-e", "CI=%CI%", + "-e", "GITHUB_ACTIONS=%GITHUB_ACTIONS%", + "-e", "SWIFT_VERSION=${{ matrix.config.swift_version }}", + "-e", "setup_command_expression=%setup_command_expression%" + ) + + $env_args = @() + $env_json = '${{ toJson(matrix.config.env) }}' + if ($env_json -ne '{}') { + $env_obj = $env_json | ConvertFrom-Json + $env_obj.PSObject.Properties | ForEach-Object { + $env_args += "-e" + $env_args += "$($_.Name)=$($_.Value)" + } + } + $docker_args += $env_args + + $docker_args += @("${{ matrix.config.image }}", "cmd", "/s", "/c", "swift --version & $($setup_command_expression) ${{ matrix.config.command }} ${{ matrix.config.command_arguments }}") + + & docker @docker_args env: SWIFT_VERSION: ${{ matrix.config.swift_version }} diff --git a/scripts/generate_matrix.sh b/scripts/generate_matrix.sh index 2ef13b5fe4..abb5f84a06 100755 --- a/scripts/generate_matrix.sh +++ b/scripts/generate_matrix.sh @@ -16,6 +16,9 @@ # Parameters linux_command="$MATRIX_LINUX_COMMAND" # required if any Linux pipeline is enabled linux_setup_command="$MATRIX_LINUX_SETUP_COMMAND" +linux_env_vars="$MATRIX_LINUX_ENV_VARS" +linux_env_var_pair_separator="${MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR:="="}" +linux_env_var_list_separator="${MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR:=","}" linux_5_9_enabled="${MATRIX_LINUX_5_9_ENABLED:=false}" linux_5_9_command_arguments="$MATRIX_LINUX_5_9_COMMAND_ARGUMENTS" linux_5_10_enabled="${MATRIX_LINUX_5_10_ENABLED:=true}" @@ -33,6 +36,9 @@ linux_nightly_main_command_arguments="$MATRIX_LINUX_NIGHTLY_MAIN_COMMAND_ARGUMEN windows_command="$MATRIX_WINDOWS_COMMAND" # required if any Windows pipeline is enabled windows_setup_command="$MATRIX_WINDOWS_SETUP_COMMAND" +windows_env_vars="$MATRIX_WINDOWS_ENV_VARS" +windows_env_var_pair_separator="${MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR:="="}" +windows_env_var_list_separator="${MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR:=","}" windows_6_0_enabled="${MATRIX_WINDOWS_6_0_ENABLED:=false}" windows_6_1_enabled="${MATRIX_WINDOWS_6_1_ENABLED:=false}" windows_6_2_enabled="${MATRIX_WINDOWS_6_2_ENABLED:=false}" @@ -44,6 +50,10 @@ windows_nightly_next_command_arguments="${MATRIX_WINDOWS_NIGHTLY_NEXT_COMMAND_AR windows_nightly_main_enabled="${MATRIX_WINDOWS_NIGHTLY_MAIN_ENABLED:=false}" windows_nightly_main_command_arguments="$MATRIX_WINDOWS_NIGHTLY_MAIN_COMMAND_ARGUMENTS" +# Specifying custom environment variables example: +# MATRIX_WINDOWS_ENV_VARS="BUILD:Release;ARCH:x64" MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR=":" MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR=";" ./generate_matrix.sh + + # Defaults linux_runner="ubuntu-latest" linux_5_9_container_image="swift:5.9-jammy" @@ -65,6 +75,40 @@ windows_nightly_next_container_image="swiftlang/swift:nightly-6.2-windowsserverc windows_nightly_main_runner="windows-2022" windows_nightly_main_container_image="swiftlang/swift:nightly-main-windowsservercore-ltsc2022" +# Function to parse environment variables and convert to JSON object +parse_env_vars() { + local env_vars="$1" + local pair_separator="$2" + local list_separator="$3" + + if [[ -z "$env_vars" ]]; then + echo "{}" + return + fi + + local json_obj="{}" + + # Split the env_vars string by list_separator + IFS="$list_separator" read -ra env_pairs <<< "$env_vars" + + for pair in "${env_pairs[@]}"; do + # Split each pair by pair_separator + IFS="$pair_separator" read -ra kv <<< "$pair" + if [[ ${#kv[@]} -eq 2 ]]; then + local key="${kv[0]}" + local value="${kv[1]}" + # Add to JSON object using jq + json_obj=$(echo "$json_obj" | jq -c --arg key "$key" --arg value "$value" '. + {($key): $value}') + fi + done + + echo "$json_obj" +} + +# Parse environment variables for Linux and Windows +linux_env_vars_json=$(parse_env_vars "$linux_env_vars" "$linux_env_var_pair_separator" "$linux_env_var_list_separator") +windows_env_vars_json=$(parse_env_vars "$windows_env_vars" "$windows_env_var_pair_separator" "$windows_env_var_list_separator") + # Create matrix from inputs matrix='{"config": []}' @@ -91,7 +135,8 @@ if [[ "$linux_5_9_enabled" == "true" ]]; then --arg command_arguments "$linux_5_9_command_arguments" \ --arg container_image "$linux_5_9_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "5.9", "image": $container_image, "swift_version": "5.9", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "5.9", "image": $container_image, "swift_version": "5.9", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi if [[ "$linux_5_10_enabled" == "true" ]]; then @@ -101,7 +146,8 @@ if [[ "$linux_5_10_enabled" == "true" ]]; then --arg command_arguments "$linux_5_10_command_arguments" \ --arg container_image "$linux_5_10_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "5.10", "image": $container_image, "swift_version": "5.10", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "5.10", "image": $container_image, "swift_version": "5.10", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi if [[ "$linux_6_0_enabled" == "true" ]]; then @@ -111,7 +157,8 @@ if [[ "$linux_6_0_enabled" == "true" ]]; then --arg command_arguments "$linux_6_0_command_arguments" \ --arg container_image "$linux_6_0_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "6.0", "image": $container_image, "swift_version": "6.0", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "6.0", "image": $container_image, "swift_version": "6.0", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi if [[ "$linux_6_1_enabled" == "true" ]]; then @@ -121,7 +168,8 @@ if [[ "$linux_6_1_enabled" == "true" ]]; then --arg command_arguments "$linux_6_1_command_arguments" \ --arg container_image "$linux_6_1_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "6.1", "image": $container_image, "swift_version": "6.1", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "6.1", "image": $container_image, "swift_version": "6.1", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi if [[ "$linux_6_2_enabled" == "true" ]]; then @@ -141,7 +189,8 @@ if [[ "$linux_nightly_next_enabled" == "true" ]]; then --arg command_arguments "$linux_nightly_next_command_arguments" \ --arg container_image "$linux_nightly_next_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "nightly-next", "image": $container_image, "swift_version": "nightly-next", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "nightly-next", "image": $container_image, "swift_version": "nightly-next", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi if [[ "$linux_nightly_main_enabled" == "true" ]]; then @@ -151,12 +200,14 @@ if [[ "$linux_nightly_main_enabled" == "true" ]]; then --arg command_arguments "$linux_nightly_main_command_arguments" \ --arg container_image "$linux_nightly_main_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "nightly-main", "image": $container_image, "swift_version": "nightly-main", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "nightly-main", "image": $container_image, "swift_version": "nightly-main", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi ## Windows if [[ \ "$windows_6_0_enabled" == "true" || \ + "$windows_6_1_enabled" == "true" || \ "$windows_nightly_next_enabled" == "true" || \ "$windows_nightly_main_enabled" == "true" \ ]]; then @@ -172,7 +223,8 @@ if [[ "$windows_6_0_enabled" == "true" ]]; then --arg command_arguments "$windows_6_0_command_arguments" \ --arg container_image "$windows_6_0_container_image" \ --arg runner "$windows_6_0_runner" \ - '.config[.config| length] |= . + { "name": "6.0", "image": $container_image, "swift_version": "6.0", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner }') + --argjson env_vars "$windows_env_vars_json" \ + '.config[.config| length] |= . + { "name": "6.0", "image": $container_image, "swift_version": "6.0", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars }') fi if [[ "$windows_6_1_enabled" == "true" ]]; then @@ -182,7 +234,8 @@ if [[ "$windows_6_1_enabled" == "true" ]]; then --arg command_arguments "$windows_6_1_command_arguments" \ --arg container_image "$windows_6_1_container_image" \ --arg runner "$windows_6_1_runner" \ - '.config[.config| length] |= . + { "name": "6.1", "image": $container_image, "swift_version": "6.1", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner }') + --argjson env_vars "$windows_env_vars_json" \ + '.config[.config| length] |= . + { "name": "6.1", "image": $container_image, "swift_version": "6.1", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars }') fi if [[ "$windows_6_2_enabled" == "true" ]]; then @@ -202,7 +255,8 @@ if [[ "$windows_nightly_next_enabled" == "true" ]]; then --arg command_arguments "$windows_nightly_next_command_arguments" \ --arg container_image "$windows_nightly_next_container_image" \ --arg runner "$windows_nightly_next_runner" \ - '.config[.config| length] |= . + { "name": "nightly-next", "image": $container_image, "swift_version": "nightly-next", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner }') + --argjson env_vars "$windows_env_vars_json" \ + '.config[.config| length] |= . + { "name": "nightly-next", "image": $container_image, "swift_version": "nightly-next", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars }') fi if [[ "$windows_nightly_main_enabled" == "true" ]]; then @@ -212,7 +266,8 @@ if [[ "$windows_nightly_main_enabled" == "true" ]]; then --arg command_arguments "$windows_nightly_main_command_arguments" \ --arg container_image "$windows_nightly_main_container_image" \ --arg runner "$windows_nightly_main_runner" \ - '.config[.config| length] |= . + { "name": "nightly-main", "image": $container_image, "swift_version": "nightly-main", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner }') + --argjson env_vars "$windows_env_vars_json" \ + '.config[.config| length] |= . + { "name": "nightly-main", "image": $container_image, "swift_version": "nightly-main", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars }') fi echo "$matrix" | jq -c From 12f15fd19d7128ea5b1cc0239685056def4fd6df Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 10:59:50 +0100 Subject: [PATCH 02/27] log docker command --- .github/workflows/swift_test_matrix.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/swift_test_matrix.yml b/.github/workflows/swift_test_matrix.yml index d1f16f69d0..066939ab3e 100644 --- a/.github/workflows/swift_test_matrix.yml +++ b/.github/workflows/swift_test_matrix.yml @@ -64,6 +64,7 @@ jobs: docker_args+=("${{ matrix.config.image }}") docker_args+=("bash" "-c" "$setup_command_expression ${{ matrix.config.command }} ${{ matrix.config.command_arguments }}") + echo "Executing Docker command: docker ${docker_args[*]}" docker "${docker_args[@]}" - name: Run matrix job (Windows) if: ${{ matrix.config.platform == 'Windows' }} @@ -97,6 +98,7 @@ jobs: $docker_args += @("${{ matrix.config.image }}", "cmd", "/s", "/c", "swift --version & $($setup_command_expression) ${{ matrix.config.command }} ${{ matrix.config.command_arguments }}") + Write-Host "Executing Docker command: docker $($docker_args -join ' ')" & docker @docker_args env: SWIFT_VERSION: ${{ matrix.config.swift_version }} From 18cdfc0f4701dda8a268f3345a9cfcd2589715e0 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 11:14:27 +0100 Subject: [PATCH 03/27] don't expose setup command as env var --- .github/workflows/swift_test_matrix.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/swift_test_matrix.yml b/.github/workflows/swift_test_matrix.yml index 066939ab3e..e0f49e752b 100644 --- a/.github/workflows/swift_test_matrix.yml +++ b/.github/workflows/swift_test_matrix.yml @@ -49,7 +49,6 @@ jobs: "-e" "CI=$CI" "-e" "GITHUB_ACTIONS=$GITHUB_ACTIONS" "-e" "SWIFT_VERSION=${{ matrix.config.swift_version }}" - "-e" "setup_command_expression=$setup_command_expression" "-e" "workspace=$workspace" ) @@ -81,8 +80,7 @@ jobs: "-w", $workspace, "-e", "CI=%CI%", "-e", "GITHUB_ACTIONS=%GITHUB_ACTIONS%", - "-e", "SWIFT_VERSION=${{ matrix.config.swift_version }}", - "-e", "setup_command_expression=%setup_command_expression%" + "-e", "SWIFT_VERSION=${{ matrix.config.swift_version }}" ) $env_args = @() From 10501ca69035e4230f8ba70b47395ce7f5c53da9 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 11:15:15 +0100 Subject: [PATCH 04/27] test env vars --- .github/workflows/unit_tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index a94073307e..a3a080c31a 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -149,6 +149,7 @@ jobs: env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" + MATRIX_LINUX_ENV_VARS: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_9_COMMAND_ARGUMENTS: ${{ inputs.linux_5_9_arguments_override }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -164,6 +165,7 @@ jobs: MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_COMMAND_ARGUMENTS: ${{ inputs.linux_nightly_main_arguments_override }} MATRIX_WINDOWS_COMMAND: "swift test" + MATRIX_WINDOWS_ENV_VARS: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing MATRIX_WINDOWS_6_0_ENABLED: ${{ inputs.windows_6_0_enabled }} MATRIX_WINDOWS_6_0_COMMAND_ARGUMENTS: ${{ inputs.windows_6_0_arguments_override }} MATRIX_WINDOWS_6_1_ENABLED: ${{ inputs.windows_6_1_enabled }} From 11959c3b103543f50fcaea88815f03c48301c477 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 11:58:03 +0100 Subject: [PATCH 05/27] wire up env var parameters --- .github/workflows/benchmarks.yml | 31 +++++++++++++++++++++++++++++++ .github/workflows/static_sdk.yml | 6 ++++-- .github/workflows/unit_tests.yml | 31 +++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 19bc0391a0..0a0d5ae633 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -68,6 +68,31 @@ on: description: "Boolean to enable the Windows nightly main Swift version matrix job. Currently has no effect!" # TODO: implement Windows benchmarking default: false + linux_env_vars: + type: string + description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + linux_env_var_pair_separator: + type: string + description: "Separator between key and value for Linux environment variables." + default: "=" + linux_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Linux." + default: "," + windows_env_vars: + type: string + description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + windows_env_var_pair_separator: + type: string + description: "Separator between key and value for Windows environment variables." + default: "=" + windows_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Windows." + default: "," + jobs: construct-matrix: name: Construct Benchmarks matrix @@ -84,6 +109,9 @@ jobs: env: MATRIX_LINUX_COMMAND: "curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check_benchmark_thresholds.sh | BENCHMARK_PACKAGE_PATH=${{ inputs.benchmark_package_path }} bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl libjemalloc-dev && git config --global --add safe.directory /$(basename ${{ github.workspace }})" + MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} + MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} + MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} MATRIX_LINUX_6_0_ENABLED: ${{ inputs.linux_6_0_enabled }} @@ -91,6 +119,9 @@ jobs: MATRIX_LINUX_6_2_ENABLED: ${{ inputs.linux_6_2_enabled }} MATRIX_LINUX_NIGHTLY_NEXT_ENABLED: ${{ inputs.linux_nightly_6_1_enabled && inputs.linux_nightly_next_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} + MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} + MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} + MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} benchmarks: name: Benchmarks diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index b00477abe9..6c76b97c0d 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -21,7 +21,8 @@ jobs: "image":"ubuntu:jammy", "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", "command":"swift build", - "command_arguments":"--swift-sdk x86_64-swift-linux-musl" + "command_arguments":"--swift-sdk x86_64-swift-linux-musl", + "env":{} }, { "name":"main Jammy", @@ -31,7 +32,8 @@ jobs: "image":"ubuntu:jammy", "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", "command":"swift build", - "command_arguments":"--swift-sdk x86_64-swift-linux-musl" + "command_arguments":"--swift-sdk x86_64-swift-linux-musl", + "env":{} } ] } diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index a3a080c31a..4ef6723900 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -133,6 +133,31 @@ on: description: "The arguments passed to swift test in the Windows nightly main Swift version matrix job." default: "" + linux_env_vars: + type: string + description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + linux_env_var_pair_separator: + type: string + description: "Separator between key and value for Linux environment variables." + default: "=" + linux_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Linux." + default: "," + windows_env_vars: + type: string + description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + windows_env_var_pair_separator: + type: string + description: "Separator between key and value for Windows environment variables." + default: "=" + windows_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Windows." + default: "," + jobs: construct-matrix: name: Construct unit test matrix @@ -150,6 +175,9 @@ jobs: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" MATRIX_LINUX_ENV_VARS: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing + # MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} + MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} + MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_9_COMMAND_ARGUMENTS: ${{ inputs.linux_5_9_arguments_override }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -166,6 +194,9 @@ jobs: MATRIX_LINUX_NIGHTLY_MAIN_COMMAND_ARGUMENTS: ${{ inputs.linux_nightly_main_arguments_override }} MATRIX_WINDOWS_COMMAND: "swift test" MATRIX_WINDOWS_ENV_VARS: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing + # MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} + MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} + MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} MATRIX_WINDOWS_6_0_ENABLED: ${{ inputs.windows_6_0_enabled }} MATRIX_WINDOWS_6_0_COMMAND_ARGUMENTS: ${{ inputs.windows_6_0_arguments_override }} MATRIX_WINDOWS_6_1_ENABLED: ${{ inputs.windows_6_1_enabled }} From df8e205e634a156b6965ffeb1d820f2413ca8d38 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 11:58:24 +0100 Subject: [PATCH 06/27] change windows env var substitution syntax --- .github/workflows/swift_test_matrix.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift_test_matrix.yml b/.github/workflows/swift_test_matrix.yml index e0f49e752b..69f623e49a 100644 --- a/.github/workflows/swift_test_matrix.yml +++ b/.github/workflows/swift_test_matrix.yml @@ -78,8 +78,8 @@ jobs: $docker_args = @( "run", "-v", "${{ github.workspace }}:$($workspace)", "-w", $workspace, - "-e", "CI=%CI%", - "-e", "GITHUB_ACTIONS=%GITHUB_ACTIONS%", + "-e", "CI=$env:CI", + "-e", "GITHUB_ACTIONS=$env:GITHUB_ACTIONS", "-e", "SWIFT_VERSION=${{ matrix.config.swift_version }}" ) From e50bc6bbc47c2242a14b1dc281d4f93f2dbf9a8e Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 14:06:33 +0100 Subject: [PATCH 07/27] merge in 6.2 changes --- scripts/generate_matrix.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/generate_matrix.sh b/scripts/generate_matrix.sh index abb5f84a06..0472f26e0d 100755 --- a/scripts/generate_matrix.sh +++ b/scripts/generate_matrix.sh @@ -179,7 +179,8 @@ if [[ "$linux_6_2_enabled" == "true" ]]; then --arg command_arguments "$linux_6_2_command_arguments" \ --arg container_image "$linux_6_2_container_image" \ --arg runner "$linux_runner" \ - '.config[.config| length] |= . + { "name": "6.2", "image": $container_image, "swift_version": "6.2", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner}') + --argjson env_vars "$linux_env_vars_json" \ + '.config[.config| length] |= . + { "name": "6.2", "image": $container_image, "swift_version": "6.2", "platform": "Linux", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars}') fi if [[ "$linux_nightly_next_enabled" == "true" ]]; then @@ -245,7 +246,8 @@ if [[ "$windows_6_2_enabled" == "true" ]]; then --arg command_arguments "$windows_6_2_command_arguments" \ --arg container_image "$windows_6_2_container_image" \ --arg runner "$windows_6_2_runner" \ - '.config[.config| length] |= . + { "name": "6.2", "image": $container_image, "swift_version": "6.2", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner }') + --argjson env_vars "$windows_env_vars_json" \ + '.config[.config| length] |= . + { "name": "6.2", "image": $container_image, "swift_version": "6.2", "platform": "Windows", "command": $command, "command_arguments": $command_arguments, "setup_command": $setup_command, "runner": $runner, "env": $env_vars }') fi if [[ "$windows_nightly_next_enabled" == "true" ]]; then From b348db692d2b529f7f48bd4f95bfc1e4993eb978 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 10:52:53 +0100 Subject: [PATCH 08/27] test shim --- .github/workflows/benchmarks.yml | 2 +- .github/workflows/cxx_interop.yml | 2 +- .github/workflows/main.yml | 16 ++++++++-------- .github/workflows/pull_request.yml | 16 ++++++++-------- .github/workflows/release_builds.yml | 2 +- .github/workflows/static_sdk.yml | 2 +- .github/workflows/swift_load_test_matrix.yml | 2 +- .github/workflows/unit_tests.yml | 4 ++-- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 0a0d5ae633..4f9efb92ad 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -127,7 +127,7 @@ jobs: name: Benchmarks needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Benchmarks" matrix_string: '${{ needs.construct-matrix.outputs.benchmarks-matrix }}' diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml index 480df6c958..1076a43408 100644 --- a/.github/workflows/cxx_interop.yml +++ b/.github/workflows/cxx_interop.yml @@ -89,7 +89,7 @@ jobs: name: Cxx interop needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Cxx interop" matrix_string: '${{ needs.construct-matrix.outputs.cxx-interop-matrix }}' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5178bcce81..5c9ad3702c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@main + uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars with: linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -22,12 +22,12 @@ jobs: cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@main + uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars with: benchmark_package_path: "Benchmarks" @@ -51,7 +51,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -59,17 +59,17 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@main + uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@main + uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars with: runner_pool: nightly build_scheme: swift-nio-Package @@ -83,4 +83,4 @@ jobs: release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@main + uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index f171e1de5b..490ffe2e21 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -14,7 +14,7 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@main + uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars with: linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -26,14 +26,14 @@ jobs: benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@main + uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars with: benchmark_package_path: "Benchmarks" cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars construct-integration-test-matrix: name: Construct integration test matrix @@ -55,7 +55,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -81,7 +81,7 @@ jobs: macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@main + uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars with: runner_pool: general build_scheme: swift-nio-Package @@ -91,13 +91,13 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@main + uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@main + uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 01079a8b32..1915dd7aac 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -137,7 +137,7 @@ jobs: name: Release builds needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Release builds" matrix_string: '${{ needs.construct-matrix.outputs.release-build-matrix }}' diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index 6c76b97c0d..c58f353545 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -7,7 +7,7 @@ jobs: static-sdk: name: Static SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Static SDK" matrix_string: >- diff --git a/.github/workflows/swift_load_test_matrix.yml b/.github/workflows/swift_load_test_matrix.yml index 9b7b53b7f2..12b2df5c12 100644 --- a/.github/workflows/swift_load_test_matrix.yml +++ b/.github/workflows/swift_load_test_matrix.yml @@ -35,7 +35,7 @@ jobs: name: Execute matrix needs: load-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: ${{ inputs.name }} matrix_string: '${{ needs.load-matrix.outputs.swift-matrix }}' diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 4ef6723900..53f09376e3 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -170,7 +170,7 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" @@ -212,7 +212,7 @@ jobs: name: Unit tests needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Unit tests" matrix_string: '${{ needs.construct-matrix.outputs.unit-test-matrix }}' From 0c7b341181c906777a62b8efd7d513b542853fe7 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 14:49:35 +0100 Subject: [PATCH 09/27] Revert "test env vars" This reverts commit 4d0ffd6577b12a5290a209ab990b65f72b729728. --- .github/workflows/unit_tests.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 53f09376e3..f397e0187f 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -174,8 +174,7 @@ jobs: env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" - MATRIX_LINUX_ENV_VARS: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing - # MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} + MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} @@ -193,8 +192,7 @@ jobs: MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_COMMAND_ARGUMENTS: ${{ inputs.linux_nightly_main_arguments_override }} MATRIX_WINDOWS_COMMAND: "swift test" - MATRIX_WINDOWS_ENV_VARS: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing - # MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} + MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} MATRIX_WINDOWS_6_0_ENABLED: ${{ inputs.windows_6_0_enabled }} From 3ab2ae171c1fbb85dc862b5f5f5fe06848e7e6ee Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 15:10:26 +0100 Subject: [PATCH 10/27] adopt in release builds and C++ --- .github/workflows/benchmarks.yml | 15 -------------- .github/workflows/cxx_interop.yml | 31 ++++++++++++++++++++++++++++ .github/workflows/release_builds.yml | 31 ++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 15 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 4f9efb92ad..22a5844387 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -80,18 +80,6 @@ on: type: string description: "Separator between environment variable pairs for Linux." default: "," - windows_env_vars: - type: string - description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - windows_env_var_pair_separator: - type: string - description: "Separator between key and value for Windows environment variables." - default: "=" - windows_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Windows." - default: "," jobs: construct-matrix: @@ -119,9 +107,6 @@ jobs: MATRIX_LINUX_6_2_ENABLED: ${{ inputs.linux_6_2_enabled }} MATRIX_LINUX_NIGHTLY_NEXT_ENABLED: ${{ inputs.linux_nightly_6_1_enabled && inputs.linux_nightly_next_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} - MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} - MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} - MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} benchmarks: name: Benchmarks diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml index 1076a43408..d0ba3f3182 100644 --- a/.github/workflows/cxx_interop.yml +++ b/.github/workflows/cxx_interop.yml @@ -61,6 +61,31 @@ on: description: "Boolean to enable the Windows nightly main Swift version matrix job. Defaults to false. Currently has no effect!" # TODO: implement Windows Cxx compat checking default: false + linux_env_vars: + type: string + description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + linux_env_var_pair_separator: + type: string + description: "Separator between key and value for Linux environment variables." + default: "=" + linux_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Linux." + default: "," + windows_env_vars: + type: string + description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + windows_env_var_pair_separator: + type: string + description: "Separator between key and value for Windows environment variables." + default: "=" + windows_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Windows." + default: "," + jobs: construct-matrix: name: Construct Cxx interop matrix @@ -77,6 +102,9 @@ jobs: env: MATRIX_LINUX_COMMAND: "curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-cxx-interop-compatibility.sh | bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl jq" + MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} + MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} + MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} MATRIX_LINUX_6_0_ENABLED: ${{ inputs.linux_6_0_enabled }} @@ -84,6 +112,9 @@ jobs: MATRIX_LINUX_6_2_ENABLED: ${{ inputs.linux_6_2_enabled }} MATRIX_LINUX_NIGHTLY_NEXT_ENABLED: ${{ inputs.linux_nightly_6_1_enabled && inputs.linux_nightly_next_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} + MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} + MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} + MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} cxx-interop: name: Cxx interop diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 1915dd7aac..3fbfbe6f98 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -93,6 +93,31 @@ on: description: "The arguments passed to swift test in the Windows nightly main Swift version matrix job." default: "" + linux_env_vars: + type: string + description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + linux_env_var_pair_separator: + type: string + description: "Separator between key and value for Linux environment variables." + default: "=" + linux_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Linux." + default: "," + windows_env_vars: + type: string + description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + windows_env_var_pair_separator: + type: string + description: "Separator between key and value for Windows environment variables." + default: "=" + windows_env_var_list_separator: + type: string + description: "Separator between environment variable pairs for Windows." + default: "," + jobs: construct-matrix: name: Construct release build matrix @@ -109,6 +134,9 @@ jobs: env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift build -c release" + MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} + MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} + MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} MATRIX_LINUX_5_10_COMMAND_ARGUMENTS: ${{ inputs.linux_5_10_arguments_override }} MATRIX_LINUX_6_0_ENABLED: ${{ inputs.linux_6_0_enabled }} @@ -132,6 +160,9 @@ jobs: MATRIX_WINDOWS_NIGHTLY_NEXT_COMMAND_ARGUMENTS: ${{ inputs.windows_nightly_next_arguments_override }} MATRIX_WINDOWS_NIGHTLY_MAIN_ENABLED: ${{ inputs.windows_nightly_main_enabled }} MATRIX_WINDOWS_NIGHTLY_MAIN_COMMAND_ARGUMENTS: ${{ inputs.windows_nightly_main_arguments_override }} + MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} + MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} + MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} release-builds: name: Release builds From 9c8a04b39bce7b1b7c8e5a9abaa76a5656880e7d Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:14:05 +0100 Subject: [PATCH 11/27] split out parse_env_vars, use on macos, static SDK --- .github/workflows/macos_tests.yml | 43 ++++++++++++--- .github/workflows/static_sdk.yml | 91 ++++++++++++++++++++++--------- .github/workflows/unit_tests.yml | 16 +++--- scripts/generate_matrix.sh | 46 +--------------- scripts/parse_env_vars.sh | 50 +++++++++++++++++ 5 files changed, 161 insertions(+), 85 deletions(-) create mode 100644 scripts/parse_env_vars.sh diff --git a/.github/workflows/macos_tests.yml b/.github/workflows/macos_tests.yml index 482a0f4b12..f26b2ac0b0 100644 --- a/.github/workflows/macos_tests.yml +++ b/.github/workflows/macos_tests.yml @@ -193,6 +193,19 @@ on: description: "The runner pool which will be requested." default: "nightly" + env_vars: + type: string + description: "Environment variables for jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + env_var_pair_separator: + type: string + description: "Separator between key and value for environment variables." + default: "=" + env_var_list_separator: + type: string + description: "Separator between environment variable pairs." + default: "," + jobs: construct-matrix: name: Construct Darwin matrix @@ -206,6 +219,9 @@ jobs: persist-credentials: false - id: generate-matrix run: | + # Parse environment variables using the parse_env_vars script + env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + cat >> "$GITHUB_OUTPUT" << EOM darwin-matrix=$( runner_pool="${MATRIX_RUNNER_POOL:="nightly"}" @@ -255,7 +271,8 @@ jobs: --arg build_arguments_override "$xcode_15_4_build_arguments_override" \ --arg test_arguments_override "$xcode_15_4_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 15.4", "xcode_version": "15.4", "xcode_app": "Xcode_15.4.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 15.4", "xcode_version": "15.4", "xcode_app": "Xcode_15.4.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_16_0_enabled" == "true" ]]; then @@ -264,7 +281,8 @@ jobs: --arg build_arguments_override "$xcode_16_0_build_arguments_override" \ --arg test_arguments_override "$xcode_16_0_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 16.0", "xcode_version": "16.0", "xcode_app": "Xcode_16.0.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 16.0", "xcode_version": "16.0", "xcode_app": "Xcode_16.0.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_16_1_enabled" == "true" ]]; then @@ -273,7 +291,8 @@ jobs: --arg build_arguments_override "$xcode_16_1_build_arguments_override" \ --arg test_arguments_override "$xcode_16_1_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 16.1", "xcode_version": "16.1", "xcode_app": "Xcode_16.1.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 16.1", "xcode_version": "16.1", "xcode_app": "Xcode_16.1.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_16_2_enabled" == "true" ]]; then @@ -282,7 +301,8 @@ jobs: --arg build_arguments_override "$xcode_16_2_build_arguments_override" \ --arg test_arguments_override "$xcode_16_2_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 16.2", "xcode_version": "16.2", "xcode_app": "Xcode_16.2.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 16.2", "xcode_version": "16.2", "xcode_app": "Xcode_16.2.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_16_3_enabled" == "true" ]]; then @@ -291,7 +311,8 @@ jobs: --arg build_arguments_override "$xcode_16_3_build_arguments_override" \ --arg test_arguments_override "$xcode_16_3_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 16.3", "xcode_version": "16.3", "xcode_app": "Xcode_16.3.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 16.3", "xcode_version": "16.3", "xcode_app": "Xcode_16.3.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_16_4_enabled" == "true" ]]; then @@ -300,7 +321,8 @@ jobs: --arg build_arguments_override "$xcode_16_4_build_arguments_override" \ --arg test_arguments_override "$xcode_16_4_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 16.4", "xcode_version": "16.4", "xcode_app": "Xcode_16.4.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 16.4", "xcode_version": "16.4", "xcode_app": "Xcode_16.4.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_26_0_enabled" == "true" ]]; then @@ -309,7 +331,8 @@ jobs: --arg build_arguments_override "$xcode_26_0_build_arguments_override" \ --arg test_arguments_override "$xcode_26_0_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode 26.0", "xcode_version": "26.0", "xcode_app": "Xcode_26.0.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode 26.0", "xcode_version": "26.0", "xcode_app": "Xcode_26.0.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi if [[ "$xcode_latest_beta_enabled" == "true" ]]; then @@ -318,13 +341,17 @@ jobs: --arg build_arguments_override "$xcode_latest_beta_build_arguments_override" \ --arg test_arguments_override "$xcode_latest_beta_test_arguments_override" \ --arg runner_pool "$runner_pool" \ - '.config[.config| length] |= . + { "name": "Xcode latest beta", "xcode_version": "latest beta", "xcode_app": "Xcode-latest.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool }') + --argjson env_vars "$env_vars_json" \ + '.config[.config| length] |= . + { "name": "Xcode latest beta", "xcode_version": "latest beta", "xcode_app": "Xcode-latest.app", "setup_command": $setup_command, "build_arguments_override": $build_arguments_override, "test_arguments_override": $test_arguments_override, "os": "sequoia", "arch": "ARM64", "pool": $runner_pool, "env": $env_vars }') fi echo "$matrix" | jq -c )" EOM env: + MATRIX_ENV_VARS: ${{ inputs.env_vars }} + MATRIX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.env_var_pair_separator }} + MATRIX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.env_var_list_separator }} MATRIX_RUNNER_POOL: ${{ inputs.runner_pool }} MATRIX_MACOS_15_4_ENABLED: ${{ inputs.xcode_15_4_enabled }} MATRIX_MACOS_15_4_BUILD_ARGUMENTS_OVERRIDE: ${{ inputs.xcode_15_4_build_arguments_override }} diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index c58f353545..d172936b5b 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -2,38 +2,75 @@ name: Static SDK on: workflow_call: + inputs: + env_vars: + type: string + description: "Environment variables for jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." + default: "" + env_var_pair_separator: + type: string + description: "Separator between key and value for environment variables." + default: "=" + env_var_list_separator: + type: string + description: "Separator between environment variable pairs." + default: "," jobs: + construct-matrix: + name: Construct Static SDK matrix + runs-on: ubuntu-latest + outputs: + static-sdk-matrix: '${{ steps.generate-matrix.outputs.static-sdk-matrix }}' + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + persist-credentials: false + - id: generate-matrix + run: | + # Parse environment variables using the parse_env_vars script + env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + + # Generate matrix with parsed environment variables + cat >> "$GITHUB_OUTPUT" << EOM + static-sdk-matrix=$(echo '{ + "config":[ + { + "name":"latest-release Jammy", + "swift_version":"latest-release", + "platform":"Linux", + "runner":"ubuntu-latest", + "image":"ubuntu:jammy", + "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", + "command":"swift build", + "command_arguments":"--swift-sdk x86_64-swift-linux-musl", + "env":'"$env_vars_json"' + }, + { + "name":"main Jammy", + "swift_version":"main", + "platform":"Linux", + "runner":"ubuntu-latest", + "image":"ubuntu:jammy", + "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", + "command":"swift build", + "command_arguments":"--swift-sdk x86_64-swift-linux-musl", + "env":'"$env_vars_json"' + } + ] + }' | jq -c) + EOM + env: + MATRIX_ENV_VARS: ${{ inputs.env_vars }} + MATRIX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.env_var_pair_separator }} + MATRIX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.env_var_list_separator }} + static-sdk: name: Static SDK + needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Static SDK" - matrix_string: >- - { - "config":[ - { - "name":"latest-release Jammy", - "swift_version":"latest-release", - "platform":"Linux", - "runner":"ubuntu-latest", - "image":"ubuntu:jammy", - "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", - "command":"swift build", - "command_arguments":"--swift-sdk x86_64-swift-linux-musl", - "env":{} - }, - { - "name":"main Jammy", - "swift_version":"main", - "platform":"Linux", - "runner":"ubuntu-latest", - "image":"ubuntu:jammy", - "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", - "command":"swift build", - "command_arguments":"--swift-sdk x86_64-swift-linux-musl", - "env":{} - } - ] - } + matrix_string: '${{ needs.construct-matrix.outputs.static-sdk-matrix }}' diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index f397e0187f..70854c8984 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -170,13 +170,18 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: | + # Parse Linux environment variables + linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) + + # Parse Windows environment variables + windows_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.windows_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.windows_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.windows_env_var_list_separator }}" bash) + + # Generate matrix + echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" - MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} - MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} - MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_9_COMMAND_ARGUMENTS: ${{ inputs.linux_5_9_arguments_override }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -192,9 +197,6 @@ jobs: MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_COMMAND_ARGUMENTS: ${{ inputs.linux_nightly_main_arguments_override }} MATRIX_WINDOWS_COMMAND: "swift test" - MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} - MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} - MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} MATRIX_WINDOWS_6_0_ENABLED: ${{ inputs.windows_6_0_enabled }} MATRIX_WINDOWS_6_0_COMMAND_ARGUMENTS: ${{ inputs.windows_6_0_arguments_override }} MATRIX_WINDOWS_6_1_ENABLED: ${{ inputs.windows_6_1_enabled }} diff --git a/scripts/generate_matrix.sh b/scripts/generate_matrix.sh index 0472f26e0d..bef41e3b7e 100755 --- a/scripts/generate_matrix.sh +++ b/scripts/generate_matrix.sh @@ -16,9 +16,6 @@ # Parameters linux_command="$MATRIX_LINUX_COMMAND" # required if any Linux pipeline is enabled linux_setup_command="$MATRIX_LINUX_SETUP_COMMAND" -linux_env_vars="$MATRIX_LINUX_ENV_VARS" -linux_env_var_pair_separator="${MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR:="="}" -linux_env_var_list_separator="${MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR:=","}" linux_5_9_enabled="${MATRIX_LINUX_5_9_ENABLED:=false}" linux_5_9_command_arguments="$MATRIX_LINUX_5_9_COMMAND_ARGUMENTS" linux_5_10_enabled="${MATRIX_LINUX_5_10_ENABLED:=true}" @@ -36,9 +33,6 @@ linux_nightly_main_command_arguments="$MATRIX_LINUX_NIGHTLY_MAIN_COMMAND_ARGUMEN windows_command="$MATRIX_WINDOWS_COMMAND" # required if any Windows pipeline is enabled windows_setup_command="$MATRIX_WINDOWS_SETUP_COMMAND" -windows_env_vars="$MATRIX_WINDOWS_ENV_VARS" -windows_env_var_pair_separator="${MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR:="="}" -windows_env_var_list_separator="${MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR:=","}" windows_6_0_enabled="${MATRIX_WINDOWS_6_0_ENABLED:=false}" windows_6_1_enabled="${MATRIX_WINDOWS_6_1_ENABLED:=false}" windows_6_2_enabled="${MATRIX_WINDOWS_6_2_ENABLED:=false}" @@ -50,10 +44,6 @@ windows_nightly_next_command_arguments="${MATRIX_WINDOWS_NIGHTLY_NEXT_COMMAND_AR windows_nightly_main_enabled="${MATRIX_WINDOWS_NIGHTLY_MAIN_ENABLED:=false}" windows_nightly_main_command_arguments="$MATRIX_WINDOWS_NIGHTLY_MAIN_COMMAND_ARGUMENTS" -# Specifying custom environment variables example: -# MATRIX_WINDOWS_ENV_VARS="BUILD:Release;ARCH:x64" MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR=":" MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR=";" ./generate_matrix.sh - - # Defaults linux_runner="ubuntu-latest" linux_5_9_container_image="swift:5.9-jammy" @@ -75,39 +65,9 @@ windows_nightly_next_container_image="swiftlang/swift:nightly-6.2-windowsserverc windows_nightly_main_runner="windows-2022" windows_nightly_main_container_image="swiftlang/swift:nightly-main-windowsservercore-ltsc2022" -# Function to parse environment variables and convert to JSON object -parse_env_vars() { - local env_vars="$1" - local pair_separator="$2" - local list_separator="$3" - - if [[ -z "$env_vars" ]]; then - echo "{}" - return - fi - - local json_obj="{}" - - # Split the env_vars string by list_separator - IFS="$list_separator" read -ra env_pairs <<< "$env_vars" - - for pair in "${env_pairs[@]}"; do - # Split each pair by pair_separator - IFS="$pair_separator" read -ra kv <<< "$pair" - if [[ ${#kv[@]} -eq 2 ]]; then - local key="${kv[0]}" - local value="${kv[1]}" - # Add to JSON object using jq - json_obj=$(echo "$json_obj" | jq -c --arg key "$key" --arg value "$value" '. + {($key): $value}') - fi - done - - echo "$json_obj" -} - -# Parse environment variables for Linux and Windows -linux_env_vars_json=$(parse_env_vars "$linux_env_vars" "$linux_env_var_pair_separator" "$linux_env_var_list_separator") -windows_env_vars_json=$(parse_env_vars "$windows_env_vars" "$windows_env_var_pair_separator" "$windows_env_var_list_separator") +# Get pre-parsed environment variables JSON +linux_env_vars_json="${MATRIX_LINUX_ENV_VARS_JSON:-{}}" +windows_env_vars_json="${MATRIX_WINDOWS_ENV_VARS_JSON:-{}}" # Create matrix from inputs matrix='{"config": []}' diff --git a/scripts/parse_env_vars.sh b/scripts/parse_env_vars.sh new file mode 100644 index 0000000000..24da0ea047 --- /dev/null +++ b/scripts/parse_env_vars.sh @@ -0,0 +1,50 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +## +## This source file is part of the SwiftNIO open source project +## +## Copyright (c) 2024 Apple Inc. and the SwiftNIO project authors +## Licensed under Apache License v2.0 +## +## See LICENSE.txt for license information +## See CONTRIBUTORS.txt for the list of SwiftNIO project authors +## +## SPDX-License-Identifier: Apache-2.0 +## +##===----------------------------------------------------------------------===## +env_vars="$ENV_VARS" +env_var_pair_separator="${ENV_VAR_PAIR_SEPARATOR:="="}" +env_var_list_separator="${ENV_VAR_LIST_SEPARATOR:=","}" + +# Function to parse environment variables and convert to JSON object +parse_env_vars() { + local env_vars="$1" + local pair_separator="$2" + local list_separator="$3" + + if [[ -z "$env_vars" ]]; then + echo "{}" + return + fi + + local json_obj="{}" + + # Split the env_vars string by list_separator + IFS="$list_separator" read -ra env_pairs <<< "$env_vars" + + for pair in "${env_pairs[@]}"; do + # Split each pair by pair_separator + IFS="$pair_separator" read -ra kv <<< "$pair" + if [[ ${#kv[@]} -eq 2 ]]; then + local key="${kv[0]}" + local value="${kv[1]}" + # Add to JSON object using jq + json_obj=$(echo "$json_obj" | jq -c --arg key "$key" --arg value "$value" '. + {($key): $value}') + fi + done + + echo "$json_obj" +} + +# Execute the function with the environment variables +parse_env_vars "$env_vars" "$env_var_pair_separator" "$env_var_list_separator" From 40fedda2317671bbaa2e9677a69045fef6f7a532 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:16:06 +0100 Subject: [PATCH 12/27] test env vars --- .github/workflows/pull_request.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 490ffe2e21..698fdf3611 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -16,6 +16,7 @@ jobs: # Workaround https://github.com/nektos/act/issues/1875 uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars with: + linux_env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_1_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" From a1ddcef889d50d88d3b1bdee51fac81fedf5f494 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:19:30 +0100 Subject: [PATCH 13/27] more test shim --- .github/workflows/macos_tests.yml | 2 +- .github/workflows/static_sdk.yml | 2 +- .github/workflows/unit_tests.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/macos_tests.yml b/.github/workflows/macos_tests.yml index f26b2ac0b0..748bae9673 100644 --- a/.github/workflows/macos_tests.yml +++ b/.github/workflows/macos_tests.yml @@ -220,7 +220,7 @@ jobs: - id: generate-matrix run: | # Parse environment variables using the parse_env_vars script - env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) cat >> "$GITHUB_OUTPUT" << EOM darwin-matrix=$( diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index d172936b5b..9efac2c4a6 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -30,7 +30,7 @@ jobs: - id: generate-matrix run: | # Parse environment variables using the parse_env_vars script - env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) # Generate matrix with parsed environment variables cat >> "$GITHUB_OUTPUT" << EOM diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 70854c8984..329d288d5d 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -172,10 +172,10 @@ jobs: - id: generate-matrix run: | # Parse Linux environment variables - linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) + linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) # Parse Windows environment variables - windows_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.windows_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.windows_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.windows_env_var_list_separator }}" bash) + windows_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.windows_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.windows_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.windows_env_var_list_separator }}" bash) # Generate matrix echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" From a1edbf9338b4ba1c78e65f37e0ddd6c9f39c5aae Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:23:15 +0100 Subject: [PATCH 14/27] test --- .github/workflows/unit_tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 329d288d5d..7439fa60ce 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -172,6 +172,7 @@ jobs: - id: generate-matrix run: | # Parse Linux environment variables + echo ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) # Parse Windows environment variables From 08700381510a94669821adfe47d761f6f05dc36b Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:29:38 +0100 Subject: [PATCH 15/27] more tests --- .github/workflows/unit_tests.yml | 1 - scripts/generate_matrix.sh | 1 + scripts/parse_env_vars.sh | 0 3 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 scripts/parse_env_vars.sh diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 7439fa60ce..329d288d5d 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -172,7 +172,6 @@ jobs: - id: generate-matrix run: | # Parse Linux environment variables - echo ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) # Parse Windows environment variables diff --git a/scripts/generate_matrix.sh b/scripts/generate_matrix.sh index bef41e3b7e..3c17cf0ed0 100755 --- a/scripts/generate_matrix.sh +++ b/scripts/generate_matrix.sh @@ -12,6 +12,7 @@ ## SPDX-License-Identifier: Apache-2.0 ## ##===----------------------------------------------------------------------===## +set -x # Parameters linux_command="$MATRIX_LINUX_COMMAND" # required if any Linux pipeline is enabled diff --git a/scripts/parse_env_vars.sh b/scripts/parse_env_vars.sh old mode 100644 new mode 100755 From acb9bf23b5d78d0c5ffa54b63d6e3acf32edfbcf Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:36:22 +0100 Subject: [PATCH 16/27] testing --- scripts/generate_matrix.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/generate_matrix.sh b/scripts/generate_matrix.sh index 3c17cf0ed0..23fffd0f38 100755 --- a/scripts/generate_matrix.sh +++ b/scripts/generate_matrix.sh @@ -67,8 +67,8 @@ windows_nightly_main_runner="windows-2022" windows_nightly_main_container_image="swiftlang/swift:nightly-main-windowsservercore-ltsc2022" # Get pre-parsed environment variables JSON -linux_env_vars_json="${MATRIX_LINUX_ENV_VARS_JSON:-{}}" -windows_env_vars_json="${MATRIX_WINDOWS_ENV_VARS_JSON:-{}}" +linux_env_vars_json="${MATRIX_LINUX_ENV_VARS_JSON:-"{}"}" +windows_env_vars_json="${MATRIX_WINDOWS_ENV_VARS_JSON:-"{}"}" # Create matrix from inputs matrix='{"config": []}' From ef725b3e1f090cc2a96459658e3480ec2f1bc2d7 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:39:45 +0100 Subject: [PATCH 17/27] more testing env vars --- .github/workflows/pull_request.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 698fdf3611..961e084f97 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -86,6 +86,7 @@ jobs: with: runner_pool: general build_scheme: swift-nio-Package + env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing xcode_16_2_build_arguments_override: "-Xswiftc -Xfrontend -Xswiftc -require-explicit-sendable" xcode_16_3_build_arguments_override: "-Xswiftc -Xfrontend -Xswiftc -require-explicit-sendable" @@ -93,6 +94,8 @@ jobs: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars + with: + env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing wasm-sdk: name: WebAssembly Swift SDK From a326bad4e72d43d08a27e52883a9673c764bf5f7 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 16:48:09 +0100 Subject: [PATCH 18/27] export on macos --- .github/workflows/macos_tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/macos_tests.yml b/.github/workflows/macos_tests.yml index 748bae9673..500d1c276e 100644 --- a/.github/workflows/macos_tests.yml +++ b/.github/workflows/macos_tests.yml @@ -404,6 +404,12 @@ jobs: with: persist-credentials: false submodules: true + - name: Export environment variables + if: ${{ matrix.config.env != '' && matrix.config.env != '{}'}} + run: | + echo "Exporting environment variables from matrix configuration..." + echo '${{ toJSON(matrix.config.env) }}' | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENV + echo '${{ toJSON(matrix.config.env) }}' | jq -r 'to_entries[] | "\(.key)=\(.value)"' - name: Setup command if: ${{ matrix.config.setup_command != '' }} run: bash -c "${{ matrix.config.setup_command }}" From 7a9a174359a008b713b0d9a8f62417659bc72e4a Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 17:01:51 +0100 Subject: [PATCH 19/27] tweaks --- .github/workflows/macos_tests.yml | 2 +- scripts/parse_env_vars.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos_tests.yml b/.github/workflows/macos_tests.yml index 500d1c276e..2957e605c2 100644 --- a/.github/workflows/macos_tests.yml +++ b/.github/workflows/macos_tests.yml @@ -409,7 +409,7 @@ jobs: run: | echo "Exporting environment variables from matrix configuration..." echo '${{ toJSON(matrix.config.env) }}' | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENV - echo '${{ toJSON(matrix.config.env) }}' | jq -r 'to_entries[] | "\(.key)=\(.value)"' + echo '${{ toJSON(matrix.config.env) }}' | jq -r 'to_entries[] | "exporting \(.key)=\(.value)"' - name: Setup command if: ${{ matrix.config.setup_command != '' }} run: bash -c "${{ matrix.config.setup_command }}" diff --git a/scripts/parse_env_vars.sh b/scripts/parse_env_vars.sh index 24da0ea047..7c01da29c3 100755 --- a/scripts/parse_env_vars.sh +++ b/scripts/parse_env_vars.sh @@ -12,7 +12,7 @@ ## SPDX-License-Identifier: Apache-2.0 ## ##===----------------------------------------------------------------------===## -env_vars="$ENV_VARS" +env_vars="${$ENV_VARS:=""}" env_var_pair_separator="${ENV_VAR_PAIR_SEPARATOR:="="}" env_var_list_separator="${ENV_VAR_LIST_SEPARATOR:=","}" From bfe8591e19f4476db69ce4f266f3d4551788a6c7 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 17:40:12 +0100 Subject: [PATCH 20/27] fix --- scripts/parse_env_vars.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/parse_env_vars.sh b/scripts/parse_env_vars.sh index 7c01da29c3..bc6529db6a 100755 --- a/scripts/parse_env_vars.sh +++ b/scripts/parse_env_vars.sh @@ -12,7 +12,7 @@ ## SPDX-License-Identifier: Apache-2.0 ## ##===----------------------------------------------------------------------===## -env_vars="${$ENV_VARS:=""}" +env_vars="${ENV_VARS:=""}" env_var_pair_separator="${ENV_VAR_PAIR_SEPARATOR:="="}" env_var_list_separator="${ENV_VAR_LIST_SEPARATOR:=","}" From eb1d46ccc01e93b23807a33daae5c689d48193ae Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 17:47:28 +0100 Subject: [PATCH 21/27] unpick testing shims and variables --- .github/workflows/benchmarks.yml | 2 +- .github/workflows/cxx_interop.yml | 2 +- .github/workflows/macos_tests.yml | 2 +- .github/workflows/main.yml | 16 ++++++++-------- .github/workflows/pull_request.yml | 16 ++++++++-------- .github/workflows/release_builds.yml | 2 +- .github/workflows/static_sdk.yml | 4 ++-- .github/workflows/swift_load_test_matrix.yml | 2 +- .github/workflows/unit_tests.yml | 8 ++++---- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 22a5844387..4de9bc0581 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -112,7 +112,7 @@ jobs: name: Benchmarks needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Benchmarks" matrix_string: '${{ needs.construct-matrix.outputs.benchmarks-matrix }}' diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml index d0ba3f3182..e90e228260 100644 --- a/.github/workflows/cxx_interop.yml +++ b/.github/workflows/cxx_interop.yml @@ -120,7 +120,7 @@ jobs: name: Cxx interop needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Cxx interop" matrix_string: '${{ needs.construct-matrix.outputs.cxx-interop-matrix }}' diff --git a/.github/workflows/macos_tests.yml b/.github/workflows/macos_tests.yml index 2957e605c2..6eac211245 100644 --- a/.github/workflows/macos_tests.yml +++ b/.github/workflows/macos_tests.yml @@ -220,7 +220,7 @@ jobs: - id: generate-matrix run: | # Parse environment variables using the parse_env_vars script - env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) cat >> "$GITHUB_OUTPUT" << EOM darwin-matrix=$( diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5c9ad3702c..5178bcce81 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -22,12 +22,12 @@ jobs: cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/benchmarks.yml@main with: benchmark_package_path: "Benchmarks" @@ -51,7 +51,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -59,17 +59,17 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/static_sdk.yml@main wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/macos_tests.yml@main with: runner_pool: nightly build_scheme: swift-nio-Package @@ -83,4 +83,4 @@ jobs: release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/release_builds.yml@main diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 961e084f97..05f5cef07a 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -14,7 +14,7 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: linux_env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -27,14 +27,14 @@ jobs: benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/benchmarks.yml@main with: benchmark_package_path: "Benchmarks" cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main construct-integration-test-matrix: name: Construct integration test matrix @@ -56,7 +56,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -82,7 +82,7 @@ jobs: macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/macos_tests.yml@main with: runner_pool: general build_scheme: swift-nio-Package @@ -93,15 +93,15 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/static_sdk.yml@main with: env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/release_builds.yml@main diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 3fbfbe6f98..fd5880c835 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -168,7 +168,7 @@ jobs: name: Release builds needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Release builds" matrix_string: '${{ needs.construct-matrix.outputs.release-build-matrix }}' diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index 9efac2c4a6..48dab11cdb 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -30,7 +30,7 @@ jobs: - id: generate-matrix run: | # Parse environment variables using the parse_env_vars script - env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) # Generate matrix with parsed environment variables cat >> "$GITHUB_OUTPUT" << EOM @@ -70,7 +70,7 @@ jobs: name: Static SDK needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Static SDK" matrix_string: '${{ needs.construct-matrix.outputs.static-sdk-matrix }}' diff --git a/.github/workflows/swift_load_test_matrix.yml b/.github/workflows/swift_load_test_matrix.yml index 12b2df5c12..9b7b53b7f2 100644 --- a/.github/workflows/swift_load_test_matrix.yml +++ b/.github/workflows/swift_load_test_matrix.yml @@ -35,7 +35,7 @@ jobs: name: Execute matrix needs: load-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: ${{ inputs.name }} matrix_string: '${{ needs.load-matrix.outputs.swift-matrix }}' diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 329d288d5d..6356fc1145 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -172,13 +172,13 @@ jobs: - id: generate-matrix run: | # Parse Linux environment variables - linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) + linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) # Parse Windows environment variables - windows_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.windows_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.windows_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.windows_env_var_list_separator }}" bash) + windows_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.windows_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.windows_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.windows_env_var_list_separator }}" bash) # Generate matrix - echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" @@ -212,7 +212,7 @@ jobs: name: Unit tests needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Unit tests" matrix_string: '${{ needs.construct-matrix.outputs.unit-test-matrix }}' From caabec76d9044ecd2e6292210d77984d6ca3e8e1 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Fri, 19 Sep 2025 17:56:26 +0100 Subject: [PATCH 22/27] update license --- scripts/parse_env_vars.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/parse_env_vars.sh b/scripts/parse_env_vars.sh index bc6529db6a..1e48fa28e7 100755 --- a/scripts/parse_env_vars.sh +++ b/scripts/parse_env_vars.sh @@ -3,7 +3,7 @@ ## ## This source file is part of the SwiftNIO open source project ## -## Copyright (c) 2024 Apple Inc. and the SwiftNIO project authors +## Copyright (c) 2025 Apple Inc. and the SwiftNIO project authors ## Licensed under Apache License v2.0 ## ## See LICENSE.txt for license information @@ -12,6 +12,7 @@ ## SPDX-License-Identifier: Apache-2.0 ## ##===----------------------------------------------------------------------===## + env_vars="${ENV_VARS:=""}" env_var_pair_separator="${ENV_VAR_PAIR_SEPARATOR:="="}" env_var_list_separator="${ENV_VAR_LIST_SEPARATOR:=","}" From 7902b6ea6f91a4267f36735b9217d89e7e71e1f2 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Mon, 22 Sep 2025 09:44:11 +0100 Subject: [PATCH 23/27] remove testing params --- .github/workflows/pull_request.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 05f5cef07a..f171e1de5b 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -16,7 +16,6 @@ jobs: # Workaround https://github.com/nektos/act/issues/1875 uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: - linux_env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_1_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -86,7 +85,6 @@ jobs: with: runner_pool: general build_scheme: swift-nio-Package - env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing xcode_16_2_build_arguments_override: "-Xswiftc -Xfrontend -Xswiftc -require-explicit-sendable" xcode_16_3_build_arguments_override: "-Xswiftc -Xfrontend -Xswiftc -require-explicit-sendable" @@ -94,8 +92,6 @@ jobs: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 uses: apple/swift-nio/.github/workflows/static_sdk.yml@main - with: - env_vars: "TEST_VAR_DEBUG=1,TEST_VAR_LOG_LEVEL=info" # TODO: remove, testing wasm-sdk: name: WebAssembly Swift SDK From 605059361babd5bc732625c3d6fc46a4048ca70b Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Mon, 22 Sep 2025 11:35:48 +0100 Subject: [PATCH 24/27] matrix env vars as JSON --- .github/workflows/benchmarks.yml | 26 +++++++------- .github/workflows/cxx_interop.yml | 47 +++++++++++-------------- .github/workflows/macos_tests.yml | 25 ++++++-------- .github/workflows/release_builds.yml | 47 +++++++++++-------------- .github/workflows/static_sdk.yml | 25 ++++++-------- .github/workflows/unit_tests.yml | 41 ++++++++++------------ scripts/parse_env_vars.sh | 51 ---------------------------- 7 files changed, 89 insertions(+), 173 deletions(-) delete mode 100755 scripts/parse_env_vars.sh diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 4de9bc0581..31605140f0 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -70,16 +70,8 @@ on: linux_env_vars: type: string - description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - linux_env_var_pair_separator: - type: string - description: "Separator between key and value for Linux environment variables." - default: "=" - linux_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Linux." - default: "," + description: "Environment variables for Linux jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" jobs: construct-matrix: @@ -93,13 +85,19 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "benchmarks-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: | + # Validate JSON environment variables + linux_env_vars_json='${{ inputs.linux_env_vars }}' + + if ! echo "$linux_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: linux_env_vars is not valid JSON" + exit 1 + fi + + echo "benchmarks-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_COMMAND: "curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check_benchmark_thresholds.sh | BENCHMARK_PACKAGE_PATH=${{ inputs.benchmark_package_path }} bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl libjemalloc-dev && git config --global --add safe.directory /$(basename ${{ github.workspace }})" - MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} - MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} - MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} MATRIX_LINUX_6_0_ENABLED: ${{ inputs.linux_6_0_enabled }} diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml index e90e228260..5076619e23 100644 --- a/.github/workflows/cxx_interop.yml +++ b/.github/workflows/cxx_interop.yml @@ -63,28 +63,12 @@ on: linux_env_vars: type: string - description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - linux_env_var_pair_separator: - type: string - description: "Separator between key and value for Linux environment variables." - default: "=" - linux_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Linux." - default: "," + description: "Environment variables for Linux jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" windows_env_vars: type: string - description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - windows_env_var_pair_separator: - type: string - description: "Separator between key and value for Windows environment variables." - default: "=" - windows_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Windows." - default: "," + description: "Environment variables for Windows jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" jobs: construct-matrix: @@ -98,13 +82,25 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "cxx-interop-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: | + # Validate JSON environment variables + linux_env_vars_json='${{ inputs.linux_env_vars }}' + windows_env_vars_json='${{ inputs.windows_env_vars }}' + + if ! echo "$linux_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: linux_env_vars is not valid JSON" + exit 1 + fi + + if ! echo "$windows_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: windows_env_vars is not valid JSON" + exit 1 + fi + + echo "cxx-interop-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_COMMAND: "curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-cxx-interop-compatibility.sh | bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl jq" - MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} - MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} - MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} MATRIX_LINUX_6_0_ENABLED: ${{ inputs.linux_6_0_enabled }} @@ -112,9 +108,6 @@ jobs: MATRIX_LINUX_6_2_ENABLED: ${{ inputs.linux_6_2_enabled }} MATRIX_LINUX_NIGHTLY_NEXT_ENABLED: ${{ inputs.linux_nightly_6_1_enabled && inputs.linux_nightly_next_enabled }} MATRIX_LINUX_NIGHTLY_MAIN_ENABLED: ${{ inputs.linux_nightly_main_enabled }} - MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} - MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} - MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} cxx-interop: name: Cxx interop diff --git a/.github/workflows/macos_tests.yml b/.github/workflows/macos_tests.yml index 6eac211245..73f8b6c769 100644 --- a/.github/workflows/macos_tests.yml +++ b/.github/workflows/macos_tests.yml @@ -195,16 +195,8 @@ on: env_vars: type: string - description: "Environment variables for jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - env_var_pair_separator: - type: string - description: "Separator between key and value for environment variables." - default: "=" - env_var_list_separator: - type: string - description: "Separator between environment variable pairs." - default: "," + description: "Environment variables for jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" jobs: construct-matrix: @@ -219,8 +211,14 @@ jobs: persist-credentials: false - id: generate-matrix run: | - # Parse environment variables using the parse_env_vars script - env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + # Validate and use JSON environment variables directly + env_vars_json='${{ inputs.env_vars }}' + + # Validate JSON format + if ! echo "$env_vars_json" | jq empty 2>/dev/null; then + echo "Error: env_vars is not valid JSON" + exit 1 + fi cat >> "$GITHUB_OUTPUT" << EOM darwin-matrix=$( @@ -349,9 +347,6 @@ jobs: )" EOM env: - MATRIX_ENV_VARS: ${{ inputs.env_vars }} - MATRIX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.env_var_pair_separator }} - MATRIX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.env_var_list_separator }} MATRIX_RUNNER_POOL: ${{ inputs.runner_pool }} MATRIX_MACOS_15_4_ENABLED: ${{ inputs.xcode_15_4_enabled }} MATRIX_MACOS_15_4_BUILD_ARGUMENTS_OVERRIDE: ${{ inputs.xcode_15_4_build_arguments_override }} diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index fd5880c835..6c605b5679 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -95,28 +95,12 @@ on: linux_env_vars: type: string - description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - linux_env_var_pair_separator: - type: string - description: "Separator between key and value for Linux environment variables." - default: "=" - linux_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Linux." - default: "," + description: "Environment variables for Linux jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" windows_env_vars: type: string - description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - windows_env_var_pair_separator: - type: string - description: "Separator between key and value for Windows environment variables." - default: "=" - windows_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Windows." - default: "," + description: "Environment variables for Windows jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" jobs: construct-matrix: @@ -130,13 +114,25 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "release-build-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: | + # Validate JSON environment variables + linux_env_vars_json='${{ inputs.linux_env_vars }}' + windows_env_vars_json='${{ inputs.windows_env_vars }}' + + if ! echo "$linux_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: linux_env_vars is not valid JSON" + exit 1 + fi + + if ! echo "$windows_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: windows_env_vars is not valid JSON" + exit 1 + fi + + echo "release-build-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift build -c release" - MATRIX_LINUX_ENV_VARS: ${{ inputs.linux_env_vars }} - MATRIX_LINUX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.linux_env_var_pair_separator }} - MATRIX_LINUX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.linux_env_var_list_separator }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} MATRIX_LINUX_5_10_COMMAND_ARGUMENTS: ${{ inputs.linux_5_10_arguments_override }} MATRIX_LINUX_6_0_ENABLED: ${{ inputs.linux_6_0_enabled }} @@ -160,9 +156,6 @@ jobs: MATRIX_WINDOWS_NIGHTLY_NEXT_COMMAND_ARGUMENTS: ${{ inputs.windows_nightly_next_arguments_override }} MATRIX_WINDOWS_NIGHTLY_MAIN_ENABLED: ${{ inputs.windows_nightly_main_enabled }} MATRIX_WINDOWS_NIGHTLY_MAIN_COMMAND_ARGUMENTS: ${{ inputs.windows_nightly_main_arguments_override }} - MATRIX_WINDOWS_ENV_VARS: ${{ inputs.windows_env_vars }} - MATRIX_WINDOWS_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.windows_env_var_pair_separator }} - MATRIX_WINDOWS_ENV_VAR_LIST_SEPARATOR: ${{ inputs.windows_env_var_list_separator }} release-builds: name: Release builds diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index 48dab11cdb..bbd32caec4 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -5,16 +5,8 @@ on: inputs: env_vars: type: string - description: "Environment variables for jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - env_var_pair_separator: - type: string - description: "Separator between key and value for environment variables." - default: "=" - env_var_list_separator: - type: string - description: "Separator between environment variable pairs." - default: "," + description: "Environment variables for jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" jobs: construct-matrix: @@ -29,8 +21,14 @@ jobs: persist-credentials: false - id: generate-matrix run: | - # Parse environment variables using the parse_env_vars script - env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="$MATRIX_ENV_VARS" ENV_VAR_PAIR_SEPARATOR="$MATRIX_ENV_VAR_PAIR_SEPARATOR" ENV_VAR_LIST_SEPARATOR="$MATRIX_ENV_VAR_LIST_SEPARATOR" bash) + # Validate and use JSON environment variables directly + env_vars_json='${{ inputs.env_vars }}' + + # Validate JSON format + if ! echo "$env_vars_json" | jq empty 2>/dev/null; then + echo "Error: env_vars is not valid JSON" + exit 1 + fi # Generate matrix with parsed environment variables cat >> "$GITHUB_OUTPUT" << EOM @@ -62,9 +60,6 @@ jobs: }' | jq -c) EOM env: - MATRIX_ENV_VARS: ${{ inputs.env_vars }} - MATRIX_ENV_VAR_PAIR_SEPARATOR: ${{ inputs.env_var_pair_separator }} - MATRIX_ENV_VAR_LIST_SEPARATOR: ${{ inputs.env_var_list_separator }} static-sdk: name: Static SDK diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 6356fc1145..e9874b6e49 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -135,28 +135,12 @@ on: linux_env_vars: type: string - description: "Environment variables for Linux jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - linux_env_var_pair_separator: - type: string - description: "Separator between key and value for Linux environment variables." - default: "=" - linux_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Linux." - default: "," + description: "Environment variables for Linux jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" windows_env_vars: type: string - description: "Environment variables for Windows jobs (e.g., 'DEBUG=1,LOG_LEVEL=info')." - default: "" - windows_env_var_pair_separator: - type: string - description: "Separator between key and value for Windows environment variables." - default: "=" - windows_env_var_list_separator: - type: string - description: "Separator between environment variable pairs for Windows." - default: "," + description: "Environment variables for Windows jobs as JSON (e.g., '{\"DEBUG\":\"1\",\"LOG_LEVEL\":\"info\"}')." + default: "{}" jobs: construct-matrix: @@ -171,11 +155,20 @@ jobs: persist-credentials: false - id: generate-matrix run: | - # Parse Linux environment variables - linux_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.linux_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.linux_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.linux_env_var_list_separator }}" bash) + # Validate and use JSON environment variables directly + linux_env_vars_json='${{ inputs.linux_env_vars }}' + windows_env_vars_json='${{ inputs.windows_env_vars }}' + + # Validate JSON format + if ! echo "$linux_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: linux_env_vars is not valid JSON" + exit 1 + fi - # Parse Windows environment variables - windows_env_vars_json=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/parse_env_vars.sh | ENV_VARS="${{ inputs.windows_env_vars }}" ENV_VAR_PAIR_SEPARATOR="${{ inputs.windows_env_var_pair_separator }}" ENV_VAR_LIST_SEPARATOR="${{ inputs.windows_env_var_list_separator }}" bash) + if ! echo "$windows_env_vars_json" | jq empty 2>/dev/null; then + echo "Error: windows_env_vars is not valid JSON" + exit 1 + fi # Generate matrix echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" diff --git a/scripts/parse_env_vars.sh b/scripts/parse_env_vars.sh deleted file mode 100755 index 1e48fa28e7..0000000000 --- a/scripts/parse_env_vars.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -##===----------------------------------------------------------------------===## -## -## This source file is part of the SwiftNIO open source project -## -## Copyright (c) 2025 Apple Inc. and the SwiftNIO project authors -## Licensed under Apache License v2.0 -## -## See LICENSE.txt for license information -## See CONTRIBUTORS.txt for the list of SwiftNIO project authors -## -## SPDX-License-Identifier: Apache-2.0 -## -##===----------------------------------------------------------------------===## - -env_vars="${ENV_VARS:=""}" -env_var_pair_separator="${ENV_VAR_PAIR_SEPARATOR:="="}" -env_var_list_separator="${ENV_VAR_LIST_SEPARATOR:=","}" - -# Function to parse environment variables and convert to JSON object -parse_env_vars() { - local env_vars="$1" - local pair_separator="$2" - local list_separator="$3" - - if [[ -z "$env_vars" ]]; then - echo "{}" - return - fi - - local json_obj="{}" - - # Split the env_vars string by list_separator - IFS="$list_separator" read -ra env_pairs <<< "$env_vars" - - for pair in "${env_pairs[@]}"; do - # Split each pair by pair_separator - IFS="$pair_separator" read -ra kv <<< "$pair" - if [[ ${#kv[@]} -eq 2 ]]; then - local key="${kv[0]}" - local value="${kv[1]}" - # Add to JSON object using jq - json_obj=$(echo "$json_obj" | jq -c --arg key "$key" --arg value "$value" '. + {($key): $value}') - fi - done - - echo "$json_obj" -} - -# Execute the function with the environment variables -parse_env_vars "$env_vars" "$env_var_pair_separator" "$env_var_list_separator" From 2c3c5ff893147ba6b2f755321556a33c1a207dc1 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Mon, 22 Sep 2025 14:46:39 +0100 Subject: [PATCH 25/27] testing --- .github/workflows/benchmarks.yml | 6 +++--- .github/workflows/cmake_tests.yml | 4 ++-- .github/workflows/cxx_interop.yml | 6 +++--- .github/workflows/main.yml | 18 +++++++++--------- .github/workflows/pull_request.yml | 19 ++++++++++--------- .github/workflows/release_builds.yml | 4 ++-- .github/workflows/static_sdk.yml | 6 +++--- .github/workflows/swift_load_test_matrix.yml | 2 +- .github/workflows/swift_matrix.yml | 2 +- .github/workflows/unit_tests.yml | 4 ++-- 10 files changed, 36 insertions(+), 35 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 31605140f0..e88b4e7cf8 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -94,9 +94,9 @@ jobs: exit 1 fi - echo "benchmarks-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "benchmarks-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: - MATRIX_LINUX_COMMAND: "curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check_benchmark_thresholds.sh | BENCHMARK_PACKAGE_PATH=${{ inputs.benchmark_package_path }} bash" + MATRIX_LINUX_COMMAND: "curl -s https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/check_benchmark_thresholds.sh | BENCHMARK_PACKAGE_PATH=${{ inputs.benchmark_package_path }} bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl libjemalloc-dev && git config --global --add safe.directory /$(basename ${{ github.workspace }})" MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -110,7 +110,7 @@ jobs: name: Benchmarks needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Benchmarks" matrix_string: '${{ needs.construct-matrix.outputs.benchmarks-matrix }}' diff --git a/.github/workflows/cmake_tests.yml b/.github/workflows/cmake_tests.yml index ec6100cf64..5cd99069f9 100644 --- a/.github/workflows/cmake_tests.yml +++ b/.github/workflows/cmake_tests.yml @@ -40,11 +40,11 @@ jobs: which curl jq || apt -q update which curl || apt -yq install curl which jq || apt -yq install jq - curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/update-cmake-lists.sh | CONFIG_JSON='${{ inputs.update_cmake_lists_config }}' FAIL_ON_CHANGES=true bash + curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/update-cmake-lists.sh | CONFIG_JSON='${{ inputs.update_cmake_lists_config }}' FAIL_ON_CHANGES=true bash - name: CMake build run: | which curl cmake ninja || apt -q update which curl || apt -yq install curl which cmake || apt -yq install cmake which ninja || apt -yq install ninja-build - curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/cmake-build.sh | TARGET_DIRECTORY="${{ inputs.cmake_build_target_directory }}" CMAKE_VERSION="${{ inputs.cmake_version }}" bash + curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/cmake-build.sh | TARGET_DIRECTORY="${{ inputs.cmake_build_target_directory }}" CMAKE_VERSION="${{ inputs.cmake_version }}" bash diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml index 5076619e23..58cb302426 100644 --- a/.github/workflows/cxx_interop.yml +++ b/.github/workflows/cxx_interop.yml @@ -97,9 +97,9 @@ jobs: exit 1 fi - echo "cxx-interop-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "cxx-interop-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: - MATRIX_LINUX_COMMAND: "curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-cxx-interop-compatibility.sh | bash" + MATRIX_LINUX_COMMAND: "curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/check-cxx-interop-compatibility.sh | bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl jq" MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -113,7 +113,7 @@ jobs: name: Cxx interop needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Cxx interop" matrix_string: '${{ needs.construct-matrix.outputs.cxx-interop-matrix }}' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5178bcce81..17a9f44b2e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@main + uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars with: linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -22,12 +22,12 @@ jobs: cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@main + uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars with: benchmark_package_path: "Benchmarks" @@ -42,7 +42,7 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "apt-get update -y -q && apt-get install -y -q lsof dnsutils netcat-openbsd net-tools curl jq" MATRIX_LINUX_COMMAND: "./scripts/integration_tests.sh" @@ -51,7 +51,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -59,17 +59,17 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@main + uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@main + uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars with: runner_pool: nightly build_scheme: swift-nio-Package @@ -83,4 +83,4 @@ jobs: release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@main + uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index f171e1de5b..634bdd0389 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -14,8 +14,9 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@main + uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars with: + linux_env_vars: '{"TEST_DEBUG":"1","TEST_LOG_LEVEL":"info"}' linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_1_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -26,14 +27,14 @@ jobs: benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@main + uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars with: benchmark_package_path: "Benchmarks" cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars construct-integration-test-matrix: name: Construct integration test matrix @@ -46,7 +47,7 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "apt-get update -y -q && apt-get install -y -q lsof dnsutils netcat-openbsd net-tools curl jq" MATRIX_LINUX_COMMAND: "./scripts/integration_tests.sh" @@ -55,7 +56,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -81,7 +82,7 @@ jobs: macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@main + uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars with: runner_pool: general build_scheme: swift-nio-Package @@ -91,13 +92,13 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@main + uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@main + uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 6c605b5679..8a6be1f82d 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -129,7 +129,7 @@ jobs: exit 1 fi - echo "release-build-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "release-build-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift build -c release" @@ -161,7 +161,7 @@ jobs: name: Release builds needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Release builds" matrix_string: '${{ needs.construct-matrix.outputs.release-build-matrix }}' diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index bbd32caec4..8d4c0006f5 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -40,7 +40,7 @@ jobs: "platform":"Linux", "runner":"ubuntu-latest", "image":"ubuntu:jammy", - "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", + "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", "command":"swift build", "command_arguments":"--swift-sdk x86_64-swift-linux-musl", "env":'"$env_vars_json"' @@ -51,7 +51,7 @@ jobs: "platform":"Linux", "runner":"ubuntu-latest", "image":"ubuntu:jammy", - "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", + "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", "command":"swift build", "command_arguments":"--swift-sdk x86_64-swift-linux-musl", "env":'"$env_vars_json"' @@ -65,7 +65,7 @@ jobs: name: Static SDK needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Static SDK" matrix_string: '${{ needs.construct-matrix.outputs.static-sdk-matrix }}' diff --git a/.github/workflows/swift_load_test_matrix.yml b/.github/workflows/swift_load_test_matrix.yml index 9b7b53b7f2..12b2df5c12 100644 --- a/.github/workflows/swift_load_test_matrix.yml +++ b/.github/workflows/swift_load_test_matrix.yml @@ -35,7 +35,7 @@ jobs: name: Execute matrix needs: load-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: ${{ inputs.name }} matrix_string: '${{ needs.load-matrix.outputs.swift-matrix }}' diff --git a/.github/workflows/swift_matrix.yml b/.github/workflows/swift_matrix.yml index 90cade7613..7dbf561c51 100644 --- a/.github/workflows/swift_matrix.yml +++ b/.github/workflows/swift_matrix.yml @@ -165,7 +165,7 @@ jobs: COMMAND_OVERRIDE_NIGHTLY_MAIN: ${{ inputs.matrix_linux_nightly_main_command_override }} run: | apt-get -qq update && apt-get -qq -y install curl - curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-matrix-job.sh | bash + curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/check-matrix-job.sh | bash windows: name: Windows (${{ matrix.swift.swift_version }}) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index e9874b6e49..09fd52b766 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -171,7 +171,7 @@ jobs: fi # Generate matrix - echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" @@ -205,7 +205,7 @@ jobs: name: Unit tests needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars with: name: "Unit tests" matrix_string: '${{ needs.construct-matrix.outputs.unit-test-matrix }}' From 2aec72d29639570b6eb5e1a32b1a8a5917674fa9 Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Mon, 22 Sep 2025 14:55:21 +0100 Subject: [PATCH 26/27] static sdk env --- .github/workflows/static_sdk.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index 8d4c0006f5..96e57e3e34 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -59,7 +59,6 @@ jobs: ] }' | jq -c) EOM - env: static-sdk: name: Static SDK From 98ed95681208524751772e6a2b335340a94429ec Mon Sep 17 00:00:00 2001 From: Rick Newton-Rogers Date: Mon, 22 Sep 2025 15:04:01 +0100 Subject: [PATCH 27/27] Revert "testing" This reverts commit 2c3c5ff893147ba6b2f755321556a33c1a207dc1. --- .github/workflows/benchmarks.yml | 6 +++--- .github/workflows/cmake_tests.yml | 4 ++-- .github/workflows/cxx_interop.yml | 6 +++--- .github/workflows/main.yml | 18 +++++++++--------- .github/workflows/pull_request.yml | 19 +++++++++---------- .github/workflows/release_builds.yml | 4 ++-- .github/workflows/static_sdk.yml | 6 +++--- .github/workflows/swift_load_test_matrix.yml | 2 +- .github/workflows/swift_matrix.yml | 2 +- .github/workflows/unit_tests.yml | 4 ++-- 10 files changed, 35 insertions(+), 36 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index e88b4e7cf8..31605140f0 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -94,9 +94,9 @@ jobs: exit 1 fi - echo "benchmarks-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "benchmarks-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: - MATRIX_LINUX_COMMAND: "curl -s https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/check_benchmark_thresholds.sh | BENCHMARK_PACKAGE_PATH=${{ inputs.benchmark_package_path }} bash" + MATRIX_LINUX_COMMAND: "curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check_benchmark_thresholds.sh | BENCHMARK_PACKAGE_PATH=${{ inputs.benchmark_package_path }} bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl libjemalloc-dev && git config --global --add safe.directory /$(basename ${{ github.workspace }})" MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -110,7 +110,7 @@ jobs: name: Benchmarks needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Benchmarks" matrix_string: '${{ needs.construct-matrix.outputs.benchmarks-matrix }}' diff --git a/.github/workflows/cmake_tests.yml b/.github/workflows/cmake_tests.yml index 5cd99069f9..ec6100cf64 100644 --- a/.github/workflows/cmake_tests.yml +++ b/.github/workflows/cmake_tests.yml @@ -40,11 +40,11 @@ jobs: which curl jq || apt -q update which curl || apt -yq install curl which jq || apt -yq install jq - curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/update-cmake-lists.sh | CONFIG_JSON='${{ inputs.update_cmake_lists_config }}' FAIL_ON_CHANGES=true bash + curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/update-cmake-lists.sh | CONFIG_JSON='${{ inputs.update_cmake_lists_config }}' FAIL_ON_CHANGES=true bash - name: CMake build run: | which curl cmake ninja || apt -q update which curl || apt -yq install curl which cmake || apt -yq install cmake which ninja || apt -yq install ninja-build - curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/cmake-build.sh | TARGET_DIRECTORY="${{ inputs.cmake_build_target_directory }}" CMAKE_VERSION="${{ inputs.cmake_version }}" bash + curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/cmake-build.sh | TARGET_DIRECTORY="${{ inputs.cmake_build_target_directory }}" CMAKE_VERSION="${{ inputs.cmake_version }}" bash diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml index 58cb302426..5076619e23 100644 --- a/.github/workflows/cxx_interop.yml +++ b/.github/workflows/cxx_interop.yml @@ -97,9 +97,9 @@ jobs: exit 1 fi - echo "cxx-interop-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "cxx-interop-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: - MATRIX_LINUX_COMMAND: "curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/check-cxx-interop-compatibility.sh | bash" + MATRIX_LINUX_COMMAND: "curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-cxx-interop-compatibility.sh | bash" MATRIX_LINUX_SETUP_COMMAND: "swift --version && apt-get update -y -q && apt-get install -y -q curl jq" MATRIX_LINUX_5_9_ENABLED: ${{ inputs.linux_5_9_enabled }} MATRIX_LINUX_5_10_ENABLED: ${{ inputs.linux_5_10_enabled }} @@ -113,7 +113,7 @@ jobs: name: Cxx interop needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Cxx interop" matrix_string: '${{ needs.construct-matrix.outputs.cxx-interop-matrix }}' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 17a9f44b2e..5178bcce81 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -22,12 +22,12 @@ jobs: cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/benchmarks.yml@main with: benchmark_package_path: "Benchmarks" @@ -42,7 +42,7 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "apt-get update -y -q && apt-get install -y -q lsof dnsutils netcat-openbsd net-tools curl jq" MATRIX_LINUX_COMMAND: "./scripts/integration_tests.sh" @@ -51,7 +51,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -59,17 +59,17 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/static_sdk.yml@main wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/macos_tests.yml@main with: runner_pool: nightly build_scheme: swift-nio-Package @@ -83,4 +83,4 @@ jobs: release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/release_builds.yml@main diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 634bdd0389..f171e1de5b 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -14,9 +14,8 @@ jobs: unit-tests: name: Unit tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/unit_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: - linux_env_vars: '{"TEST_DEBUG":"1","TEST_LOG_LEVEL":"info"}' linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_0_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" linux_6_1_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" @@ -27,14 +26,14 @@ jobs: benchmarks: name: Benchmarks # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/benchmarks.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/benchmarks.yml@main with: benchmark_package_path: "Benchmarks" cxx-interop: name: Cxx interop # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/cxx_interop.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/cxx_interop.yml@main construct-integration-test-matrix: name: Construct integration test matrix @@ -47,7 +46,7 @@ jobs: with: persist-credentials: false - id: generate-matrix - run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" + run: echo "integration-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "apt-get update -y -q && apt-get install -y -q lsof dnsutils netcat-openbsd net-tools curl jq" MATRIX_LINUX_COMMAND: "./scripts/integration_tests.sh" @@ -56,7 +55,7 @@ jobs: name: Integration tests needs: construct-integration-test-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Integration tests" matrix_string: '${{ needs.construct-integration-test-matrix.outputs.integration-test-matrix }}' @@ -82,7 +81,7 @@ jobs: macos-tests: name: macOS tests # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/macos_tests.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/macos_tests.yml@main with: runner_pool: general build_scheme: swift-nio-Package @@ -92,13 +91,13 @@ jobs: static-sdk: name: Static Linux Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/static_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/static_sdk.yml@main wasm-sdk: name: WebAssembly Swift SDK # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/wasm_sdk.yml@main release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/release_builds.yml@main diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 8a6be1f82d..6c605b5679 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -129,7 +129,7 @@ jobs: exit 1 fi - echo "release-build-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "release-build-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift build -c release" @@ -161,7 +161,7 @@ jobs: name: Release builds needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Release builds" matrix_string: '${{ needs.construct-matrix.outputs.release-build-matrix }}' diff --git a/.github/workflows/static_sdk.yml b/.github/workflows/static_sdk.yml index 96e57e3e34..cae0205f22 100644 --- a/.github/workflows/static_sdk.yml +++ b/.github/workflows/static_sdk.yml @@ -40,7 +40,7 @@ jobs: "platform":"Linux", "runner":"ubuntu-latest", "image":"ubuntu:jammy", - "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", + "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_VERSION=latest INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", "command":"swift build", "command_arguments":"--swift-sdk x86_64-swift-linux-musl", "env":'"$env_vars_json"' @@ -51,7 +51,7 @@ jobs: "platform":"Linux", "runner":"ubuntu-latest", "image":"ubuntu:jammy", - "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", + "setup_command":"apt update -q && apt install -y -q curl jq tar && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_swift_prerequisites.sh | bash && curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/install_static_sdk.sh | INSTALL_SWIFT_STATIC_SDK_BRANCH=main INSTALL_SWIFT_STATIC_SDK_ARCH=x86_64 bash && hash -r", "command":"swift build", "command_arguments":"--swift-sdk x86_64-swift-linux-musl", "env":'"$env_vars_json"' @@ -64,7 +64,7 @@ jobs: name: Static SDK needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Static SDK" matrix_string: '${{ needs.construct-matrix.outputs.static-sdk-matrix }}' diff --git a/.github/workflows/swift_load_test_matrix.yml b/.github/workflows/swift_load_test_matrix.yml index 12b2df5c12..9b7b53b7f2 100644 --- a/.github/workflows/swift_load_test_matrix.yml +++ b/.github/workflows/swift_load_test_matrix.yml @@ -35,7 +35,7 @@ jobs: name: Execute matrix needs: load-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: ${{ inputs.name }} matrix_string: '${{ needs.load-matrix.outputs.swift-matrix }}' diff --git a/.github/workflows/swift_matrix.yml b/.github/workflows/swift_matrix.yml index 7dbf561c51..90cade7613 100644 --- a/.github/workflows/swift_matrix.yml +++ b/.github/workflows/swift_matrix.yml @@ -165,7 +165,7 @@ jobs: COMMAND_OVERRIDE_NIGHTLY_MAIN: ${{ inputs.matrix_linux_nightly_main_command_override }} run: | apt-get -qq update && apt-get -qq -y install curl - curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/check-matrix-job.sh | bash + curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-matrix-job.sh | bash windows: name: Windows (${{ matrix.swift.swift_version }}) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 09fd52b766..e9874b6e49 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -171,7 +171,7 @@ jobs: fi # Generate matrix - echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/matrix_custom_env_vars/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" + echo "unit-test-matrix=$(curl -s --retry 3 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/generate_matrix.sh | MATRIX_LINUX_ENV_VARS_JSON="${linux_env_vars_json}" MATRIX_WINDOWS_ENV_VARS_JSON="${windows_env_vars_json}" bash)" >> "$GITHUB_OUTPUT" env: MATRIX_LINUX_SETUP_COMMAND: "swift --version" MATRIX_LINUX_COMMAND: "swift test" @@ -205,7 +205,7 @@ jobs: name: Unit tests needs: construct-matrix # Workaround https://github.com/nektos/act/issues/1875 - uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@matrix_custom_env_vars + uses: apple/swift-nio/.github/workflows/swift_test_matrix.yml@main with: name: "Unit tests" matrix_string: '${{ needs.construct-matrix.outputs.unit-test-matrix }}'