diff --git a/.github/workflows/docc_deploy.yml b/.github/workflows/docc_deploy.yml index 784c08b..08aacb6 100644 --- a/.github/workflows/docc_deploy.yml +++ b/.github/workflows/docc_deploy.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest container: - image: swift:6.2 + image: swift:6.3 steps: - name: Checkout repository @@ -36,7 +36,7 @@ jobs: REPOSITORY_NAME: ${{ github.event.repository.name }} run: | curl --fail --show-error --location --silent \ - https://raw.githubusercontent.com/BinaryBirds/github-workflows/refs/heads/main/scripts/generate-docc.sh \ + https://raw.githubusercontent.com/BinaryBirds/github-workflows/0.2.0/scripts/generate-docc.sh \ --output "$RUNNER_TEMP/generate-docc.sh" bash "$RUNNER_TEMP/generate-docc.sh" --name "$REPOSITORY_NAME" diff --git a/.github/workflows/extra_soundness.yml b/.github/workflows/extra_soundness.yml index 7283a35..059b0ea 100644 --- a/.github/workflows/extra_soundness.yml +++ b/.github/workflows/extra_soundness.yml @@ -22,7 +22,7 @@ on: run_tests_swift_versions: type: string description: "List of Swift versions to test with." - default: '["6.1", "6.2"]' + default: '["6.3", "6.4"]' swift_package_validation_enabled: type: boolean description: "Runs Swift package validation script (structure, settings, files). Defaults to false." diff --git a/README.md b/README.md index accd030..eb49dd6 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ This workflow provides Binary Birds-specific checks and testing alongside the st * **Optional Swift Headers Check**: Validates Swift source file headers using a strict 5-line format and respects `.swiftheaderignore`. * **Optional Swift Test Execution**: Runs tests with optional **`.build` caching** for efficiency. * **Optional Swift Package Validation**: Validates Swift package structure, settings, and conventions to ensure consistency. -* **Multi-Version Support**: Tests across multiple Swift versions, configurable via input (defaulting to `["6.0", "6.1"]`). +* **Multi-Version Support**: Tests across Swift 6.3 and newer, configurable via input (defaulting to `["6.3", "6.4"]`). * **SSH Support**: Includes steps to set up **SSH credentials** (via the `SSH_PRIVATE_KEY` secret) for projects relying on private Git dependencies. #### Workflow Inputs @@ -38,7 +38,7 @@ This workflow provides Binary Birds-specific checks and testing alongside the st | `headers_check_enabled` | Enables Swift headers validation | `false` | | `run_tests_with_cache_enabled` | Enables the Swift test job | `false` | | `tests_cache_enabled` | Enables `.build` cache restore/save in the Swift test job | `true` | -| `run_tests_swift_versions` | Swift versions to test | `["6.1","6.2"]` | +| `run_tests_swift_versions` | Swift versions to test (6.3 minimum) | `["6.3","6.4"]` | | `swift_package_validation_enabled` | Runs Swift package validation in the repository. | `false` | #### Example Usage (Caller Repository) @@ -52,7 +52,7 @@ jobs: headers_check_enabled: true run_tests_with_cache_enabled: true tests_cache_enabled: true - run_tests_swift_versions: '["6.1","6.2"]' + run_tests_swift_versions: '["6.3","6.4"]' swift_package_validation_enabled: true ``` @@ -60,7 +60,7 @@ jobs: This workflow handles the generation and deployment of DocC documentation: -* **Builds DocC Documentation**: Uses a Swift 6.2 Docker image to build the documentation. +* **Builds DocC Documentation**: Uses a Swift 6.3 Docker image to build the documentation. * **Deploys to GitHub Pages**: Uses `actions/deploy-pages@v6` to publish the results. * **Target Configuration**: Respects `.docctargetlist` if present. @@ -591,7 +591,7 @@ Validates Swift package structure and configuration to enforce project-wide conv #### Behavior * Verifies Package.swift presence and Swift tools version -* Ensures Swift tools version is 6.1 or newer +* Ensures Swift tools version is 6.3 or newer * Requires defaultSwiftSettings usage on all targets * Enforces presence of the NonisolatedNonsendingByDefault Swift 6 concurrency feature * Validates the package manifest and target Swift settings diff --git a/examples/tests.yml b/examples/tests.yml index 9b48e73..7c0c46f 100644 --- a/examples/tests.yml +++ b/examples/tests.yml @@ -28,8 +28,9 @@ jobs: uses: swiftlang/github-workflows/.github/workflows/swift_package_test.yml@main with: enable_windows_checks : false + macos_xcode_versions: '["swift_6.3", "swift_6.4"]' + linux_swift_versions: '["6.3", "6.4"]' linux_build_command: "swift test --parallel --enable-code-coverage" - linux_exclude_swift_versions: "[{\"swift_version\": \"5.8\"}, {\"swift_version\": \"5.9\"}, {\"swift_version\": \"5.10\"}, {\"swift_version\": \"nightly\"}, {\"swift_version\": \"nightly-main\"}, {\"swift_version\": \"nightly-6.0\"}, {\"swift_version\": \"nightly-6.1\"}, {\"swift_version\": \"nightly-6.3\"}]" # For larger projects, we recommend running tests with caching enabled bb_checks: @@ -40,4 +41,4 @@ jobs: run_tests_with_cache_enabled : true tests_cache_enabled : true headers_check_enabled : true - run_tests_swift_versions: '["6.1","6.2"]' + run_tests_swift_versions: '["6.3","6.4"]' diff --git a/examples/tests_private.yml b/examples/tests_private.yml index 2c9e964..6a84e32 100644 --- a/examples/tests_private.yml +++ b/examples/tests_private.yml @@ -33,12 +33,6 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-15] - include: - - os: ubuntu-latest - image: - - 'swift:6.0' - - os: macos-15 - image: '' runs-on: ${{ matrix.os }} steps: @@ -51,6 +45,11 @@ jobs: - name: Checkout uses: actions/checkout@v6 + - name: Set up Swift 6.3 + uses: swift-actions/setup-swift@v2 + with: + swift-version: '6.3' + - name: Run Swift Tests shell: bash run: | diff --git a/scripts/check-swift-package.sh b/scripts/check-swift-package.sh index b5c5cda..c7fe0c2 100755 --- a/scripts/check-swift-package.sh +++ b/scripts/check-swift-package.sh @@ -49,10 +49,10 @@ if [ -n "$TOOLS_LINE" ]; then major="$(printf "%s" "$TOOLS_VERSION" | cut -d. -f1)" minor="$(printf "%s" "$TOOLS_VERSION" | cut -d. -f2)" - if [ "$major" -lt 6 ] || { [ "$major" -eq 6 ] && [ "$minor" -lt 1 ]; }; then - error "❌ swift-tools-version too old ($TOOLS_VERSION), expected >= 6.1" + if [ "$major" -lt 6 ] || { [ "$major" -eq 6 ] && [ "$minor" -lt 3 ]; }; then + error "❌ swift-tools-version too old ($TOOLS_VERSION), expected >= 6.3" else - log "✅ swift-tools-version >= 6.1 ($TOOLS_VERSION)" + log "✅ swift-tools-version >= 6.3 ($TOOLS_VERSION)" fi else error "❌ swift-tools-version missing" diff --git a/tests/bats/check-local-swift-dependencies.bats b/tests/bats/check-local-swift-dependencies.bats index 6f0649d..afd55d3 100755 --- a/tests/bats/check-local-swift-dependencies.bats +++ b/tests/bats/check-local-swift-dependencies.bats @@ -7,7 +7,7 @@ load 'helpers/test_helper.bash' copy_script_into_repo "$repo" "check-local-swift-dependencies.sh" cat >"$repo/Package.swift" <<'SWIFT' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let package = Package( @@ -31,7 +31,7 @@ SWIFT copy_script_into_repo "$repo" "check-local-swift-dependencies.sh" cat >"$repo/Package.swift" <<'SWIFT' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let package = Package( @@ -55,7 +55,7 @@ SWIFT copy_script_into_repo "$repo" "check-local-swift-dependencies.sh" cat >"$repo/Package.swift" <<'SWIFT' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let package = Package( diff --git a/tests/bats/check-swift-headers.bats b/tests/bats/check-swift-headers.bats index 4337eb5..8133687 100755 --- a/tests/bats/check-swift-headers.bats +++ b/tests/bats/check-swift-headers.bats @@ -202,7 +202,7 @@ EOF2 @test "Package.swift is skipped even without header" { cat >"$TMPDIR/Package.swift" <<'EOF2' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let package = Package( diff --git a/tests/bats/check-swift-package.bats b/tests/bats/check-swift-package.bats index 0f0cfa2..1e898b6 100755 --- a/tests/bats/check-swift-package.bats +++ b/tests/bats/check-swift-package.bats @@ -27,7 +27,7 @@ EOF write_valid_package_swift() { local repo="$1" cat >"$repo/Package.swift" <<'EOF' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let defaultSwiftSettings: [SwiftSetting] = [ @@ -114,14 +114,14 @@ EOF [[ "$output" == *"Swift Package validation passed"* ]] } -@test "check-swift-package fails when swift-tools-version is below 6.1" { +@test "check-swift-package fails when swift-tools-version is below 6.3" { repo="$(make_temp_repo)" copy_script_into_repo "$repo" "check-swift-package.sh" setup_valid_swift_package_layout "$repo" write_valid_package_swift "$repo" install_swift_dump_stub_success "$repo" - sed -i.bak 's|// swift-tools-version: 6.1|// swift-tools-version: 5.9|' "$repo/Package.swift" + sed -i.bak 's|// swift-tools-version: 6.3|// swift-tools-version: 6.2|' "$repo/Package.swift" rm -f "$repo/Package.swift.bak" run bash -c "cd '$repo' && sh scripts/check-swift-package.sh" @@ -148,7 +148,7 @@ EOF copy_script_into_repo "$repo" "check-swift-package.sh" setup_valid_swift_package_layout "$repo" cat >"$repo/Package.swift" <<'EOF' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let defaultSwiftSettings: [SwiftSetting] = [ diff --git a/tests/bats/docc-scripts.bats b/tests/bats/docc-scripts.bats index c7cc757..fd670a4 100644 --- a/tests/bats/docc-scripts.bats +++ b/tests/bats/docc-scripts.bats @@ -7,7 +7,7 @@ load 'helpers/test_helper.bash' copy_script_into_repo "$repo" "generate-docc.sh" cat >"$repo/Package.swift" <<'SWIFT' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let package = Package( @@ -56,7 +56,7 @@ STUB copy_script_into_repo "$repo" "generate-docc.sh" cat >"$repo/Package.swift" <<'SWIFT' -// swift-tools-version: 6.1 +// swift-tools-version: 6.3 import PackageDescription let package = Package(