Skip to content

0.10.57

0.10.57 #23

Workflow file for this run

name: Build macOS
on:
release:
types: [published]
jobs:
deploy:
runs-on: ${{ matrix.cfg.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
cfg:
- {os: macos-15-intel, python-version: '3.11', architecture: x64}
- {os: macos-15, python-version: '3.11', architecture: arm64}
steps:
- name: Clone
uses: actions/checkout@v6
- name: Set up Python ${{ matrix.cfg.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.cfg.python-version }}
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
- name: Install dependencies
run: |
pip install twine pyinstaller~=6.18 build
- name: Setup
run: |
export BDISTWHEELFREEZELIBS=true
python -m build
python -m pip install dist/amulet_map_editor-*.whl --upgrade
- name: MacOS - Store Credentials
run: |
xcrun notarytool store-credentials \
"notary-profile" \
--apple-id "${{ secrets.APPLE_ID }}" \
--team-id "${{ secrets.APPLE_TEAM_ID }}" \
--password "${{ secrets.APPLE_PASSWORD }}"
- name: MacOS - Import Developer ID Certificate
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/developer_id.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
echo -n "${{ secrets.APPLE_P12_BASE64 }}" | base64 --decode -o "$CERTIFICATE_PATH"
security create-keychain -p "${{ secrets.APPLE_KEYCHAIN_PASSWORD }}" "$KEYCHAIN_PATH"
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
security unlock-keychain -p "${{ secrets.APPLE_KEYCHAIN_PASSWORD }}" "$KEYCHAIN_PATH"
security import "$CERTIFICATE_PATH" -P "${{ secrets.APPLE_P12_PASSWORD }}" -A -t cert -f pkcs12 -k "$KEYCHAIN_PATH"
security set-key-partition-list -S apple-tool:,apple: -k "${{ secrets.APPLE_KEYCHAIN_PASSWORD }}" "$KEYCHAIN_PATH"
security list-keychain -d user -s "$KEYCHAIN_PATH"
security default-keychain -s "$KEYCHAIN_PATH"
- name: PyInstaller build
env:
APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
run: |
python -m PyInstaller -y --distpath ./installer/dist installer/Amulet.spec
- name: MacOS - Create DMG
run: |
brew install create-dmg
mkdir -p "installer/dist/dmg"
ditto "installer/dist/Amulet ${{ github.event.release.tag_name }}.app" "installer/dist/dmg/Amulet ${{ github.event.release.tag_name }}.app"
codesign --verify --deep --strict "installer/dist/dmg/Amulet ${{ github.event.release.tag_name }}.app"
create-dmg \
--volname "Amulet ${{ github.event.release.tag_name }} installer" \
--volicon "installer/logo.icns" \
--window-pos 200 120 \
--window-size 600 300 \
--icon-size 100 \
--icon "Amulet ${{ github.event.release.tag_name }}.app" 175 120 \
--hide-extension "Amulet ${{ github.event.release.tag_name }}.app" \
--app-drop-link 425 120 \
"installer/dist/Amulet-${{ github.event.release.tag_name }}-macOS-${{ matrix.cfg.architecture }}.dmg" \
"installer/dist/dmg"
rm -rf "installer/dist/Amulet ${{ github.event.release.tag_name }}.app"
rm -rf installer/dist/amulet
rm -rf installer/dist/dmg
- name: MacOS - Notarise DMG
run: |
xcrun notarytool submit \
"installer/dist/Amulet-${{ github.event.release.tag_name }}-macOS-${{ matrix.cfg.architecture }}.dmg" \
--keychain-profile "notary-profile" \
--team-id "${{ secrets.APPLE_TEAM_ID }}" \
--wait
xcrun stapler staple \
"installer/dist/Amulet-${{ github.event.release.tag_name }}-macOS-${{ matrix.cfg.architecture }}.dmg"
- name: Publish to PyPi
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.AMULET_MAP_EDITOR_PYPI_PASSWORD }}
run: |
twine upload dist/amulet[_-]map[_-]editor*.tar.gz --skip-existing
- name: Upload Release Asset
uses: actions/upload-artifact@v6
with:
name: Amulet-${{ github.event.release.tag_name }}-${{ runner.os }}-${{ matrix.cfg.architecture }}
path: ./installer/dist