256 lines
8.8 KiB
YAML
256 lines
8.8 KiB
YAML
name: Build
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'master'
|
|
- 'dev'
|
|
tags-ignore:
|
|
- '**'
|
|
paths-ignore:
|
|
- 'LICENSE'
|
|
- '**.md'
|
|
pull_request:
|
|
release:
|
|
types: [created]
|
|
|
|
jobs:
|
|
build:
|
|
name: Build UTM
|
|
runs-on: macos-10.15
|
|
strategy:
|
|
matrix:
|
|
arch: [arm64, x86_64]
|
|
platform: [ios, ios_simulator, ios-tci, macos]
|
|
exclude:
|
|
- arch: x86_64
|
|
platform: ios
|
|
- arch: x86_64
|
|
platform: ios-tci
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
- name: Setup Xcode
|
|
shell: bash
|
|
run: sudo xcode-select -switch /Applications/Xcode_12.4.app
|
|
- name: Cache Sysroot
|
|
id: cache-sysroot
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: sysroot-${{ matrix.platform }}-${{ matrix.arch }}
|
|
key: ${{ matrix.platform }}-${{ matrix.arch }}-${{ hashFiles('scripts/build_dependencies.sh') }}-${{ hashFiles('patches/**') }}
|
|
- name: Setup Path
|
|
shell: bash
|
|
run: |
|
|
echo "/usr/local/opt/gettext/bin" >> $GITHUB_PATH
|
|
echo "/usr/local/opt/bison/bin" >> $GITHUB_PATH
|
|
- name: Build Sysroot
|
|
if: steps.cache-sysroot.outputs.cache-hit != 'true'
|
|
run: |
|
|
brew uninstall cmake
|
|
brew install bison pkg-config nasm make meson
|
|
rm -f /usr/local/lib/pkgconfig/*.pc
|
|
./scripts/build_dependencies.sh -p ${{ matrix.platform }} -a ${{ matrix.arch }}
|
|
- name: Compress Sysroot
|
|
if: steps.cache-sysroot.outputs.cache-hit != 'true' || github.event_name == 'release'
|
|
run: tar cf sysroot.tgz sysroot*
|
|
- name: Upload Sysroot
|
|
if: steps.cache-sysroot.outputs.cache-hit != 'true' || github.event_name == 'release'
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Sysroot-${{ matrix.platform }}-${{ matrix.arch }}
|
|
path: sysroot.tgz
|
|
- name: Build UTM
|
|
run: ./scripts/build_utm.sh -p ${{ matrix.platform }} -a ${{ matrix.arch }} -o build-utm/UTM
|
|
- name: Upload UTM
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: UTM-${{ matrix.platform }}-${{ matrix.arch }}
|
|
path: build-utm
|
|
build-universal:
|
|
name: Build UTM (macOS Universal)
|
|
runs-on: macos-10.15
|
|
needs: build
|
|
if: github.event_name == 'release'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
- name: Download Sysroot (arm64)
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: Sysroot-macos-arm64
|
|
path: Sysroot-1
|
|
- name: Download Sysroot (x86_64)
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: Sysroot-macos-x86_64
|
|
path: Sysroot-2
|
|
- name: Pack Universal Sysroot
|
|
run: |
|
|
tar xf Sysroot-1/sysroot.tgz
|
|
tar xf Sysroot-2/sysroot.tgz
|
|
./scripts/pack_dependencies.sh . macos arm64 x86_64
|
|
- name: Compress Sysroot
|
|
run: tar cf sysroot.tgz sysroot-macOS-arm64_x86_64
|
|
- name: Upload Sysroot
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Sysroot-macos-universal
|
|
path: sysroot.tgz
|
|
- name: Setup Xcode
|
|
shell: bash
|
|
run: sudo xcode-select -switch /Applications/Xcode_12.4.app
|
|
- name: Build UTM
|
|
run: ./scripts/build_utm.sh -p macos -a "arm64 x86_64" -o build-utm/UTM
|
|
- name: Upload UTM
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: UTM-macos-universal
|
|
path: build-utm
|
|
package-ipa:
|
|
name: Package (iOS IPA)
|
|
runs-on: macos-10.15
|
|
needs: build
|
|
if: github.event_name == 'release'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Download Artifact
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: UTM-ios-arm64
|
|
- name: Install ldid
|
|
run: brew install ldid
|
|
- name: Fakesign IPA
|
|
run: ./scripts/package.sh ipa UTM.xcarchive .
|
|
- name: Upload Release Asset
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: UTM.ipa
|
|
asset_name: UTM.ipa
|
|
asset_content_type: application/octet-stream
|
|
- name: Send Dispatch Event
|
|
continue-on-error: true
|
|
uses: peter-evans/repository-dispatch@v1
|
|
with:
|
|
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
|
repository: ${{ secrets.DISPATCH_ALTSTORE_REPO_NAME }}
|
|
event-type: new-release
|
|
package-ipa-se:
|
|
name: Package (iOS-TCI IPA)
|
|
runs-on: macos-10.15
|
|
needs: build
|
|
if: github.event_name == 'release'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Download Artifact
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: UTM-ios-tci-arm64
|
|
- name: Install ldid
|
|
run: brew install ldid
|
|
- name: Fakesign IPA
|
|
run: ./scripts/package.sh ipa-se UTM.xcarchive .
|
|
- name: Upload Release Asset
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: UTM SE.ipa
|
|
asset_name: UTM SE.ipa
|
|
asset_content_type: application/octet-stream
|
|
- name: Send Dispatch Event
|
|
continue-on-error: true
|
|
uses: peter-evans/repository-dispatch@v1
|
|
with:
|
|
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
|
repository: ${{ secrets.DISPATCH_ALTSTORE_REPO_NAME }}
|
|
event-type: new-release
|
|
package-deb:
|
|
name: Package (iOS DEB)
|
|
runs-on: macos-10.15
|
|
needs: build
|
|
if: github.event_name == 'release'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Download Artifact
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: UTM-ios-arm64
|
|
- name: Install ldid + dpkg
|
|
run: brew install ldid dpkg
|
|
- name: Fakesign IPA
|
|
run: ./scripts/package.sh deb UTM.xcarchive .
|
|
- name: Upload Release Asset
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: UTM.deb
|
|
asset_name: UTM.deb
|
|
asset_content_type: application/octet-stream
|
|
- name: Send Dispatch Event
|
|
continue-on-error: true
|
|
uses: peter-evans/repository-dispatch@v1
|
|
with:
|
|
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
|
repository: ${{ secrets.DISPATCH_CYDIA_REPO_NAME }}
|
|
event-type: new-release
|
|
package-mac:
|
|
name: Package (macOS)
|
|
runs-on: macos-10.15
|
|
needs: build-universal
|
|
if: github.event_name == 'release'
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Import signing certificate into keychain
|
|
uses: apple-actions/import-codesign-certs@v1
|
|
with:
|
|
p12-file-base64: ${{ secrets.SIGNING_CERTIFICATE_P12_DATA }}
|
|
p12-password: ${{ secrets.SIGNING_CERTIFICATE_PASSWORD }}
|
|
- name: Install Provisioning Profiles
|
|
run: |
|
|
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
|
|
echo $PROFILE_DATA | base64 --decode -o ~/Library/MobileDevice/Provisioning\ Profiles/$PROFILE_UUID.provisionprofile
|
|
echo $HELPER_PROFILE_DATA | base64 --decode -o ~/Library/MobileDevice/Provisioning\ Profiles/$HELPER_PROFILE_UUID.provisionprofile
|
|
env:
|
|
PROFILE_DATA: ${{ secrets.PROFILE_DATA }}
|
|
PROFILE_UUID: ${{ secrets.PROFILE_UUID }}
|
|
HELPER_PROFILE_DATA: ${{ secrets.HELPER_PROFILE_DATA }}
|
|
HELPER_PROFILE_UUID: ${{ secrets.HELPER_PROFILE_UUID }}
|
|
- name: Download Artifact
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: UTM-macos-universal
|
|
- name: Package for Release
|
|
run: ./scripts/package_mac.sh developer-id UTM.xcarchive . "$SIGNING_TEAM_ID" "$PROFILE_UUID" "$HELPER_PROFILE_UUID"
|
|
env:
|
|
SIGNING_TEAM_ID: ${{ secrets.SIGNING_TEAM_ID }}
|
|
PROFILE_UUID: ${{ secrets.PROFILE_UUID }}
|
|
HELPER_PROFILE_UUID: ${{ secrets.HELPER_PROFILE_UUID }}
|
|
- name: Notarize app
|
|
run: npx notarize-cli --file "UTM.dmg" --bundle-id "com.utmapp.UTM"
|
|
env:
|
|
NOTARIZE_USERNAME: ${{ secrets.SIGNING_USERNAME }}
|
|
NOTARIZE_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
|
|
- name: Upload Release Asset
|
|
uses: actions/upload-release-asset@v1.0.2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
upload_url: ${{ github.event.release.upload_url }}
|
|
asset_path: UTM.dmg
|
|
asset_name: UTM.dmg
|
|
asset_content_type: application/octet-stream
|