name: Pull Request SideStore build on: pull_request: # types: [opened, synchronize, reopened, ready_for_review, converted_to_draft] types: [opened, synchronize, reopened, ready_for_review] jobs: build: name: Build and upload SideStore if: ${{ github.event.pull_request.draft == false }} strategy: fail-fast: false matrix: include: - os: 'macos-14' version: '16.1' runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: recursive - name: Install dependencies run: brew install ldid - name: Install xcbeautify run: brew install xcbeautify - name: Add PR suffix to version run: sed -e "/MARKETING_VERSION = .*/s/\$/-pr.${{ github.event.pull_request.number }}+$(git rev-parse --short ${COMMIT:-HEAD})/" -i '' Build.xcconfig env: COMMIT: ${{ github.event.pull_request.head.sha }} - name: Get version id: version run: echo "version=$(grep MARKETING_VERSION Build.xcconfig | sed -e "s/MARKETING_VERSION = //g")" >> $GITHUB_OUTPUT - name: Echo version run: echo "${{ steps.version.outputs.version }}" - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1.6.0 with: xcode-version: ${{ matrix.version }} - name: Cache Build uses: irgaly/xcode-cache@v1 with: key: xcode-cache-deriveddata-${{ github.sha }} restore-keys: xcode-cache-deriveddata- swiftpm-cache-key: xcode-cache-sourcedata-${{ github.sha }} swiftpm-cache-restore-keys: | xcode-cache-sourcedata- - name: Restore Pods from Cache (Exact match) id: pods-restore uses: actions/cache/restore@v3 with: path: | ./Podfile.lock ./Pods/ ./AltStore.xcworkspace/ key: pods-cache-${{ hashFiles('Podfile') }} # restore-keys: | # commented out to strictly check cache for this particular podfile # pods-cache- - name: Restore Pods from Cache (Last Available) if: ${{ steps.pods-restore.outputs.cache-hit != 'true' }} id: pods-restore-recent uses: actions/cache/restore@v3 with: path: | ./Podfile.lock ./Pods/ ./AltStore.xcworkspace/ key: pods-cache- - name: Install CocoaPods # if: ${{ steps.pods-restore.outputs.cache-hit != 'true'}} id: pods-install run: | pod install - name: Save Pods to Cache id: save-pods if: ${{ steps.pods-restore.outputs.cache-hit != 'true' }} uses: actions/cache/save@v3 with: path: | ./Podfile.lock ./Pods/ ./AltStore.xcworkspace/ key: pods-cache-${{ hashFiles('Podfile') }} - name: List Files and derived data run: | echo ">>>>>>>>> Workdir <<<<<<<<<<" ls -la . echo "" echo ">>>>>>>>> Pods <<<<<<<<<<" find Pods -maxdepth 2 -exec ls -ld {} + || true # List contents if directory exists echo "" echo ">>>>>>>>> SideStore <<<<<<<<<<" find SideStore -maxdepth 2 -exec ls -ld {} + || true # List contents if directory exists echo "" echo ">>>>>>>>> Dependencies <<<<<<<<<<" find Dependencies -maxdepth 2 -exec ls -ld {} + || true # List contents if directory exists echo "" echo ">>>>>>>>> Xcode-Derived-Data <<<<<<<<<<" ls -la ~/Library/Developer/Xcode/DerivedData || true # List contents if directory exists echo "" - name: Build SideStore run: NSUnbufferedIO=YES make build 2>&1 | xcbeautify --renderer github-actions && exit ${PIPESTATUS[0]} - name: Fakesign app run: make fakesign - name: Convert to IPA run: make ipa - name: Add version to IPA file name run: mv SideStore.ipa SideStore-${{ steps.version.outputs.version }}.ipa - name: Upload SideStore.ipa Artifact uses: actions/upload-artifact@v4 with: name: SideStore-${{ steps.version.outputs.version }}.ipa path: SideStore-${{ steps.version.outputs.version }}.ipa - name: Upload *.dSYM Artifact uses: actions/upload-artifact@v4 with: name: SideStore-${{ steps.version.outputs.version }}-dSYM path: ./SideStore.xcarchive/dSYMs/*