Skip to content

Test Bazel integration under Linux #1659

Test Bazel integration under Linux

Test Bazel integration under Linux #1659

Workflow file for this run

name: Test
on:
push:
branches:
- master
pull_request: {}
env:
MISE_EXPERIMENTAL: 1
swift_package_resolve: swift package resolve
swift_build: swift build
swift_test: swift test
periphery_scan: ./.build/debug/periphery scan --quiet --clean-build --strict
cache_version: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
lint:
runs-on: macos-26
name: Lint
steps:
- uses: actions/checkout@master
- uses: jdx/mise-action@v2
- run: mise run lint-ci
- name: Check generated Bazel rules
run: mise r gen-bazel-rules && git diff --quiet --exit-code
bazel:
name: Bazel (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [macOS, Linux]
include:
- os: macOS
runs-on: macos-26
baseline: bazel.json
- os: Linux
runs-on: ubuntu-latest
container: swift:latest
cc: clang
baseline: linux-bazel.json
runs-on: ${{ matrix.runs-on }}
container: ${{ matrix.container }}
env:
CC: ${{ matrix.cc }}
steps:
- uses: actions/checkout@master
- uses: bazel-contrib/[email protected]
with:
bazelisk-version: 1.x
bazelisk-cache: true
disk-cache: bazel-${{ matrix.os }}
repository-cache: true
- name: Scan
run: bazel run //:periphery -- scan --bazel --quiet --strict --baseline baselines/${{ matrix.baseline }} --format json
macOS:
name: macOS
strategy:
fail-fast: false
matrix:
step: ["main-snapshot", "6.3-snapshot", "26.2.0", "26.1.1", "26.0", "16.4"]
include:
- step: "main-snapshot"
xcode: "26.0"
swiftly: "main-snapshot"
continueOnError: true
macos: "macos-26"
- step: "6.3-snapshot"
xcode: "26.0"
swiftly: "6.3-snapshot"
continueOnError: true
macos: "macos-26"
- step: "26.2.0"
xcode: "26.2.0"
macos: "macos-26"
- step: "26.1.1"
xcode: "26.1.1"
macos: "macos-26"
- step: "26.0"
xcode: "26.0"
macos: "macos-26"
- step: "16.4"
xcode: "16.4"
macos: "macos-15"
runs-on: ${{ matrix.macos }}
continue-on-error: ${{ matrix.continueOnError == true }}
steps:
- uses: actions/checkout@master
- name: Select Xcode version
run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app
- name: Install Swiftly
if: ${{ matrix.swiftly }}
run: |
curl -O https://download.swift.org/swiftly/darwin/swiftly.pkg
installer -pkg swiftly.pkg -target CurrentUserHomeDirectory
~/.swiftly/bin/swiftly init --skip-install
. ~/.swiftly/env.sh
hash -r
echo "PATH=$PATH" >> "$GITHUB_ENV"
echo "SWIFTLY_HOME_DIR=$SWIFTLY_HOME_DIR" >> "$GITHUB_ENV"
echo "SWIFTLY_BIN_DIR=$SWIFTLY_BIN_DIR" >> "$GITHUB_ENV"
- name: Install Swift (Swiftly)
if: ${{ matrix.swiftly }}
run: swiftly install ${{ matrix.swiftly }} --use
- name: Get Swift Version
id: get-swift-version
run: |
swift_version=$(swift -version | head -n 1 | sed s/,//)
echo "$swift_version"
echo "SWIFT_VERSION=${swift_version}" >> "$GITHUB_ENV"
shell: bash
- name: Cache resolved dependencies
id: cache-resolved-dependencies
uses: actions/cache@v4
with:
path: |
.build
Package.resolved
key: ${{ runner.os }}-${{ matrix.xcode }}-${{ env.SWIFT_VERSION }}-${{ env.cache_version }}-spm-deps-${{ hashFiles('Package.swift', 'Package.resolved') }}
restore-keys: |
${{ runner.os }}-${{ matrix.xcode }}-${{ env.SWIFT_VERSION }}-${{ env.cache_version }}-spm-deps-
- name: Resolve dependencies
if: steps.cache-resolved-dependencies.outputs.cache-hit != 'true'
run: ${{ env.swift_package_resolve }}
- name: Build
run: ${{ env.swift_build }}
- name: Scan
run: ${{ env.periphery_scan }} ${{ matrix.baseline && format('--baseline baselines/{0}', matrix.baseline) || '' }}
- name: Test
run: ${{ env.swift_test }}
linux:
name: Linux
strategy:
fail-fast: false
matrix:
swift: ["nightly-main", "nightly-6.3", "6.2", "6.1"]
include:
- swift: "nightly-main"
container: "swiftlang/swift:nightly-main"
continueOnError: true
- swift: "nightly-6.3"
container: "swiftlang/swift:nightly-6.3-noble"
continueOnError: true
- swift: "6.2"
container: "swift:6.2"
- swift: "6.1"
container: "swift:6.1"
runs-on: ubuntu-latest
container: ${{ matrix.container }}
continue-on-error: ${{ matrix.continueOnError == true }}
steps:
- uses: actions/checkout@master
- name: Get Swift Version
id: get-swift-version
run: |
swift_version=$(swift -version | head -n 1 | sed s/,//)
echo "$swift_version"
echo "SWIFT_VERSION=${swift_version}" >> "$GITHUB_ENV"
shell: bash
- name: Cache resolved dependencies
id: cache-resolved-dependencies
uses: actions/cache@v4
with:
path: |
.build
Package.resolved
key: ${{ runner.os }}-${{ env.SWIFT_VERSION }}-${{ env.cache_version }}-spm-deps-${{ hashFiles('Package.swift', 'Package.resolved') }}
restore-keys: |
${{ runner.os }}-${{ env.SWIFT_VERSION }}-${{ env.cache_version }}-spm-deps-
- name: Resolve dependencies
if: steps.cache-resolved-dependencies.outputs.cache-hit != 'true'
run: ${{ env.swift_package_resolve }}
- name: Build
run: ${{ env.swift_build }}
- name: Scan
run: ${{ env.periphery_scan }} --baseline baselines/linux.json
- name: Test
run: ${{ env.swift_test }}