From f4786fa164008477a55ebaa1e619b048ee2b9556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tyrese=20Luo=20=28=E7=BE=85=E5=81=A5=E5=B3=AF=29?= Date: Wed, 28 Jan 2026 17:06:28 +0800 Subject: [PATCH 1/6] CI: overhaul packaging workflow and mobile release options - add per-platform inputs and build matrices - create release once and upload assets via releaseId - add Android/iOS packaging with TestFlight envs - set macOS signing_identity placeholder --- .github/workflows/release.yml | 473 +++++++++++++++++++++++----------- 1 file changed, 320 insertions(+), 153 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index af89b9781..70b7cae27 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,21 +9,55 @@ on: - 'v*.*.*-*' # Pre-release Version Tags workflow_dispatch: inputs: - target_platforms: - description: 'Target platforms for the release' - required: true - type: choice - options: - - 'All' # Build for all platforms - - 'linux-ubuntu-24.04' # Build for Ubuntu 24.04 both x86_64 and aarch64 - - 'linux-ubuntu-24.04-x86_64' # Build for Ubuntu 24.04 x86_64 - - 'linux-ubuntu-24.04-aarch64' # Build for Ubuntu 24.04 aarch64 - - 'linux-ubuntu-22.04' # Build for Ubuntu 22.04 both x86_64 and aarch64 - - 'linux-ubuntu-22.04-x86_64' # Build for Ubuntu 22.04 x86_64 - - 'linux-ubuntu-22.04-aarch64' # Build for Ubuntu 22.04 aarch64 - - 'macos-14-aarch64' # Build for MacOS 14 (Apple Silicon) - - 'macos-15-x86_64' # Build for MacOS 15 (Intel) - - 'windows-2022-x86_64' # Build for Windows 2022 x86_64 + build_ubuntu_24_x86_64: + description: 'Build Ubuntu 24.04 x86_64' + required: false + type: boolean + default: false + build_ubuntu_24_aarch64: + description: 'Build Ubuntu 24.04 aarch64' + required: false + type: boolean + default: false + build_ubuntu_22_x86_64: + description: 'Build Ubuntu 22.04 x86_64' + required: false + type: boolean + default: false + build_ubuntu_22_aarch64: + description: 'Build Ubuntu 22.04 aarch64' + required: false + type: boolean + default: false + build_macos_14_aarch64: + description: 'Build macOS 14 (Apple Silicon)' + required: false + type: boolean + default: false + build_macos_15_x86_64: + description: 'Build macOS 15 (Intel)' + required: false + type: boolean + default: false + build_windows_2022_x86_64: + description: 'Build Windows 2022 x86_64' + required: false + type: boolean + default: false + build_android: + description: 'Build Android APK' + required: false + type: boolean + default: false + build_ios: + description: 'Build iOS app' + required: false + type: boolean + default: false + upload_testflight: + description: "Upload to TestFlight (true/false)" + type: boolean + default: false release_tag: description: 'Release tag (required if creating release)' required: false @@ -40,7 +74,8 @@ on: type: boolean default: false -permissions: write-all +permissions: + contents: write env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: short @@ -73,61 +108,188 @@ jobs: echo "Tag and Cargo.toml version are consistent." fi - determine_matrix: - name: Determine Build Matrix + determine_matrices: + name: Determine Build Matrices runs-on: ubuntu-latest - if: always() && (needs.check_tag_version.result == 'success' || github.event_name == 'workflow_dispatch') - needs: check_tag_version outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} + linux_matrix: ${{ steps.set.outputs.linux_matrix }} + macos_matrix: ${{ steps.set.outputs.macos_matrix }} + windows_matrix: ${{ steps.set.outputs.windows_matrix }} + run_linux: ${{ steps.set.outputs.run_linux }} + run_macos: ${{ steps.set.outputs.run_macos }} + run_windows: ${{ steps.set.outputs.run_windows }} steps: - - name: Set build matrix - id: set-matrix + - name: Build matrix from inputs + id: set run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - case "${{ github.event.inputs.target_platforms }}" in - "All") - matrix='{"include":[{"os":"ubuntu-24.04","arch":"x86_64"},{"os":"ubuntu-24.04-arm","arch":"aarch64"},{"os":"ubuntu-22.04","arch":"x86_64"},{"os":"ubuntu-22.04-arm","arch":"aarch64"},{"os":"macos-14","arch":"aarch64"},{"os":"macos-15-intel","arch":"x86_64"},{"os":"windows-2022","arch":"x86_64"}]}' - ;; - "linux-ubuntu-24.04") - matrix='{"include":[{"os":"ubuntu-24.04","arch":"x86_64"},{"os":"ubuntu-24.04-arm","arch":"aarch64"}]}' - ;; - "linux-ubuntu-22.04") - matrix='{"include":[{"os":"ubuntu-22.04","arch":"x86_64"},{"os":"ubuntu-22.04-arm","arch":"aarch64"}]}' - ;; - "linux-ubuntu-24.04") - matrix='{"include":[{"os":"ubuntu-24.04","arch":"x86_64"}]}' - ;; - "linux-ubuntu-24.04-aarch64") - matrix='{"include":[{"os":"ubuntu-24.04-arm","arch":"aarch64"}]}' - ;; - "linux-ubuntu-22.04") - matrix='{"include":[{"os":"ubuntu-22.04","arch":"x86_64"}]}' - ;; - "linux-ubuntu-22.04-aarch64") - matrix='{"include":[{"os":"ubuntu-22.04-arm","arch":"aarch64"}]}' - ;; - "macos-14-aarch64") - matrix='{"include":[{"os":"macos-14","arch":"aarch64"}]}' - ;; - "macos-15-x86_64") - matrix='{"include":[{"os":"macos-15-intel","arch":"x86_64"}]}' - ;; - "windows-2022-x86_64") - matrix='{"include":[{"os":"windows-2022","arch":"x86_64"}]}' - ;; - esac - else - matrix='{"include":[{"os":"ubuntu-24.04","arch":"x86_64"},{"os":"ubuntu-24.04-arm","arch":"aarch64"},{"os":"ubuntu-22.04","arch":"x86_64"},{"os":"ubuntu-22.04-arm","arch":"aarch64"},{"os":"macos-14","arch":"aarch64"},{"os":"macos-15-intel","arch":"x86_64"},{"os":"windows-2022","arch":"x86_64"}]}' - fi - echo "matrix=$matrix" >> $GITHUB_OUTPUT + python - <<'PY' + import json + import os + from pathlib import Path + + def truthy(value: str) -> bool: + if value is None: + return False + return str(value).strip().lower() == "true" + + event_name = os.environ.get("GITHUB_EVENT_NAME", "") + inputs = {} + event_path = os.environ.get("GITHUB_EVENT_PATH") + if event_path and Path(event_path).exists(): + with open(event_path, "r", encoding="utf-8") as handle: + payload = json.load(handle) + inputs = payload.get("inputs") or {} + + linux = [] + macos = [] + windows = [] + + def add_linux(os_name: str, arch: str) -> None: + linux.append({ + "os": os_name, + "arch": arch, + "packager_formats": "deb,appimage", + }) + + def add_macos(os_name: str, arch: str) -> None: + macos.append({ + "os": os_name, + "arch": arch, + "packager_formats": "dmg", + }) + + def add_windows() -> None: + windows.append({ + "os": "windows-2022", + "arch": "x86_64", + "packager_formats": "nsis", + }) + + if event_name == "push": + add_linux("ubuntu-24.04", "x86_64") + add_linux("ubuntu-24.04-arm", "aarch64") + add_linux("ubuntu-22.04", "x86_64") + add_linux("ubuntu-22.04-arm", "aarch64") + add_macos("macos-14", "aarch64") + add_macos("macos-15-intel", "x86_64") + add_windows() + else: + if truthy(inputs.get("build_ubuntu_24_x86_64")): + add_linux("ubuntu-24.04", "x86_64") + if truthy(inputs.get("build_ubuntu_24_aarch64")): + add_linux("ubuntu-24.04-arm", "aarch64") + if truthy(inputs.get("build_ubuntu_22_x86_64")): + add_linux("ubuntu-22.04", "x86_64") + if truthy(inputs.get("build_ubuntu_22_aarch64")): + add_linux("ubuntu-22.04-arm", "aarch64") + if truthy(inputs.get("build_macos_14_aarch64")): + add_macos("macos-14", "aarch64") + if truthy(inputs.get("build_macos_15_x86_64")): + add_macos("macos-15-intel", "x86_64") + if truthy(inputs.get("build_windows_2022_x86_64")): + add_windows() + + outputs = { + "linux_matrix": json.dumps({"include": linux}), + "macos_matrix": json.dumps({"include": macos}), + "windows_matrix": json.dumps({"include": windows}), + "run_linux": "true" if linux else "false", + "run_macos": "true" if macos else "false", + "run_windows": "true" if windows else "false", + } + + with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as handle: + for key, value in outputs.items(): + handle.write(f"{key}={value}\n") + PY + + create_release: + name: Create Release + needs: [check_tag_version, determine_matrices] + if: >- + ${{ always() && ( + (github.event_name == 'push' && needs.check_tag_version.result == 'success') || + (github.event_name == 'workflow_dispatch' && + github.event.inputs.create_release == 'true' && + ( + needs.determine_matrices.outputs.run_linux == 'true' || + needs.determine_matrices.outputs.run_macos == 'true' || + needs.determine_matrices.outputs.run_windows == 'true' || + github.event.inputs.build_android == 'true' || + github.event.inputs.build_ios == 'true' + ) + ) + ) }} + runs-on: ubuntu-22.04 + outputs: + release_id: ${{ steps.create_release.outputs.id }} + release_tag: ${{ steps.resolve.outputs.tag }} + release_name: ${{ steps.resolve.outputs.name }} + steps: + - uses: actions/checkout@v4 + + - name: Resolve release metadata + id: resolve + run: | + python - <<'PY' + import os + from pathlib import Path + + def read_version(path: str) -> str: + in_package = False + for raw_line in Path(path).read_text(encoding="utf-8").splitlines(): + line = raw_line.strip() + if line.startswith("[") and line.endswith("]"): + in_package = line == "[package]" + continue + if not in_package or not line.startswith("version"): + continue + _, value = line.split("=", 1) + value = value.strip().strip('"').strip("'") + if value: + return value + return "" - release_robrix_for_desktop: - name: Release Robrix for Desktop (${{ matrix.os }}, ${{ matrix.arch }}) - needs: determine_matrix + event_name = os.environ.get("GITHUB_EVENT_NAME", "") + ref_name = os.environ.get("GITHUB_REF_NAME", "").strip() + release_tag_input = os.environ.get("RELEASE_TAG", "").strip() + version = read_version("Cargo.toml") + + if event_name == "push" and ref_name: + tag = ref_name + name = f"Robrix {ref_name}" + else: + if not version: + raise SystemExit("Unable to resolve Cargo.toml package version.") + tag = release_tag_input or f"v{version}" + tag = tag.replace("__VERSION__", version) + name = f"Robrix v{version}" + + with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as handle: + handle.write(f"tag={tag}\n") + handle.write(f"name={name}\n") + PY + env: + RELEASE_TAG: ${{ github.event.inputs.release_tag }} + + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.resolve.outputs.tag }} + name: ${{ steps.resolve.outputs.name }} + draft: ${{ github.event_name == 'workflow_dispatch' }} + prerelease: ${{ (github.event_name == 'workflow_dispatch' && github.event.inputs.pre_release == 'true') || (github.event_name == 'push' && contains(github.ref, '-')) }} + env: + GITHUB_TOKEN: ${{ github.token }} + + for_linux: + name: Release Robrix for Linux (${{ matrix.os }}, ${{ matrix.arch }}) + needs: [check_tag_version, determine_matrices, create_release] + if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && needs.determine_matrices.outputs.run_linux == 'true')) }} strategy: fail-fast: false - matrix: ${{ fromJson(needs.determine_matrix.outputs.matrix) }} + matrix: ${{ fromJson(needs.determine_matrices.outputs.linux_matrix) }} runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -153,100 +315,105 @@ jobs: - name: Install Rust Stable uses: dtolnay/rust-toolchain@stable - - name: Install cargo-packager - run: | - cargo +stable install --force --locked cargo-packager + - name: Package (desktop) + uses: Project-Robius-China/makepad-packaging-action@main + env: + GITHUB_TOKEN: ${{ github.token }} + with: + packager_formats: ${{ matrix.packager_formats }} + releaseId: ${{ needs.create_release.outputs.release_id }} - - name: Install robius-packaging-commands - run: | - cargo install --version 0.2.0 --locked --git https://github.com/project-robius/robius-packaging-commands.git robius-packaging-commands + for_macos: + name: Release Robrix for macOS (${{ matrix.os }}, ${{ matrix.arch }}) + needs: [check_tag_version, determine_matrices, create_release] + if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && needs.determine_matrices.outputs.run_macos == 'true')) }} + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.determine_matrices.outputs.macos_matrix) }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 - - name: Build - shell: bash - run: | - cargo packager --release - ls ./dist + - name: Install Rust Stable + uses: dtolnay/rust-toolchain@stable - - name: Set Version - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" && -n "${{ github.event.inputs.release_tag }}" ]]; then - VERSION="${{ github.event.inputs.release_tag }}" - VERSION="${VERSION#v}" # Remove 'v' prefix if present - else - VERSION=$(cargo metadata --no-deps --format-version 1 --frozen | jq -r '.packages[0].version') - fi - echo "VERSION=$VERSION" >> $GITHUB_ENV - shell: bash + - name: Package (macos) + uses: Project-Robius-China/makepad-packaging-action@main + env: + GITHUB_TOKEN: ${{ github.token }} + with: + packager_formats: ${{ matrix.packager_formats }} + releaseId: ${{ needs.create_release.outputs.release_id }} - - name: Set Artifact and Upload Paths - shell: bash - run: | - VERSION=${{ env.VERSION }} - OS=${{ matrix.os }} - ARCH=${{ matrix.arch }} - - - if [[ "$OS" == "ubuntu-22.04" || "$OS" == "ubuntu-24.04" ]]; then - { - echo "DEB=robrix_${VERSION}_amd64.deb" - echo "APPIMAGE=robrix_${VERSION}_x86_64.AppImage" - echo "TAR=robrix_${VERSION}_x86_64.tar.gz" - echo "UPLOAD_FILES<> $GITHUB_ENV - - elif [[ "$OS" == "ubuntu-22.04-arm" || "$OS" == "ubuntu-24.04-arm" ]]; then - { - echo "DEB=robrix_${VERSION}_arm64.deb" - echo "APPIMAGE=robrix_${VERSION}_aarch64.AppImage" - echo "TAR=robrix_${VERSION}_aarch64.tar.gz" - echo "UPLOAD_FILES<> $GITHUB_ENV - - elif [[ "$OS" == "macos-14" ]]; then - FILE="robrix-${VERSION}-macOS-${ARCH}.dmg" - mv ./dist/Robrix_${VERSION}_aarch64.dmg ./dist/$FILE - echo "RELEASE_FILE=$FILE" >> $GITHUB_ENV - echo "UPLOAD_FILES=./dist/$FILE" >> $GITHUB_ENV - - elif [[ "$OS" == "macos-15-intel" ]]; then - FILE="robrix-${VERSION}-macOS-${ARCH}.dmg" - mv ./dist/Robrix_${VERSION}_x64.dmg ./dist/$FILE - echo "RELEASE_FILE=$FILE" >> $GITHUB_ENV - echo "UPLOAD_FILES=./dist/$FILE" >> $GITHUB_ENV - - elif [[ "$OS" == "windows-2022" ]]; then - FILE="robrix-${VERSION}-windows-${ARCH}-setup.exe" - mv ./dist/robrix_${VERSION}_x64-setup.exe ./dist/$FILE - echo "RELEASE_FILE=$FILE" >> $GITHUB_ENV - echo "UPLOAD_FILES=./dist/$FILE" >> $GITHUB_ENV - fi + for_windows: + name: Release Robrix for Windows (${{ matrix.os }}, ${{ matrix.arch }}) + needs: [check_tag_version, determine_matrices, create_release] + if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && needs.determine_matrices.outputs.run_windows == 'true')) }} + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.determine_matrices.outputs.windows_matrix) }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 - - name: Upload Release Artifacts - if: | - (github.event_name == 'push') || - (github.event_name == 'workflow_dispatch' && github.event.inputs.create_release == 'true') - uses: softprops/action-gh-release@v2 + - name: Install Rust Stable + uses: dtolnay/rust-toolchain@stable + + - name: Package (windows) + uses: Project-Robius-China/makepad-packaging-action@main + env: + GITHUB_TOKEN: ${{ github.token }} with: - tag_name: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag || format('v{0}', env.VERSION) }} - name: ${{ github.event_name == 'workflow_dispatch' && format('Robrix {0}', github.event.inputs.release_tag) || format('Robrix v{0}', env.VERSION) }} - token: ${{ secrets.ROBRIX_RELEASE }} - files: ${{ env.UPLOAD_FILES }} - prerelease: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.pre_release == 'true' || contains(github.ref, '-') }} - draft: ${{ github.event_name == 'workflow_dispatch' }} + packager_formats: ${{ matrix.packager_formats }} + releaseId: ${{ needs.create_release.outputs.release_id }} + + for_android: + name: Release Robrix for Android + needs: [check_tag_version, create_release] + if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && github.event.inputs.build_android == 'true')) }} + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: Install Rust Stable + uses: dtolnay/rust-toolchain@stable + + - name: Package (android) + uses: Project-Robius-China/makepad-packaging-action@main + env: + GITHUB_TOKEN: ${{ github.token }} + with: + args: --target aarch64-linux-android + releaseId: ${{ needs.create_release.outputs.release_id }} + + for_ios: + name: Release Robrix for iOS + needs: [check_tag_version, create_release] + if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && github.event.inputs.build_ios == 'true')) }} + runs-on: macos-14 + steps: + - uses: actions/checkout@v4 + + - name: Install Rust Stable + uses: dtolnay/rust-toolchain@stable - - name: Upload Artifacts (No Release) - if: | - github.event_name == 'workflow_dispatch' && github.event.inputs.create_release != 'true' - uses: actions/upload-artifact@v4 + - name: Package (iOS) + uses: Project-Robius-China/makepad-packaging-action@main + env: + GITHUB_TOKEN: ${{ github.token }} + MAKEPAD_IOS_ORG: org.robius.robrix + MAKEPAD_IOS_APP: Robrix + MAKEPAD_IOS_CREATE_IPA: 'true' + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + APPLE_PROVISIONING_PROFILE: ${{ secrets.APPLE_PROVISIONING_PROFILE }} + APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} + APPLE_SIGNING_IDENTITY: Apple Development + # IOS upload testflight disabled for now + MAKEPAD_IOS_UPLOAD_TESTFLIGHT: ${{ inputs.upload_testflight }} + APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }} + APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} + APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} with: - name: robrix-${{ env.VERSION }}-${{ matrix.os }}-${{ matrix.arch }} - path: ${{ env.UPLOAD_FILES }} - retention-days: 30 \ No newline at end of file + args: --target aarch64-apple-ios + releaseId: ${{ needs.create_release.outputs.release_id }} From fdcc98b83a5d66c421e60802e944d2062a7b4b0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tyrese=20Luo=EF=BC=88=E7=BE=85=E5=81=A5=E5=B3=AF=EF=BC=89?= Date: Wed, 11 Feb 2026 15:39:46 +0800 Subject: [PATCH 2/6] ci(release): simplify workflow and switch to project-robius action path --- .github/workflows/release.yml | 261 ++++++++++++++++------------------ 1 file changed, 121 insertions(+), 140 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 70b7cae27..da1c7b440 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,8 +44,8 @@ on: required: false type: boolean default: false - build_android: - description: 'Build Android APK' + build_android_aarch64: + description: 'Build Android APK (aarch64 only)' required: false type: boolean default: false @@ -97,7 +97,11 @@ jobs: TAG_REF="${GITHUB_REF##*/}" echo "Current tag: $TAG_REF" - CARGO_MANIFEST_VERSION=$(cargo metadata --no-deps --format-version 1 --frozen | jq -r '.packages[0].version') + CARGO_MANIFEST_VERSION=$(cargo metadata --no-deps --format-version 1 --frozen | jq -r '.packages[] | select(.name=="robrix") | .version' | head -n1) + if [[ -z "$CARGO_MANIFEST_VERSION" || "$CARGO_MANIFEST_VERSION" == "null" ]]; then + echo "Error: Failed to resolve robrix version from Cargo metadata." + exit 1 + fi echo "Cargo.toml Robrix version: $CARGO_MANIFEST_VERSION" if [[ "$TAG_REF" != "v$CARGO_MANIFEST_VERSION" ]]; then @@ -121,87 +125,45 @@ jobs: steps: - name: Build matrix from inputs id: set - run: | - python - <<'PY' - import json - import os - from pathlib import Path - - def truthy(value: str) -> bool: - if value is None: - return False - return str(value).strip().lower() == "true" - - event_name = os.environ.get("GITHUB_EVENT_NAME", "") - inputs = {} - event_path = os.environ.get("GITHUB_EVENT_PATH") - if event_path and Path(event_path).exists(): - with open(event_path, "r", encoding="utf-8") as handle: - payload = json.load(handle) - inputs = payload.get("inputs") or {} - - linux = [] - macos = [] - windows = [] - - def add_linux(os_name: str, arch: str) -> None: - linux.append({ - "os": os_name, - "arch": arch, - "packager_formats": "deb,appimage", - }) - - def add_macos(os_name: str, arch: str) -> None: - macos.append({ - "os": os_name, - "arch": arch, - "packager_formats": "dmg", - }) - - def add_windows() -> None: - windows.append({ - "os": "windows-2022", - "arch": "x86_64", - "packager_formats": "nsis", - }) - - if event_name == "push": - add_linux("ubuntu-24.04", "x86_64") - add_linux("ubuntu-24.04-arm", "aarch64") - add_linux("ubuntu-22.04", "x86_64") - add_linux("ubuntu-22.04-arm", "aarch64") - add_macos("macos-14", "aarch64") - add_macos("macos-15-intel", "x86_64") - add_windows() - else: - if truthy(inputs.get("build_ubuntu_24_x86_64")): - add_linux("ubuntu-24.04", "x86_64") - if truthy(inputs.get("build_ubuntu_24_aarch64")): - add_linux("ubuntu-24.04-arm", "aarch64") - if truthy(inputs.get("build_ubuntu_22_x86_64")): - add_linux("ubuntu-22.04", "x86_64") - if truthy(inputs.get("build_ubuntu_22_aarch64")): - add_linux("ubuntu-22.04-arm", "aarch64") - if truthy(inputs.get("build_macos_14_aarch64")): - add_macos("macos-14", "aarch64") - if truthy(inputs.get("build_macos_15_x86_64")): - add_macos("macos-15-intel", "x86_64") - if truthy(inputs.get("build_windows_2022_x86_64")): - add_windows() - - outputs = { - "linux_matrix": json.dumps({"include": linux}), - "macos_matrix": json.dumps({"include": macos}), - "windows_matrix": json.dumps({"include": windows}), - "run_linux": "true" if linux else "false", - "run_macos": "true" if macos else "false", - "run_windows": "true" if windows else "false", - } - - with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as handle: - for key, value in outputs.items(): - handle.write(f"{key}={value}\n") - PY + uses: actions/github-script@v7 + with: + script: | + const isPush = context.eventName === 'push'; + const inputs = context.payload.inputs || {}; + const enabled = (value) => String(value).trim().toLowerCase() === 'true'; + + const linux = []; + const macos = []; + const windows = []; + + const addLinux = (os, arch) => linux.push({ os, arch }); + const addMacos = (os, arch) => macos.push({ os, arch }); + const addWindows = () => windows.push({ os: 'windows-2022', arch: 'x86_64' }); + + if (isPush) { + addLinux('ubuntu-24.04', 'x86_64'); + addLinux('ubuntu-24.04-arm', 'aarch64'); + addLinux('ubuntu-22.04', 'x86_64'); + addLinux('ubuntu-22.04-arm', 'aarch64'); + addMacos('macos-14', 'aarch64'); + addMacos('macos-15-intel', 'x86_64'); + addWindows(); + } else { + if (enabled(inputs.build_ubuntu_24_x86_64)) addLinux('ubuntu-24.04', 'x86_64'); + if (enabled(inputs.build_ubuntu_24_aarch64)) addLinux('ubuntu-24.04-arm', 'aarch64'); + if (enabled(inputs.build_ubuntu_22_x86_64)) addLinux('ubuntu-22.04', 'x86_64'); + if (enabled(inputs.build_ubuntu_22_aarch64)) addLinux('ubuntu-22.04-arm', 'aarch64'); + if (enabled(inputs.build_macos_14_aarch64)) addMacos('macos-14', 'aarch64'); + if (enabled(inputs.build_macos_15_x86_64)) addMacos('macos-15-intel', 'x86_64'); + if (enabled(inputs.build_windows_2022_x86_64)) addWindows(); + } + + core.setOutput('linux_matrix', JSON.stringify({ include: linux })); + core.setOutput('macos_matrix', JSON.stringify({ include: macos })); + core.setOutput('windows_matrix', JSON.stringify({ include: windows })); + core.setOutput('run_linux', linux.length > 0 ? 'true' : 'false'); + core.setOutput('run_macos', macos.length > 0 ? 'true' : 'false'); + core.setOutput('run_windows', windows.length > 0 ? 'true' : 'false'); create_release: name: Create Release @@ -215,7 +177,7 @@ jobs: needs.determine_matrices.outputs.run_linux == 'true' || needs.determine_matrices.outputs.run_macos == 'true' || needs.determine_matrices.outputs.run_windows == 'true' || - github.event.inputs.build_android == 'true' || + github.event.inputs.build_android_aarch64 == 'true' || github.event.inputs.build_ios == 'true' ) ) @@ -223,54 +185,38 @@ jobs: runs-on: ubuntu-22.04 outputs: release_id: ${{ steps.create_release.outputs.id }} - release_tag: ${{ steps.resolve.outputs.tag }} - release_name: ${{ steps.resolve.outputs.name }} steps: - uses: actions/checkout@v4 - name: Resolve release metadata id: resolve + shell: bash run: | - python - <<'PY' - import os - from pathlib import Path - - def read_version(path: str) -> str: - in_package = False - for raw_line in Path(path).read_text(encoding="utf-8").splitlines(): - line = raw_line.strip() - if line.startswith("[") and line.endswith("]"): - in_package = line == "[package]" - continue - if not in_package or not line.startswith("version"): - continue - _, value = line.split("=", 1) - value = value.strip().strip('"').strip("'") - if value: - return value - return "" - - event_name = os.environ.get("GITHUB_EVENT_NAME", "") - ref_name = os.environ.get("GITHUB_REF_NAME", "").strip() - release_tag_input = os.environ.get("RELEASE_TAG", "").strip() - version = read_version("Cargo.toml") - - if event_name == "push" and ref_name: - tag = ref_name - name = f"Robrix {ref_name}" - else: - if not version: - raise SystemExit("Unable to resolve Cargo.toml package version.") - tag = release_tag_input or f"v{version}" - tag = tag.replace("__VERSION__", version) - name = f"Robrix v{version}" - - with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as handle: - handle.write(f"tag={tag}\n") - handle.write(f"name={name}\n") - PY - env: - RELEASE_TAG: ${{ github.event.inputs.release_tag }} + if [[ "${{ github.event_name }}" == "push" ]]; then + resolved_tag="${{ github.ref_name }}" + else + resolved_tag="${{ github.event.inputs.release_tag }}" + if [[ -z "$resolved_tag" ]]; then + resolved_version="$(awk ' + /^\[package\]$/ { in_package=1; next } + /^\[/ { in_package=0 } + in_package && $1 == "version" { + gsub(/"/, "", $3); + print $3; + exit; + } + ' Cargo.toml)" + if [[ -z "$resolved_version" ]]; then + echo "Error: Unable to resolve package.version from Cargo.toml." + exit 1 + fi + resolved_tag="v${resolved_version}" + echo "release_tag not provided; fallback to ${resolved_tag}" + fi + fi + + echo "tag=${resolved_tag}" >> "$GITHUB_OUTPUT" + echo "name=Robrix ${resolved_tag}" >> "$GITHUB_OUTPUT" - name: Create Release id: create_release @@ -316,11 +262,11 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (desktop) - uses: Project-Robius-China/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@main env: GITHUB_TOKEN: ${{ github.token }} with: - packager_formats: ${{ matrix.packager_formats }} + packager_formats: deb releaseId: ${{ needs.create_release.outputs.release_id }} for_macos: @@ -338,11 +284,11 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (macos) - uses: Project-Robius-China/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@main env: GITHUB_TOKEN: ${{ github.token }} with: - packager_formats: ${{ matrix.packager_formats }} + packager_formats: dmg releaseId: ${{ needs.create_release.outputs.release_id }} for_windows: @@ -360,17 +306,17 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (windows) - uses: Project-Robius-China/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@main env: GITHUB_TOKEN: ${{ github.token }} with: - packager_formats: ${{ matrix.packager_formats }} + packager_formats: nsis releaseId: ${{ needs.create_release.outputs.release_id }} for_android: - name: Release Robrix for Android + name: Release Robrix for Android (aarch64) needs: [check_tag_version, create_release] - if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && github.event.inputs.build_android == 'true')) }} + if: ${{ always() && ((github.event_name == 'push' && needs.check_tag_version.result == 'success') || (github.event_name == 'workflow_dispatch' && github.event.inputs.build_android_aarch64 == 'true')) }} runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -379,9 +325,15 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (android) - uses: Project-Robius-China/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@main env: GITHUB_TOKEN: ${{ github.token }} + MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- + --config profile.dev.opt-level=0 + --config profile.dev.debug=false + --config profile.dev.lto=off + --config profile.dev.strip=true + --config profile.dev.debug-assertions=false with: args: --target aarch64-linux-android releaseId: ${{ needs.create_release.outputs.release_id }} @@ -397,10 +349,17 @@ jobs: - name: Install Rust Stable uses: dtolnay/rust-toolchain@stable - - name: Package (iOS) - uses: Project-Robius-China/makepad-packaging-action@main + - name: Package (iOS + TestFlight) + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload_testflight == 'true' }} + uses: project-robius/makepad-packaging-action@main env: GITHUB_TOKEN: ${{ github.token }} + MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- + --config profile.dev.opt-level=0 + --config profile.dev.debug=false + --config profile.dev.lto=off + --config profile.dev.strip=true + --config profile.dev.debug-assertions=false MAKEPAD_IOS_ORG: org.robius.robrix MAKEPAD_IOS_APP: Robrix MAKEPAD_IOS_CREATE_IPA: 'true' @@ -409,11 +368,33 @@ jobs: APPLE_PROVISIONING_PROFILE: ${{ secrets.APPLE_PROVISIONING_PROFILE }} APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} APPLE_SIGNING_IDENTITY: Apple Development - # IOS upload testflight disabled for now - MAKEPAD_IOS_UPLOAD_TESTFLIGHT: ${{ inputs.upload_testflight }} + MAKEPAD_IOS_UPLOAD_TESTFLIGHT: 'true' APP_STORE_CONNECT_API_KEY_CONTENT: ${{ secrets.APP_STORE_CONNECT_API_KEY_CONTENT }} APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} with: args: --target aarch64-apple-ios releaseId: ${{ needs.create_release.outputs.release_id }} + + - name: Package (iOS) + if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.upload_testflight != 'true' }} + uses: project-robius/makepad-packaging-action@main + env: + GITHUB_TOKEN: ${{ github.token }} + MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- + --config profile.dev.opt-level=0 + --config profile.dev.debug=false + --config profile.dev.lto=off + --config profile.dev.strip=true + --config profile.dev.debug-assertions=false + MAKEPAD_IOS_ORG: org.robius.robrix + MAKEPAD_IOS_APP: Robrix + MAKEPAD_IOS_CREATE_IPA: 'true' + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + APPLE_PROVISIONING_PROFILE: ${{ secrets.APPLE_PROVISIONING_PROFILE }} + APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} + APPLE_SIGNING_IDENTITY: Apple Development + with: + args: --target aarch64-apple-ios + releaseId: ${{ needs.create_release.outputs.release_id }} From 9acd164147d311bf17f71b6eb58cb1cb20d97578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tyrese=20Luo=EF=BC=88=E7=BE=85=E5=81=A5=E5=B3=AF=EF=BC=89?= Date: Wed, 11 Feb 2026 15:53:46 +0800 Subject: [PATCH 3/6] ci(release): fix cargo --config lto value for mobile builds --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index da1c7b440..cda662d83 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -331,7 +331,7 @@ jobs: MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false - --config profile.dev.lto=off + --config profile.dev.lto=false --config profile.dev.strip=true --config profile.dev.debug-assertions=false with: @@ -357,7 +357,7 @@ jobs: MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false - --config profile.dev.lto=off + --config profile.dev.lto=false --config profile.dev.strip=true --config profile.dev.debug-assertions=false MAKEPAD_IOS_ORG: org.robius.robrix @@ -384,7 +384,7 @@ jobs: MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false - --config profile.dev.lto=off + --config profile.dev.lto=false --config profile.dev.strip=true --config profile.dev.debug-assertions=false MAKEPAD_IOS_ORG: org.robius.robrix From 3c41c835d7e216dfbe0f69de964e93d2237d1236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tyrese=20Luo=EF=BC=88=E7=BE=85=E5=81=A5=E5=B3=AF=EF=BC=89?= Date: Wed, 11 Feb 2026 17:02:16 +0800 Subject: [PATCH 4/6] ci(release): unify release token and verify release access before uploads --- .github/workflows/release.yml | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cda662d83..c8c87e698 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -226,8 +226,16 @@ jobs: name: ${{ steps.resolve.outputs.name }} draft: ${{ github.event_name == 'workflow_dispatch' }} prerelease: ${{ (github.event_name == 'workflow_dispatch' && github.event.inputs.pre_release == 'true') || (github.event_name == 'push' && contains(github.ref, '-')) }} + token: ${{ secrets.ROBRIX_RELEASE || github.token }} env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} + + - name: Verify release access + shell: bash + run: | + gh api "repos/${{ github.repository }}/releases/${{ steps.create_release.outputs.id }}" --jq '.id' + env: + GH_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} for_linux: name: Release Robrix for Linux (${{ matrix.os }}, ${{ matrix.arch }}) @@ -264,8 +272,9 @@ jobs: - name: Package (desktop) uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} with: + github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} packager_formats: deb releaseId: ${{ needs.create_release.outputs.release_id }} @@ -286,8 +295,9 @@ jobs: - name: Package (macos) uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} with: + github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} packager_formats: dmg releaseId: ${{ needs.create_release.outputs.release_id }} @@ -308,8 +318,9 @@ jobs: - name: Package (windows) uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} with: + github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} packager_formats: nsis releaseId: ${{ needs.create_release.outputs.release_id }} @@ -327,7 +338,7 @@ jobs: - name: Package (android) uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false @@ -335,6 +346,7 @@ jobs: --config profile.dev.strip=true --config profile.dev.debug-assertions=false with: + github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} args: --target aarch64-linux-android releaseId: ${{ needs.create_release.outputs.release_id }} @@ -353,7 +365,7 @@ jobs: if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload_testflight == 'true' }} uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false @@ -373,6 +385,7 @@ jobs: APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} with: + github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} args: --target aarch64-apple-ios releaseId: ${{ needs.create_release.outputs.release_id }} @@ -380,7 +393,7 @@ jobs: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.upload_testflight != 'true' }} uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ github.token }} + GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false @@ -396,5 +409,6 @@ jobs: APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} APPLE_SIGNING_IDENTITY: Apple Development with: + github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} args: --target aarch64-apple-ios releaseId: ${{ needs.create_release.outputs.release_id }} From 817f2ec3d4ce0eece16dbafa258d5fc2ee7d4ba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tyrese=20Luo=EF=BC=88=E7=BE=85=E5=81=A5=E5=B3=AF=EF=BC=89?= Date: Wed, 11 Feb 2026 17:06:21 +0800 Subject: [PATCH 5/6] ci(release): use only ROBRIX_RELEASE token in workflow --- .github/workflows/release.yml | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8c87e698..2aab91dd7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -226,16 +226,14 @@ jobs: name: ${{ steps.resolve.outputs.name }} draft: ${{ github.event_name == 'workflow_dispatch' }} prerelease: ${{ (github.event_name == 'workflow_dispatch' && github.event.inputs.pre_release == 'true') || (github.event_name == 'push' && contains(github.ref, '-')) }} - token: ${{ secrets.ROBRIX_RELEASE || github.token }} - env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} + token: ${{ secrets.ROBRIX_RELEASE }} - name: Verify release access shell: bash run: | gh api "repos/${{ github.repository }}/releases/${{ steps.create_release.outputs.id }}" --jq '.id' env: - GH_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} + GH_TOKEN: ${{ secrets.ROBRIX_RELEASE }} for_linux: name: Release Robrix for Linux (${{ matrix.os }}, ${{ matrix.arch }}) @@ -271,10 +269,8 @@ jobs: - name: Package (desktop) uses: project-robius/makepad-packaging-action@main - env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} with: - github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} + github_token: ${{ secrets.ROBRIX_RELEASE }} packager_formats: deb releaseId: ${{ needs.create_release.outputs.release_id }} @@ -294,10 +290,8 @@ jobs: - name: Package (macos) uses: project-robius/makepad-packaging-action@main - env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} with: - github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} + github_token: ${{ secrets.ROBRIX_RELEASE }} packager_formats: dmg releaseId: ${{ needs.create_release.outputs.release_id }} @@ -317,10 +311,8 @@ jobs: - name: Package (windows) uses: project-robius/makepad-packaging-action@main - env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} with: - github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} + github_token: ${{ secrets.ROBRIX_RELEASE }} packager_formats: nsis releaseId: ${{ needs.create_release.outputs.release_id }} @@ -338,7 +330,6 @@ jobs: - name: Package (android) uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false @@ -346,7 +337,7 @@ jobs: --config profile.dev.strip=true --config profile.dev.debug-assertions=false with: - github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} + github_token: ${{ secrets.ROBRIX_RELEASE }} args: --target aarch64-linux-android releaseId: ${{ needs.create_release.outputs.release_id }} @@ -365,7 +356,6 @@ jobs: if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload_testflight == 'true' }} uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false @@ -385,7 +375,7 @@ jobs: APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }} APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }} with: - github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} + github_token: ${{ secrets.ROBRIX_RELEASE }} args: --target aarch64-apple-ios releaseId: ${{ needs.create_release.outputs.release_id }} @@ -393,7 +383,6 @@ jobs: if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.upload_testflight != 'true' }} uses: project-robius/makepad-packaging-action@main env: - GITHUB_TOKEN: ${{ secrets.ROBRIX_RELEASE || github.token }} MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 --config profile.dev.debug=false @@ -409,6 +398,6 @@ jobs: APPLE_KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} APPLE_SIGNING_IDENTITY: Apple Development with: - github_token: ${{ secrets.ROBRIX_RELEASE || github.token }} + github_token: ${{ secrets.ROBRIX_RELEASE }} args: --target aarch64-apple-ios releaseId: ${{ needs.create_release.outputs.release_id }} From a4a1b8e5ccfc1cca872a228ba41f7cf861b0680f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tyrese=20Luo=EF=BC=88=E7=BE=85=E5=81=A5=E5=B3=AF=EF=BC=89?= Date: Wed, 11 Feb 2026 18:03:42 +0800 Subject: [PATCH 6/6] ci(release): pin packaging action to v1 --- .github/workflows/release.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2aab91dd7..a6b626e23 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -268,7 +268,7 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (desktop) - uses: project-robius/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@v1 with: github_token: ${{ secrets.ROBRIX_RELEASE }} packager_formats: deb @@ -289,7 +289,7 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (macos) - uses: project-robius/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@v1 with: github_token: ${{ secrets.ROBRIX_RELEASE }} packager_formats: dmg @@ -310,7 +310,7 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (windows) - uses: project-robius/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@v1 with: github_token: ${{ secrets.ROBRIX_RELEASE }} packager_formats: nsis @@ -328,7 +328,7 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Package (android) - uses: project-robius/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@v1 env: MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 @@ -354,7 +354,7 @@ jobs: - name: Package (iOS + TestFlight) if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload_testflight == 'true' }} - uses: project-robius/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@v1 env: MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0 @@ -381,7 +381,7 @@ jobs: - name: Package (iOS) if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.upload_testflight != 'true' }} - uses: project-robius/makepad-packaging-action@main + uses: project-robius/makepad-packaging-action@v1 env: MAKEPAD_MOBILE_CARGO_EXTRA_ARGS: >- --config profile.dev.opt-level=0