name: Nightly SideStore Build on: push: branches: [develop] schedule: - cron: '0 0 * * *' workflow_dispatch: concurrency: group: ${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: macos-26 steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - run: brew install ldid xcbeautify - name: Restore Xcode/SwiftPM Cache (Exact match) id: xcode-cache-restore uses: actions/cache/restore@v3 with: path: | ~/Library/Developer/Xcode/DerivedData ~/Library/Caches/org.swift.swiftpm key: xcode-cache-build-${{ github.ref_name }}-${{ github.sha }} - name: Restore Xcode/SwiftPM Cache (Last Available) uses: actions/cache/restore@v3 with: path: | ~/Library/Developer/Xcode/DerivedData ~/Library/Caches/org.swift.swiftpm key: xcode-cache-build-${{ github.ref_name }}- # -------------------------------------------------- # runtime env setup # -------------------------------------------------- - name: Short Commit SHA run: | echo "SHORT_COMMIT=$(python3 scripts/ci/workflow.py commid-id)" >> $GITHUB_ENV - name: Version run: | echo "VERSION=$(python3 scripts/ci/workflow.py version)" >> $GITHUB_ENV # -------------------------------------------------- # build and test # -------------------------------------------------- - name: Clean previous build artifacts if: contains(github.event.head_commit.message, '[--clean-build]') run: | python3 scripts/ci/workflow.py clean python3 scripts/ci/workflow.py clean-derived-data python3 scripts/ci/workflow.py clean-spm-cache - name: Build run: python3 scripts/ci/workflow.py build - name: Tests Build if: ${{ vars.ENABLE_TESTS == '1' && vars.ENABLE_TESTS_BUILD == '1' }} run: python3 scripts/ci/workflow.py tests-build - name: Save Xcode & SwiftPM Cache if: ${{ steps.xcode-cache-restore.outputs.cache-hit != 'true' }} uses: actions/cache/save@v3 with: path: | ~/Library/Developer/Xcode/DerivedData ~/Library/Caches/org.swift.swiftpm key: xcode-cache-build-${{ github.ref_name }}-${{ github.sha }} - name: Tests Run if: ${{ vars.ENABLE_TESTS == '1' && vars.ENABLE_TESTS_RUN == '1' }} run: python3 scripts/ci/workflow.py tests-run - name: Encrypt build logs env: BUILD_LOG_ZIP_PASSWORD: ${{ secrets.BUILD_LOG_ZIP_PASSWORD }} run: python3 scripts/ci/workflow.py encrypt-build - name: Encrypt tests-build logs if: ${{ vars.ENABLE_TESTS == '1' && vars.ENABLE_TESTS_BUILD == '1' }} env: BUILD_LOG_ZIP_PASSWORD: ${{ secrets.BUILD_LOG_ZIP_PASSWORD }} run: python3 scripts/ci/workflow.py encrypt-tests-build - name: Encrypt tests-run logs if: ${{ vars.ENABLE_TESTS == '1' && vars.ENABLE_TESTS_RUN == '1' }} env: BUILD_LOG_ZIP_PASSWORD: ${{ secrets.BUILD_LOG_ZIP_PASSWORD }} run: python3 scripts/ci/workflow.py encrypt-tests-run # -------------------------------------------------- # artifacts # -------------------------------------------------- - uses: actions/upload-artifact@v4 with: name: encrypted-build-logs-${{ env.VERSION }}.zip path: encrypted-build-logs.zip - uses: actions/upload-artifact@v4 if: ${{ vars.ENABLE_TESTS == '1' && vars.ENABLE_TESTS_BUILD == '1' }} with: name: encrypted-tests-build-logs-${{ env.SHORT_COMMIT }}.zip path: encrypted-tests-build-logs.zip - uses: actions/upload-artifact@v4 if: ${{ vars.ENABLE_TESTS == '1' && vars.ENABLE_TESTS_RUN == '1' }} with: name: encrypted-tests-run-logs-${{ env.SHORT_COMMIT }}.zip path: encrypted-tests-run-logs.zip - uses: actions/upload-artifact@v4 with: name: SideStore-${{ env.VERSION }}.ipa path: SideStore.ipa - uses: actions/upload-artifact@v4 with: name: SideStore-${{ env.VERSION }}-dSYMs.zip path: SideStore.dSYMs.zip # -------------------------------------------------- - name: Deploy run: | python3 scripts/ci/workflow.py deploy nightly $SHORT_COMMIT