diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml new file mode 100644 index 0000000000..3c1b501ad2 --- /dev/null +++ b/.github/workflows/benchmarks.yml @@ -0,0 +1,45 @@ +name: Benchmarks + +on: + workflow_call: + inputs: + benchmark_package_path: + type: string + description: "Path to the directory containing the benchmarking package. Defaults to ." + default: "." + swift_package_arguments: + type: string + description: "Arguments to the switch package command invocation e.g. `--disable-sandbox`" + linux_5_8_enabled: + type: boolean + description: "Boolean to enable the Linux 5.8 Swift version matrix job. Defaults to true." + default: true + linux_5_9_enabled: + type: boolean + description: "Boolean to enable the Linux 5.9 Swift version matrix job. Defaults to true." + default: true + linux_5_10_enabled: + type: boolean + description: "Boolean to enable the Linux 5.10 Swift version matrix job. Defaults to true." + default: true + linux_nightly_6_0_enabled: + type: boolean + description: "Boolean to enable the Linux nightly 6.0 Swift version matrix job. Defaults to true." + default: true + linux_nightly_main_enabled: + type: boolean + description: "Boolean to enable the Linux nightly main Swift version matrix job. Defaults to true." + default: true + +jobs: + benchmarks: + name: Benchmarks + uses: ./.github/workflows/swift_matrix.yml + with: + name: "Benchmarks" + matrix_linux_command: "apt-get update -y -q && apt-get install -y -q libjemalloc-dev && swift package --package-path ${{ inputs.benchmark_package_path }} ${{ inputs.swift_package_arguments }} benchmark baseline check --check-absolute-path ${{ inputs.benchmark_package_path }}/Thresholds/${SWIFT_VERSION}/" + matrix_linux_5_8_enabled: ${{ inputs.linux_5_8_enabled }} + matrix_linux_5_9_enabled: ${{ inputs.linux_5_9_enabled }} + matrix_linux_5_10_enabled: ${{ inputs.linux_5_10_enabled }} + matrix_linux_nightly_6_0_enabled: ${{ inputs.linux_nightly_6_0_enabled }} + matrix_linux_nightly_main_enabled: ${{ inputs.linux_nightly_main_enabled }} \ No newline at end of file diff --git a/.github/workflows/cxx_interop.yml b/.github/workflows/cxx_interop.yml new file mode 100644 index 0000000000..af4d7b004e --- /dev/null +++ b/.github/workflows/cxx_interop.yml @@ -0,0 +1,38 @@ +name: Cxx interop + +on: + workflow_call: + inputs: + linux_5_8_enabled: + type: boolean + description: "Boolean to enable the Linux 5.8 Swift version matrix job. Defaults to true." + default: true + linux_5_9_enabled: + type: boolean + description: "Boolean to enable the Linux 5.9 Swift version matrix job. Defaults to true." + default: true + linux_5_10_enabled: + type: boolean + description: "Boolean to enable the Linux 5.10 Swift version matrix job. Defaults to true." + default: true + linux_nightly_6_0_enabled: + type: boolean + description: "Boolean to enable the Linux nightly 6.0 Swift version matrix job. Defaults to true." + default: true + linux_nightly_main_enabled: + type: boolean + description: "Boolean to enable the Linux nightly main Swift version matrix job. Defaults to true." + default: true + +jobs: + cxx-interop: + name: Cxx interop + uses: ./.github/workflows/swift_matrix.yml + with: + name: "Cxx interop" + matrix_linux_command: "apt-get update -y -q && apt-get install -y -q jq && curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-cxx-interop-compatibility.sh | bash" + matrix_linux_5_8_enabled: ${{ inputs.linux_5_8_enabled }} + matrix_linux_5_9_enabled: ${{ inputs.linux_5_9_enabled }} + matrix_linux_5_10_enabled: ${{ inputs.linux_5_10_enabled }} + matrix_linux_nightly_6_0_enabled: ${{ inputs.linux_nightly_6_0_enabled }} + matrix_linux_nightly_main_enabled: ${{ inputs.linux_nightly_main_enabled }} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 1e95efced1..dc1b5f884d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,43 +1,39 @@ name: Pull Request on: - pull_request: - types: [opened, reopened, synchronize] + pull_request: + types: [opened, reopened, synchronize] jobs: - call-pull-request-soundness-workflow: - name: Soundness - uses: ./.github/workflows/pull_request_soundness.yml - with: - license_header_check_project_name: "SwiftNIO" + soundness: + name: Soundness + uses: ./.github/workflows/soundness.yml + with: + license_header_check_project_name: "SwiftNIO" - call-pull-request-unit-tests-workflow: - name: Unit tests - uses: ./.github/workflows/pull_request_swift_matrix.yml - with: - name: "Unit tests" - matrix_linux_command: "swift test -Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" - # Disable warnings as errors: Swift 6 emits sendability warnings that haven't been dealt with yet. - matrix_linux_nightly_main_command_override: "swift test --explicit-target-dependency-import-check error" - matrix_linux_nightly_6_0_command_override: "swift test --explicit-target-dependency-import-check error" + unit-tests: + name: Checks + uses: ./.github/workflows/unit_tests.yml + with: + linux_5_8_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" + linux_5_9_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" + linux_5_10_arguments_override: "-Xswiftc -warnings-as-errors --explicit-target-dependency-import-check error" + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" - call-pull-request-benchmark-workflow: - name: Benchmarks - uses: ./.github/workflows/pull_request_swift_matrix.yml - with: - name: "Benchmarks" - matrix_linux_command: "apt-get update -y -q && apt-get install -y -q libjemalloc-dev && swift package --package-path Benchmarks/ --disable-sandbox benchmark baseline check --check-absolute-path Benchmarks/Thresholds/${SWIFT_VERSION}/" + benchmarks: + name: Checks + uses: ./.github/workflows/benchmarks.yml + with: + benchmark_package_path: "Benchmarks" - call-pull-request-cxx-interop-workflow: - name: Cxx interop - uses: ./.github/workflows/pull_request_swift_matrix.yml - with: - name: "Cxx interop" - matrix_linux_command: "apt-get update -y -q && apt-get install -y -q jq && ./scripts/check-cxx-interop-compatibility.sh" + cxx-interop: + name: Checks + uses: ./.github/workflows/cxx_interop.yml - call-pull-request-integration-tests-workflow: - name: Integration tests - uses: ./.github/workflows/pull_request_swift_matrix.yml - with: - name: "Integration tests" - matrix_linux_command: "apt-get update -y -q && apt-get install -y -q lsof dnsutils netcat-openbsd net-tools curl jq && ./scripts/integration_tests.sh" + integration-tests: + name: Checks / Integration Tests + uses: ./.github/workflows/swift_matrix.yml + with: + name: "Integration tests" + matrix_linux_command: "apt-get update -y -q && apt-get install -y -q lsof dnsutils netcat-openbsd net-tools curl jq && ./scripts/integration_tests.sh" diff --git a/.github/workflows/pull_request_soundness.yml b/.github/workflows/soundness.yml similarity index 99% rename from .github/workflows/pull_request_soundness.yml rename to .github/workflows/soundness.yml index f0cccd88c2..62d750a4fe 100644 --- a/.github/workflows/pull_request_soundness.yml +++ b/.github/workflows/soundness.yml @@ -1,4 +1,4 @@ -name: Pull Request +name: Soundness on: workflow_call: diff --git a/.github/workflows/pull_request_swift_matrix.yml b/.github/workflows/swift_matrix.yml similarity index 98% rename from .github/workflows/pull_request_swift_matrix.yml rename to .github/workflows/swift_matrix.yml index 012e535fde..85b666041f 100644 --- a/.github/workflows/pull_request_swift_matrix.yml +++ b/.github/workflows/swift_matrix.yml @@ -93,4 +93,4 @@ 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 https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-matrix-job.sh | bash \ No newline at end of file + curl -s https://raw.githubusercontent.com/apple/swift-nio/main/scripts/check-matrix-job.sh | bash diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml new file mode 100644 index 0000000000..c39038cdb8 --- /dev/null +++ b/.github/workflows/unit_tests.yml @@ -0,0 +1,63 @@ +name: Unit tests + +on: + workflow_call: + inputs: + linux_5_8_enabled: + type: boolean + description: "Boolean to enable the Linux 5.8 Swift version matrix job. Defaults to true." + default: true + linux_5_8_arguments_override: + type: string + description: "The arguments passed to swift test in the Linux 5.8 Swift version matrix job." + default: "" + linux_5_9_enabled: + type: boolean + description: "Boolean to enable the Linux 5.9 Swift version matrix job. Defaults to true." + default: true + linux_5_9_arguments_override: + type: string + description: "The arguments passed to swift test 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 test in the Linux 5.10 Swift version matrix job." + default: "" + linux_nightly_6_0_enabled: + type: boolean + description: "Boolean to enable the Linux nightly 6.0 Swift version matrix job. Defaults to true." + default: true + linux_nightly_6_0_arguments_override: + type: string + description: "The arguments passed to swift test in the Linux nightly 6.0 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 test in the Linux nightly main Swift version matrix job." + default: "" + +jobs: + unit-tests: + name: Unit tests + uses: ./.github/workflows/swift_matrix.yml + with: + name: "Unit tests" + matrix_linux_command: "swift test" + matrix_linux_5_8_enabled: ${{ inputs.linux_5_8_enabled }} + matrix_linux_5_8_command_override: "swift test ${{ inputs.linux_5_8_arguments_override }}" + matrix_linux_5_9_enabled: ${{ inputs.linux_5_9_enabled }} + matrix_linux_5_9_command_override: "swift test ${{ inputs.linux_5_9_arguments_override }}" + matrix_linux_5_10_enabled: ${{ inputs.linux_5_10_enabled }} + matrix_linux_5_10_command_override: "swift test ${{ inputs.linux_5_10_arguments_override }}" + matrix_linux_nightly_6_0_enabled: ${{ inputs.linux_nightly_6_0_enabled }} + matrix_linux_nightly_6_0_command_override: "swift test ${{ inputs.linux_nightly_6_0_arguments_override }}" + matrix_linux_nightly_main_enabled: ${{ inputs.linux_nightly_main_enabled }} + matrix_linux_nightly_main_command_override: "swift test ${{ inputs.linux_nightly_main_arguments_override }}"