name: Beta SideStore build on: push: branches: - develop jobs: build: name: Build and upload SideStore Beta if: startsWith(github.event.head_commit.message, '[beta]') concurrency: group: ${{ github.ref }} cancel-in-progress: true strategy: fail-fast: false matrix: include: - os: 'macos-12' version: '14.2' runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v2 with: submodules: recursive # - name: Cache rust cargo # id: cache-rust-cargo # uses: actions/cache@v3 # env: # cache-name: cache-rust-cargo # with: # path: ~/.cargo # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} # restore-keys: | # ${{ runner.os }}-build-${{ env.cache-name }}- # ${{ runner.os }}-build- # ${{ runner.os }}- # - name: Cache rust minimuxer # id: cache-rust-minimuxer # uses: actions/cache@v3 # env: # cache-name: cache-rust-minimuxer # with: # path: ./Dependencies/minimuxer/target # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} # restore-keys: | # ${{ runner.os }}-build-${{ env.cache-name }}- # ${{ runner.os }}-build- # ${{ runner.os }}- # - name: Cache rust em_proxy # id: cache-rust-em_proxy # uses: actions/cache@v3 # env: # cache-name: cache-rust-em_proxy # with: # path: ./Dependencies/em_proxy/target # key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} # restore-keys: | # ${{ runner.os }}-build-${{ env.cache-name }}- # ${{ runner.os }}-build- # ${{ runner.os }}- - name: Install dependencies run: brew install ldid - name: Install rustup uses: actions-rs/toolchain@v1 with: toolchain: stable override: true target: aarch64-apple-ios # - name: Create emotional damage # run: cd Dependencies/em_proxy && cargo build --release --target aarch64-apple-ios # - name: Build minimuxer # run: cd Dependencies/minimuxer && cargo build --release --target aarch64-apple-ios - name: Add beta suffix to version run: sed -e '/MARKETING_VERSION = .*/s/$/-beta.${{ github.run_number }}/' -i '' Build.xcconfig - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1.4.1 with: xcode-version: ${{ matrix.version }} - name: Build SideStore run: | xcodebuild -project AltStore.xcodeproj \ -scheme AltStore \ -sdk iphoneos \ archive -archivePath ./archive \ CODE_SIGNING_REQUIRED=NO \ AD_HOC_CODE_SIGNING_ALLOWED=YES \ CODE_SIGNING_ALLOWED=NO \ DEVELOPMENT_TEAM=XYZ0123456 \ ORG_IDENTIFIER=com.SideStore \ | xcpretty && exit ${PIPESTATUS[0]} - name: Fakesign app run: | rm -rf archive.xcarchive/Products/Applications/SideStore.app/Frameworks/AltStoreCore.framework/Frameworks/ ldid -SAltStore/Resources/tempEnt.plist archive.xcarchive/Products/Applications/SideStore.app/SideStore - name: Convert to IPA run: | mkdir Payload mkdir Payload/SideStore.app cp -R archive.xcarchive/Products/Applications/SideStore.app/ Payload/SideStore.app/ zip -r SideStore.ipa Payload - name: Upload Artifact uses: actions/upload-artifact@v3.1.0 with: name: SideStore.ipa path: SideStore.ipa - name: Get version id: version run: echo "version=$(grep MARKETING_VERSION Build.xcconfig | sed -e "s/MARKETING_VERSION = //g")" >> $GITHUB_OUTPUT - name: Get current date id: date run: echo "date=$(date -u +'%c')" >> $GITHUB_OUTPUT - name: Get current date in AltStore date form id: date_altstore run: echo "date=$(date -u +'%Y-%m-%d')" >> $GITHUB_OUTPUT - name: Upload to beta release uses: IsaacShelton/update-existing-release@v1.3.1 with: token: ${{ secrets.GITHUB_TOKEN }} release: "Beta" tag: "beta" prerelease: true files: SideStore.ipa body: | This is an ⚠️ **EXPERIMENTAL** ⚠️ beta build for commit [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}). Beta builds are hand-picked builds from development commits that will allow you to try out new features earlier than normal, but with a lower chance of bugs than if you used nightly builds. However, since these changes are newer and less tested, they still have a good chance of bugs, so **use at your own risk**. If you want to be on the bleeding edge and use the latest development builds, you can look at [SideStore Nightly](https://github.com/${{ github.repository }}/releases/tag/nightly). **Please be aware that these builds have a much higher chance of bugs than beta or stable**. If you use the `SideStore (Beta)` app, it will use the latest beta build (make sure to update it in "My Apps"). ## Build Info Built at (UTC): `${{ steps.date.outputs.date }}` Built at (UTC date): `${{ steps.date_altstore.outputs.date }}` Commit SHA: `${{ github.sha }}` Version: `${{ steps.version.outputs.version }}`