From 8e5c7746dc8629f758ab8fa8b8c757472b66d849 Mon Sep 17 00:00:00 2001 From: Leo Dion Date: Mon, 18 Mar 2024 22:40:19 -0400 Subject: [PATCH] updating github actions --- .github/workflows/SimulatorServices.yml | 92 +++++++++++-------------- 1 file changed, 41 insertions(+), 51 deletions(-) diff --git a/.github/workflows/SimulatorServices.yml b/.github/workflows/SimulatorServices.yml index 7b05afe..3b8976d 100644 --- a/.github/workflows/SimulatorServices.yml +++ b/.github/workflows/SimulatorServices.yml @@ -3,10 +3,12 @@ on: push: branches-ignore: - '*WIP' + jobs: build-ubuntu: name: Build on Ubuntu env: + PACKAGE_NAME: SimulatorServices SWIFT_VER: ${{ matrix.swift-version }} runs-on: ${{ matrix.runs-on }} if: "!contains(github.event.head_commit.message, 'ci skip')" @@ -15,19 +17,18 @@ jobs: runs-on: [ubuntu-20.04, ubuntu-22.04] swift-version: [5.9, "5.10"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache swift package modules id: cache-spm-linux - uses: actions/cache@v3 + uses: actions/cache@v4 env: - cache-name: cache-spm + cache-name: SPM with: path: .build - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Package.resolved') }} + key: ${{ env.cache-name }}-${{ runner.os }}-${{ env.SWIFT_VER }}-${{ hashFiles('Package.resolved') }}-${{ env.RELEASE_DOT }} restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ env.cache-name }}-${{ runner.os }}-${{ env.SWIFT_VER }}-${{ hashFiles('Package.resolved') }} + ${{ env.cache-name }}-${{ runner.os }}-${{ env.SWIFT_VER }} - name: Set Ubuntu Release DOT run: echo "RELEASE_DOT=$(lsb_release -sr)" >> $GITHUB_ENV - name: Set Ubuntu Release NUM @@ -36,16 +37,12 @@ jobs: run: echo "RELEASE_NAME=$(lsb_release -sc)" >> $GITHUB_ENV - name: Cache swift id: cache-swift-linux - uses: actions/cache@v3 + uses: actions/cache@v4 env: - cache-name: cache-swift + cache-name: swift with: path: swift-${{ env.SWIFT_VER }}-RELEASE-ubuntu${{ env.RELEASE_DOT }} - key: ${{ runner.os }}-${{ env.RELEASE_DOT }}-${{ env.cache-name }}-${{ env.SWIFT_VER }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + key: ${{ env.cache-name }}-${{ runner.os }}-${{ env.SWIFT_VER }}-${{ env.RELEASE_DOT }} - name: Download Swift if: steps.cache-swift-linux.outputs.cache-hit != 'true' run: curl -O https://download.swift.org/swift-${SWIFT_VER}-release/ubuntu${RELEASE_NUM}/swift-${SWIFT_VER}-RELEASE/swift-${SWIFT_VER}-RELEASE-ubuntu${RELEASE_DOT}.tar.gz @@ -58,17 +55,18 @@ jobs: run: swift build - name: Test run: swift test --enable-code-coverage - - uses: sersoft-gmbh/swift-coverage-action@v3 + - uses: sersoft-gmbh/swift-coverage-action@v4 with: fail-on-empty-output: true - - name: Upload package coverage to Codecov + - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 with: - fail_ci_if_error: true - flags: spm,swift-${{ matrix.swift-version }} token: ${{ secrets.CODECOV_TOKEN }} + flags: spm,${{ env.RELEASE_NAME }},${{ env.SWIFT_VER }} build-macos: name: Build on macOS + env: + PACKAGE_NAME: SimulatorServices runs-on: ${{ matrix.runs-on }} if: "!contains(github.event.head_commit.message, 'ci skip')" strategy: @@ -79,16 +77,18 @@ jobs: iOSVersion: "17.0" watchOSVersion: "10.0" watchName: "Apple Watch Series 9 (41mm)" + iPhoneName: "iPhone 15" - runs-on: macos-14 xcode: "/Applications/Xcode_15.2.app" iOSVersion: "17.2" watchOSVersion: "10.2" watchName: "Apple Watch Ultra 2 (49mm)" + iPhoneName: "iPhone 15 Pro Max" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache swift package modules id: cache-spm-macos - uses: actions/cache@v3 + uses: actions/cache@v4 env: cache-name: cache-spm with: @@ -99,9 +99,9 @@ jobs: ${{ runner.os }}-build- ${{ runner.os }}- - name: Cache mint - if: startsWith(matrix.xcode,'/Applications/Xcode_14.1') + if: ${{ github.event_name == 'pull_request' && ( github.base_ref == 'main' || endsWith( github.ref_name , 'Prep') ) && matrix.xcode == '/Applications/Xcode_15.2.app' }} id: cache-mint - uses: actions/cache@v3 + uses: actions/cache@v4 env: cache-name: cache-mint with: @@ -116,47 +116,37 @@ jobs: - name: Setup Xcode run: sudo xcode-select -s ${{ matrix.xcode }}/Contents/Developer - name: Install mint - if: startsWith(matrix.xcode,'/Applications/Xcode_14.1') + if: ${{ github.event_name == 'pull_request' && ( github.base_ref == 'main' || endsWith( github.ref_name , 'Prep') ) && matrix.xcode == '/Applications/Xcode_15.2.app' }} run: | brew update brew install mint - name: Build run: swift build - - name: Test + - name: Run Swift Package tests run: swift test --enable-code-coverage - - uses: sersoft-gmbh/swift-coverage-action@v3 + - uses: sersoft-gmbh/swift-coverage-action@v4 with: fail-on-empty-output: true - - name: Upload package coverage to Codecov - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true - flags: spm,swift-${{ matrix.swift-version }} - token: ${{ secrets.CODECOV_TOKEN }} + - name: Upload SPM to CodeCov.io + run: bash <(curl https://codecov.io/bash) -F spm -F macOS -F ${XCODE_NAME} + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + - name: Clean up spm build directory + run: rm -rf .build - name: Lint run: ./scripts/lint.sh - if: startsWith(matrix.xcode,'/Applications/Xcode_15.2') + if: ${{ github.event_name == 'pull_request' && ( github.base_ref == 'main' || endsWith( github.ref_name , 'Prep') ) && matrix.xcode == '/Applications/Xcode_15.2.app' }} - name: Run iOS target tests - run: xcodebuild build -scheme SimulatorServices -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13,OS=${{ matrix.iOSVersion }}' - - uses: sersoft-gmbh/swift-coverage-action@v3 - with: - fail-on-empty-output: true - - name: Upload iOS coverage to Codecov - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true - flags: iOS,iOS-${{ matrix.iOSVersion }} - token: ${{ secrets.CODECOV_TOKEN }} + run: xcodebuild test -scheme ${{ env.PACKAGE_NAME }} -sdk iphonesimulator -destination 'platform=iOS Simulator,name=${{ matrix.iPhoneName }},OS=${{ matrix.iOSVersion }}' -enableCodeCoverage YES build test + - uses: sersoft-gmbh/swift-coverage-action@v4 + - name: Upload coverage reports to Codecov + run: bash <(curl https://codecov.io/bash) -F spm -F ${{ matrix.iPhoneName }} -F ${{ matrix.iOSVersion }} -F ${XCODE_NAME} - name: Run watchOS target tests - run: xcodebuild build -scheme SimulatorServices -sdk watchsimulator -destination 'platform=watchOS Simulator,name=${{ matrix.watchName }},OS=${{ matrix.watchOSVersion }}' - - uses: sersoft-gmbh/swift-coverage-action@v3 + run: xcodebuild test -scheme ${{ env.PACKAGE_NAME }} -sdk watchsimulator -destination 'platform=watchOS Simulator,name=${{ matrix.watchName }},OS=${{ matrix.watchOSVersion }}' -enableCodeCoverage YES build test + - uses: sersoft-gmbh/swift-coverage-action@v4 with: fail-on-empty-output: true - - name: Upload watchOS coverage to Codecov - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true - flags: watchOS,watchOS${{ matrix.watchOSVersion }} - token: ${{ secrets.CODECOV_TOKEN }} + - name: Upload coverage reports to Codecov + run: bash <(curl https://codecov.io/bash) -F spm -F ${{ matrix.watchName }} -F ${{ matrix.watchOSVersion }} -F ${XCODE_NAME} - name: Test Again - run: swift test --enable-code-coverage + run: swift test