Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/docc_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest

container:
image: swift:6.2
image: swift:6.3

steps:
- name: Checkout repository
Expand All @@ -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"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/extra_soundness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -52,15 +52,15 @@ 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
```

### 2. DocC Deploy Workflow (`docc_deploy.yml`)

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.

Expand Down Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions examples/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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"]'
11 changes: 5 additions & 6 deletions examples/tests_private.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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: |
Expand Down
6 changes: 3 additions & 3 deletions scripts/check-swift-package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
6 changes: 3 additions & 3 deletions tests/bats/check-local-swift-dependencies.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand Down
2 changes: 1 addition & 1 deletion tests/bats/check-swift-headers.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
8 changes: 4 additions & 4 deletions tests/bats/check-swift-package.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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] = [
Expand Down Expand Up @@ -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"
Expand All @@ -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] = [
Expand Down
4 changes: 2 additions & 2 deletions tests/bats/docc-scripts.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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(
Expand Down
Loading