diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index b087a02f0..c51a51641 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -29,10 +29,13 @@ jobs: uses: actions/checkout@v3 with: ref: ${{ github.event.inputs.branch }} - - name: Set up Python ${{ inputs.python_version }} - uses: actions/setup-python@v4 + - name: Install uv + uses: astral-sh/setup-uv@v4 with: - python-version: ${{ inputs.python_version }} + enable-cache: true + cache-dependency-glob: "uv.lock" + - name: Set up Python ${{ inputs.python_version }} + run: uv python install ${{ inputs.python_version }} - name: Install system dependencies run: | brew install openssl readline xz @@ -40,23 +43,16 @@ jobs: run: | brew install --cask sparkle brew install create-dmg - pip3 install --break-system-packages --upgrade pip setuptools wheel - pip3 install --break-system-packages -r dev.txt - working-directory: requirements.d - - name: Install Vorta - run: | - pip3 install --break-system-packages . + uv sync --group dev - name: Package with PyInstaller run: | - if [ "$(uname -m)" = "arm64" ]; then BORG_BINARY="borg-macos-14-arm64-gh"; else BORG_BINARY="borg-macos-13-x86_64-gh"; fi - pyinstaller --clean --noconfirm package/vorta.spec + if [ "$(uname -m)" = "arm64" ]; then BORG_ARCHIVE="borg-macos-14-arm64-gh.tgz"; else BORG_ARCHIVE="borg-macos-13-x86_64-gh.tgz"; fi + uv run pyinstaller --clean --noconfirm package/vorta.spec cp -R $(brew --prefix)/Caskroom/sparkle/*/Sparkle.framework dist/Vorta.app/Contents/Frameworks/ - curl -LJO https://github.com/borgbackup/borg/releases/download/${{ github.event.inputs.borg_version }}/${BORG_BINARY} - xattr -dr com.apple.quarantine ./${BORG_BINARY} - chmod +x ./${BORG_BINARY} - mkdir -p dist/Vorta.app/Contents/Resources/borg-dir - mv ./${BORG_BINARY} dist/Vorta.app/Contents/Resources/borg-dir/borg.exe - cd dist && zip -rq --symlinks Vorta.zip Vorta.app + curl -LJO https://github.com/borgbackup/borg/releases/download/${{ github.event.inputs.borg_version }}/${BORG_ARCHIVE} + tar -xzf ./${BORG_ARCHIVE} + xattr -dr com.apple.quarantine ./borg-dir + mv ./borg-dir dist/Vorta.app/Contents/Resources/ - name: Codesign executable continue-on-error: false @@ -75,9 +71,18 @@ jobs: security unlock-keychain -p 123 build.keychain security import certificate.p12 -k build.keychain -A -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k 123 build.keychain - python3 ../package/fix_app_qt_folder_names_for_codesign.py Vorta.app + uv run python ../package/fix_app_qt_folder_names_for_codesign.py Vorta.app sh ../package/macos-package-app.sh + - name: Rename DMG + id: rename + run: | + VERSION=$(uv run python -c "from src.vorta._version import __version__; print(__version__)") + if [ "$(uname -m)" = "arm64" ]; then ARCH="arm"; else ARCH="intel"; fi + DMG_NAME="Vorta-v${VERSION}-${ARCH}.dmg" + mv dist/Vorta.dmg "dist/${DMG_NAME}" + echo "dmg_name=${DMG_NAME}" >> $GITHUB_OUTPUT + # - name: Setup tmate session # uses: mxschmitt/action-tmate@v3 # if: ${{ failure() }} @@ -86,6 +91,6 @@ jobs: - name: Upload build uses: actions/upload-artifact@v4 with: - name: Vorta-${{ runner.arch == 'ARM64' && 'arm64' || 'x86_64' }}.dmg - path: dist/Vorta.dmg + name: ${{ steps.rename.outputs.dmg_name }} + path: dist/Vorta-v*-*.dmg retention-days: 60