Add CZitiTests unit test target with CI integration #690
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - alpha | |
| pull_request: | |
| branches: | |
| - main | |
| - alpha | |
| permissions: | |
| contents: write | |
| jobs: | |
| build-tsdk: | |
| runs-on: macos-15 | |
| strategy: | |
| matrix: | |
| spec: | |
| - { name: 'build-iphoneos-arm64', toolchain: 'iOS-arm64' } | |
| - { name: 'build-iphonesimulator-x86_64', toolchain: 'iOS-Simulator-x86_64' } | |
| - { name: 'build-iphonesimulator-arm64', toolchain: 'iOS-Simulator-arm64' } | |
| - { name: 'build-macosx-arm64', toolchain: 'macOS-arm64' } | |
| - { name: 'build-macosx-x86_64', toolchain: 'macOS-x86_64' } | |
| steps: | |
| - name: Checkout Project | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: '26.2' | |
| - name: macOS tools | |
| if: runner.os == 'macOS' | |
| shell: bash | |
| run: brew install autoconf autoconf-archive automake libtool pkg-config | |
| - uses: lukka/run-vcpkg@v11 | |
| with: | |
| vcpkgJsonGlob: './deps/ziti-tunnel-sdk-c/vcpkg.json' | |
| - name: get vcpkg cache key | |
| id: get_vcpkg_cache_key | |
| shell: bash | |
| env: | |
| KEY_PREFIX: vcpkg_cache-${{ matrix.spec.toolchain }} | |
| run: | | |
| common_key="${KEY_PREFIX}-vcpkg_json_md5=$(md5sum ./deps/ziti-tunnel-sdk-c/vcpkg.json | awk '{ print $1 }')" | |
| echo "key=${common_key}-ImageVersion=${ImageVersion}" | tee -a $GITHUB_OUTPUT | |
| - uses: actions/cache@v5 | |
| with: | |
| key: ${{ steps.get_vcpkg_cache_key.outputs.key }} | |
| path: ./deps/ziti-tunnel-sdk-c/${{ matrix.spec.toolchain }}/vcpkg_cache | |
| - name: ${{ matrix.spec.name }} | |
| env: | |
| TOOLCHAIN: ${{ matrix.spec.toolchain && format('../../toolchains/{0}.cmake', matrix.spec.toolchain) || '' }} | |
| VCPKG_BINARY_SOURCES: "clear;files,/Users/runner/work/ziti-sdk-swift/ziti-sdk-swift/deps/ziti-tunnel-sdk-c/${{ matrix.spec.toolchain }}/vcpkg_cache,readwrite" | |
| run: | | |
| (cd deps/ziti-tunnel-sdk-c && git fetch --tags) | |
| cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DTLSUV_TLSLIB=openssl -DEXCLUDE_PROGRAMS=ON -DVCPKG_INSTALL_OPTIONS="--overlay-ports=./deps/vcpkg-overlays/json-c" -DZITI_TUNNEL_BUILD_TESTS=OFF -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN}" -S ./deps/ziti-tunnel-sdk-c -B ./deps/ziti-tunnel-sdk-c/${{ matrix.spec.name }} | |
| cmake --build ./deps/ziti-tunnel-sdk-c/${{ matrix.spec.name }} | |
| tar -cvzf ${{ matrix.spec.name }}.tgz -C ./deps/ziti-tunnel-sdk-c ${{ matrix.spec.name }} | |
| - name: Upload Build | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.spec.name }} | |
| path: ${{ matrix.spec.name }}.tgz | |
| build-cziti: | |
| runs-on: macos-15 | |
| needs: [ build-tsdk ] | |
| steps: | |
| - name: Checkout Project | |
| uses: actions/checkout@v3 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: '26.2' | |
| - name: Download Artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Extract TSDK Builds | |
| run: | | |
| ARTIFACT="build-iphoneos-arm64"; tar -xzvf ${ARTIFACT}/${ARTIFACT}.tgz -C ./deps/ziti-tunnel-sdk-c | |
| ARTIFACT="build-iphonesimulator-x86_64"; tar -xzvf ${ARTIFACT}/${ARTIFACT}.tgz -C ./deps/ziti-tunnel-sdk-c | |
| ARTIFACT="build-iphonesimulator-arm64"; tar -xzvf ${ARTIFACT}/${ARTIFACT}.tgz -C ./deps/ziti-tunnel-sdk-c | |
| ARTIFACT="build-macosx-x86_64"; tar -xzvf ${ARTIFACT}/${ARTIFACT}.tgz -C ./deps/ziti-tunnel-sdk-c | |
| ARTIFACT="build-macosx-arm64"; tar -xzvf ${ARTIFACT}/${ARTIFACT}.tgz -C ./deps/ziti-tunnel-sdk-c | |
| - name: Build CZiti | |
| run: | | |
| set -o pipefail | |
| xcodebuild build -configuration Release -scheme CZiti-iOS -derivedDataPath ./DerivedData/CZiti \ | |
| -arch arm64 -sdk iphoneos | xcpretty | |
| xcodebuild build -configuration Release -scheme CZiti-iOS -derivedDataPath ./DerivedData/CZiti \ | |
| -arch x86_64 -arch arm64 ONLY_ACTIVE_ARCH=NO -sdk iphonesimulator | xcpretty | |
| xcodebuild build -configuration Release -scheme CZiti-macOS -derivedDataPath ./DerivedData/CZiti \ | |
| -arch x86_64 -arch arm64 ONLY_ACTIVE_ARCH=NO -sdk macosx | xcpretty | |
| - name: Run Tests | |
| run: | | |
| set -o pipefail | |
| xcodebuild test -scheme CZitiTests -derivedDataPath ./DerivedData/CZiti \ | |
| -sdk macosx -destination 'platform=macOS' ONLY_ACTIVE_ARCH=YES | xcpretty | |
| # Builds the integration test tool to catch compile regressions. End-to-end | |
| # execution against `ziti edge quickstart` is deferred until the macOS data | |
| # protection keychain / entitlement issue is resolved (see ziti-test-runner/main.swift). | |
| - name: Build ziti-test-runner | |
| run: | | |
| set -o pipefail | |
| xcodebuild build -configuration Debug -scheme ziti-test-runner \ | |
| -derivedDataPath ./DerivedData/CZiti -sdk macosx \ | |
| -destination 'platform=macOS' ONLY_ACTIVE_ARCH=YES \ | |
| CODE_SIGNING_ALLOWED=NO | xcpretty | |
| - name: Create Frameworks | |
| run: | | |
| ./make_dist.sh | |
| pushd ./dist && zip -r ../CZiti.xcframework.zip CZiti.xcframework && popd | |
| - name: Upload CZiti.xcframework | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: CZiti.xcframework | |
| path: CZiti.xcframework.zip | |
| - name: Gen Docs | |
| run: | | |
| gem install jazzy | |
| jazzy --hide-documentation-coverage -x '-arch,x86_64,-scheme,CZiti-macOS,-sdk,macosx' -m CZiti | |
| tar -cvzf ./ziti-sdk-swift-docs.tgz -C ./docs . | |
| - name: Upload Docs | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ziti-sdk-swift-docs | |
| path: ziti-sdk-swift-docs.tgz | |
| draft-release: | |
| runs-on: ubuntu-latest | |
| needs: [ build-cziti ] | |
| if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/alpha') | |
| steps: | |
| - name: Checkout Project | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Download Docs | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ziti-sdk-swift-docs | |
| - name: Download CZiti.xcframework | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: CZiti.xcframework | |
| - name: Draft Release | |
| id: release_drafter | |
| uses: release-drafter/release-drafter@v5 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Upload Docs | |
| uses: shogo82148/actions-upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| upload_url: ${{ steps.release_drafter.outputs.upload_url }} | |
| asset_path: ./ziti-sdk-swift-docs.tgz | |
| asset_name: ziti-sdk-swift-docs.tgz | |
| asset_content_type: application/tgz | |
| overwrite: true | |
| - name: Upload CZiti.xcframework | |
| uses: shogo82148/actions-upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| upload_url: ${{ steps.release_drafter.outputs.upload_url }} | |
| asset_path: ./CZiti.xcframework.zip | |
| asset_name: CZiti.xcframework.zip | |
| asset_content_type: application/zip | |
| overwrite: true |