From 3eae575304c5b848e7d8bb1c8286e32c93691dd7 Mon Sep 17 00:00:00 2001 From: Raphael Hiesgen Date: Tue, 29 Jul 2025 18:06:49 +0100 Subject: [PATCH 1/5] Enable release mode builds ### Motivation: Some errors do not show up in debug builds. Enabling release mode builds improves the CI coverage. ### Modifications: Enable release mode builds for pull requests and scheduled builds on main. ### Result: Improved CI coverage. --- .github/workflows/main.yml | 4 ++++ .github/workflows/pull_request.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e1f4b84e..6b08972f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,3 +16,7 @@ jobs: linux_6_1_arguments_override: "--explicit-target-dependency-import-check error" linux_nightly_next_arguments_override: "--explicit-target-dependency-import-check error" linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" + + release-builds: + name: Release builds + 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 7a589101..59ec115e 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -45,3 +45,7 @@ jobs: with: name: "Cxx interop" matrix_string: '${{ needs.construct-cxx-matrix.outputs.cxx-interop-matrix }}' + + release-builds: + name: Release builds + uses: apple/swift-nio/.github/workflows/release_builds.yml@main From eafe45a297a43496c0b7f45301e2b499e5454f88 Mon Sep 17 00:00:00 2001 From: Raphael Hiesgen Date: Wed, 30 Jul 2025 09:55:39 +0100 Subject: [PATCH 2/5] Use local workflow file --- .github/workflows/pull_request.yml | 2 +- .github/workflows/release_builds.yml | 117 +++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release_builds.yml diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 59ec115e..01f52213 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -48,4 +48,4 @@ jobs: release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@main + uses: ./.github/workflows/release_builds.yml diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml new file mode 100644 index 00000000..2b10dc7e --- /dev/null +++ b/.github/workflows/release_builds.yml @@ -0,0 +1,117 @@ +name: Release builds + +on: + workflow_call: + inputs: + linux_5_9_enabled: + type: boolean + description: "Boolean to enable the Linux 5.9 Swift version matrix job. Defaults to false." + default: false + linux_5_9_arguments_override: + type: string + description: "The arguments passed to swift build in the Linux 5.9 Swift version matrix job." + default: "" + linux_5_10_enabled: + type: boolean + description: "Boolean to enable the Linux 5.10 Swift version matrix job. Defaults to true." + default: true + linux_5_10_arguments_override: + type: string + description: "The arguments passed to swift build in the Linux 5.10 Swift version matrix job." + default: "" + linux_6_0_enabled: + type: boolean + description: "Boolean to enable the Linux 6.0 Swift version matrix job. Defaults to true." + default: true + linux_6_0_arguments_override: + type: string + description: "The arguments passed to swift build in the Linux 6.0 Swift version matrix job." + default: "" + linux_6_1_enabled: + type: boolean + description: "Boolean to enable the Linux 6.1 Swift version matrix job. Defaults to true." + default: true + linux_6_1_arguments_override: + type: string + description: "The arguments passed to swift build in the Linux 6.1 Swift version matrix job." + default: "" + linux_nightly_next_enabled: + type: boolean + description: "Boolean to enable the Linux nightly next Swift version matrix job. Defaults to true." + default: true + linux_nightly_next_arguments_override: + type: string + description: "The arguments passed to swift build in the Linux nightly next Swift version matrix job." + default: "" + linux_nightly_main_enabled: + type: boolean + description: "Boolean to enable the Linux nightly main Swift version matrix job. Defaults to true." + default: true + linux_nightly_main_arguments_override: + type: string + description: "The arguments passed to swift build in the Linux nightly main Swift version matrix job." + default: "" + +jobs: + release-builds + name: Release builds (${{ matrix.swift.swift_version }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + # We are specifying only the major and minor of the docker images to automatically pick up the latest patch release + swift: + - image: "swift:5.9-jammy" + swift_version: "5.9" + enabled: ${{ inputs.linux_5_9_enabled }} + - image: "swift:5.10-jammy" + swift_version: "5.10" + enabled: ${{ inputs.linux_5_10_enabled }} + - image: "swift:6.0-jammy" + swift_version: "6.0" + enabled: ${{ inputs.linux_6_0_enabled }} + - image: "swift:6.1-jammy" + swift_version: "6.1" + enabled: ${{ inputs.linux_6_1_enabled }} + - image: "swiftlang/swift:nightly-6.1-jammy" + swift_version: "nightly-6.1" + enabled: ${{ inputs.linux_nightly_next_enabled }} + - image: "swiftlang/swift:nightly-main-jammy" + swift_version: "nightly-main" + enabled: ${{ inputs.linux_nightly_main_enabled }} + steps: + - name: Checkout repository + if: ${{ matrix.swift.enabled }} + uses: actions/checkout@v4 + with: + persist-credentials: false + submodules: true + - name: Mark the workspace as safe + if: ${{ matrix.swift.enabled }} + # https://github.com/actions/checkout/issues/766 + run: git config --global --add safe.directory ${GITHUB_WORKSPACE} + - name: Run matrix job + if: ${{ matrix.swift.enabled }} + env: + SWIFT_VERSION: ${{ matrix.swift.swift_version }} + COMMAND: "swift build -c release" + COMMAND_OVERRIDE_5_9: "swift build -c release ${{ inputs.linux_5_9_arguments_override }}" + COMMAND_OVERRIDE_5_10: "swift build -c release ${{ inputs.linux_5_10_arguments_override }}" + COMMAND_OVERRIDE_6_0: "swift build -c release ${{ inputs.linux_6_0_arguments_override }}" + COMMAND_OVERRIDE_6_1: "swift build -c release ${{ inputs.linux_6_1_arguments_override }}" + COMMAND_OVERRIDE_NIGHTLY_NEXT: "swift build -c release ${{ inputs.linux_nightly_next_arguments_override }}" + COMMAND_OVERRIDE_NIGHTLY_MAIN: "swift build -c release ${{ inputs.linux_nightly_main_arguments_override }}" + run: | + apt-get -qq update && apt-get -qq -y install curl && apt-get -y install libsasl2-dev libssl-dev + curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-matrix-job.sh | bash + container: + image: ${{ matrix.swift.image }} + services: + zookeeper: + image: ubuntu/zookeeper + kafka: + image: ubuntu/kafka + env: + ZOOKEEPER_HOST: zookeeper + env: + KAFKA_HOST: kafka From 9ae85748a3552cc225210cd2d0d6e983b3031e4e Mon Sep 17 00:00:00 2001 From: Raphael Hiesgen Date: Wed, 30 Jul 2025 09:57:58 +0100 Subject: [PATCH 3/5] Add missing colon --- .github/workflows/release_builds.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 2b10dc7e..db6b19f3 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -53,7 +53,7 @@ on: default: "" jobs: - release-builds + release-builds: name: Release builds (${{ matrix.swift.swift_version }}) runs-on: ubuntu-latest strategy: From f7ec9e05f64b580e02e368c1e92ceeb9eed1efac Mon Sep 17 00:00:00 2001 From: Raphael Hiesgen Date: Wed, 30 Jul 2025 10:55:26 +0100 Subject: [PATCH 4/5] Remove services (probably used for tests) --- .github/workflows/release_builds.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index db6b19f3..29d09f05 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -106,12 +106,3 @@ jobs: curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-matrix-job.sh | bash container: image: ${{ matrix.swift.image }} - services: - zookeeper: - image: ubuntu/zookeeper - kafka: - image: ubuntu/kafka - env: - ZOOKEEPER_HOST: zookeeper - env: - KAFKA_HOST: kafka From 7021cfc011210129f0672ee27414b52c9c83c348 Mon Sep 17 00:00:00 2001 From: Raphael Hiesgen Date: Wed, 30 Jul 2025 11:24:53 +0100 Subject: [PATCH 5/5] Use local file for scheduled builds as well --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6b08972f..b8cddb9b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,4 +19,4 @@ jobs: release-builds: name: Release builds - uses: apple/swift-nio/.github/workflows/release_builds.yml@main + uses: ./.github/workflows/release_builds.yml