Files
iDescriptor/.github/workflows/build.yml
T
2025-09-13 03:43:14 +00:00

141 lines
3.9 KiB
YAML

name: Build iDescriptor
on:
push:
branches: ['main']
pull_request:
branches: ['main']
workflow_dispatch:
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest]
# os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'recursive'
token: ${{ secrets.PAT }}
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: '6.7.2'
modules: 'qtmultimedia qtlocation qtpositioning'
- name: Install Linux dependencies (apt)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
pkg-config \
libpugixml-dev \
libusb-1.0-0-dev \
libqrencode-dev \
libirecovery-1.0-dev
libcurl4-openssl-dev
# required version is '>= 2.6.0'
- name: Install libplist
if: runner.os == 'Linux'
run: |
git clone https://github.com/libimobiledevice/libplist.git
cd libplist
./autogen.sh
sudo make install
- name: Install libtatsu
if: runner.os == 'Linux'
run: |
git clone https://github.com/libimobiledevice/libtatsu.git
cd libtatsu
./autogen.sh
sudo make install
- name: Install libtatsu
if: runner.os == 'Linux'
run: |
git clone https://github.com/libimobiledevice/libtatsu.git
cd libtatsu
./autogen.sh
sudo make install
- name: Install libimobiledevice
if: runner.os == 'Linux'
run: |
git clone https://github.com/libimobiledevice/libimobiledevice.git
cd libimobiledevice
./autogen.sh
sudo make install
- name: Install macOS dependencies (brew)
if: runner.os == 'macOS'
run: |
brew install \
pkg-config \
pugixml \
libusb \
libplist \
qrencode \
openssl \
libssh \
libzip \
libimobiledevice \
libimobiledevice-glue \
irecovery
# NOTE: tatsu and frida-core are not in Homebrew.
# You would need to build them from source here.
- name: Install Windows dependencies (vcpkg)
if: runner.os == 'Windows'
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: '1e975a6660e725c1b23f7234b02e4d94c33745e3'
vcpkgJsonGlob: '**/vcpkg.json' # Recommended to create a vcpkg.json
# If not using vcpkg.json, you can install manually:
# run: |
# vcpkg install pugixml libusb libplist qrencode openssl libssh libzip --triplet x64-windows
- name: Configure CMake (Linux/macOS)
if: runner.os == 'Linux' || runner.os == 'macOS'
run: |
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
- name: Configure CMake (Windows)
if: runner.os == 'Windows'
run: |
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
- name: Build with CMake
run: cmake --build build --config Release --parallel
- name: Package Linux Artifact
if: runner.os == 'Linux'
run: |
mkdir -p release
cp build/iDescriptor release/
- name: Package macOS Artifact
if: runner.os == 'macOS'
run: |
mkdir -p release
cp -r build/iDescriptor.app release/
- name: Package Windows Artifact
if: runner.os == 'Windows'
run: |
mkdir -p release
cp build/Release/iDescriptor.exe release/
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: iDescriptor-${{ matrix.os }}
path: release/