name: CI # Controls when the action will run. on: # Triggers the workflow on push or pull request events push: pull_request: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: build: strategy: matrix: include: - name: "MoltenVK (macOS)" platform: "macos" scheme: "MoltenVK Package (macOS only)" demos-scheme: "Cube-macOS" - name: "MoltenVK (iOS)" platform: "ios" scheme: "MoltenVK Package (iOS only)" demos-scheme: "" - name: "MoltenVK (tvOS)" platform: "tvos" scheme: "MoltenVK Package (tvOS only)" demos-scheme: "" fail-fast: false name: '${{ matrix.name }}' # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners#supported-runners-and-hardware-resources runs-on: macos-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - name: Select Xcode version # See: https://github.com/actions/virtual-environments/tree/main/images/macos run: sudo xcode-select -switch /Applications/Xcode_12.2.app/Contents/Developer - name: Prep id: prep run: | echo "Create Build Logs Dir" mkdir -p "${HOME}/build_logs" echo "Get Xcode version info" XCODE_VERSION="$(xcodebuild -version)" echo "${XCODE_VERSION}" XCODE_VERSION="$(echo "${XCODE_VERSION}" | tr '\t\r\n ' '_')" echo "${XCODE_VERSION}" echo "::set-output name=XCODE_VERSION::${XCODE_VERSION}" - name: Cache Dependencies id: cache-dependencies if: success() && !(github.event_name == 'push' && contains(github.ref, 'refs/tags/')) # never cache dependencies for pushed tags uses: actions/cache@v2 with: path: External/build/ key: ${{ runner.os }}-${{ steps.prep.outputs.XCODE_VERSION }}-${{ matrix.platform }}-${{ hashFiles('fetchDependencies','ExternalRevisions/**','ExternalDependencies.xcodeproj/**','Scripts/**') }} - name: Fetch Dependencies (Use Built Cache) if: steps.cache-dependencies.outputs.cache-hit == 'true' run: | ./fetchDependencies -v --no-parallel-build --none - name: Fetch Dependencies if: steps.cache-dependencies.outputs.cache-hit != 'true' run: | ./fetchDependencies -v --no-parallel-build --${{ matrix.platform }} - name: Build MoltenVK run: | set -o pipefail && xcodebuild build -project MoltenVKPackaging.xcodeproj -scheme "${{ matrix.scheme }}" | tee "${HOME}/build_logs/xcodebuild.log" | xcpretty -c - name: Output Build Logs on Failure if: failure() run: cat "${HOME}/build_logs/xcodebuild.log" - name: Build Demos if: success() && !(matrix.demos-scheme == '') run: | xcodebuild build -workspace Demos/Demos.xcworkspace -scheme "${{ matrix.demos-scheme }}" - name: Tar Artifacts # See: https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files run: tar -cvf "${{ matrix.platform }}.tar" Package/Release/ - name: Upload Artifacts uses: actions/upload-artifact@v2 with: name: ${{ matrix.platform }} path: "${{ matrix.platform }}.tar"