app launches python modules
This commit is contained in:
@@ -6,7 +6,7 @@ on:
|
||||
- 'v*' # Trigger on version tags
|
||||
branches:
|
||||
- main # Also build on main branch for testing
|
||||
- app-staging # Add app-staging for testing
|
||||
- python-modules # Add app-staging for testing
|
||||
pull_request:
|
||||
branches:
|
||||
- staging # Test builds on PRs to staging
|
||||
@@ -41,18 +41,12 @@ jobs:
|
||||
uv python install
|
||||
uv sync --locked --all-extras
|
||||
|
||||
- name: Install Python Bindings
|
||||
run: |
|
||||
uv pip install dist/exo_pyo3_bindings-*.whl
|
||||
|
||||
- name: Verify Python Environment
|
||||
run: |
|
||||
uv run python -c "import exo_pyo3_bindings; print('Python bindings installed successfully')"
|
||||
uv run python -c "import master.main; print('Master module available')"
|
||||
uv run python -c "import worker.main; print('Worker module available')"
|
||||
|
||||
- name: Prepare Code Signing Keychain
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||
env:
|
||||
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
|
||||
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
|
||||
@@ -79,35 +73,23 @@ jobs:
|
||||
cd app/exov2
|
||||
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
|
||||
|
||||
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == refs/tags/v* ]]; then
|
||||
# Release build with code signing
|
||||
security unlock-keychain -p "$MACOS_CERTIFICATE_PASSWORD" exov2.keychain
|
||||
SIGNING_IDENTITY=$(security find-identity -v -p codesigning | awk -F '"' '{print $2}')
|
||||
|
||||
xcodebuild clean build \
|
||||
-project exov2.xcodeproj \
|
||||
-scheme exov2 \
|
||||
-configuration Release \
|
||||
-derivedDataPath build \
|
||||
CODE_SIGNING_IDENTITY="$SIGNING_IDENTITY" \
|
||||
PROVISIONING_PROFILE_SPECIFIER="Exo Provisioning Profile" \
|
||||
CODE_SIGN_INJECT_BASE_ENTITLEMENTS=YES \
|
||||
OTHER_CODE_SIGN_FLAGS="--timestamp"
|
||||
else
|
||||
# Debug build without code signing for testing
|
||||
xcodebuild clean build \
|
||||
-project exov2.xcodeproj \
|
||||
-scheme exov2 \
|
||||
-configuration Debug \
|
||||
-derivedDataPath build \
|
||||
CODE_SIGN_IDENTITY="" \
|
||||
CODE_SIGNING_REQUIRED=NO
|
||||
fi
|
||||
# Release build with code signing
|
||||
security unlock-keychain -p "$MACOS_CERTIFICATE_PASSWORD" exov2.keychain
|
||||
SIGNING_IDENTITY=$(security find-identity -v -p codesigning | awk -F '"' '{print $2}')
|
||||
|
||||
xcodebuild clean build \
|
||||
-project exov2.xcodeproj \
|
||||
-scheme exov2 \
|
||||
-configuration Release \
|
||||
-derivedDataPath build \
|
||||
CODE_SIGNING_IDENTITY="$SIGNING_IDENTITY" \
|
||||
PROVISIONING_PROFILE_SPECIFIER="Exo Provisioning Profile" \
|
||||
CODE_SIGN_INJECT_BASE_ENTITLEMENTS=YES \
|
||||
OTHER_CODE_SIGN_FLAGS="--timestamp"
|
||||
|
||||
mv build/Build/Products/*/exov2.app ../../
|
||||
mv build/Build/Products/*/EXO.app ../../
|
||||
|
||||
- name: Sign and Create DMG (Release only)
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||
- name: Sign, Notarize, and Create DMG
|
||||
env:
|
||||
APPLE_NOTARIZATION_USERNAME: ${{ secrets.APPLE_NOTARIZATION_USERNAME }}
|
||||
APPLE_NOTARIZATION_PASSWORD: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }}
|
||||
@@ -119,21 +101,21 @@ jobs:
|
||||
|
||||
# Sign the app
|
||||
/usr/bin/codesign --deep --force --timestamp --options runtime \
|
||||
--sign "$SIGNING_IDENTITY" exov2.app
|
||||
--sign "$SIGNING_IDENTITY" EXO.app
|
||||
|
||||
# Verify the signing
|
||||
codesign -dvv exov2.app
|
||||
codesign -dvv EXO.app
|
||||
|
||||
# Create DMG
|
||||
mkdir -p tmp/dmg-contents
|
||||
cp -r ./exov2.app tmp/dmg-contents/
|
||||
cp -r ./EXO.app tmp/dmg-contents/
|
||||
ln -s /Applications tmp/dmg-contents/Applications
|
||||
VERSION=$(git describe --tags --abbrev=0 | sed 's/^v//')
|
||||
DMG_NAME="exo.dmg"
|
||||
|
||||
# Create and sign DMG
|
||||
hdiutil create -volname "Exo" -srcfolder tmp/dmg-contents -ov -format UDZO exov2-${VERSION}.dmg
|
||||
hdiutil create -volname "Exo" -srcfolder tmp/dmg-contents -ov -format UDZO "$DMG_NAME"
|
||||
/usr/bin/codesign --deep --force --timestamp --options runtime \
|
||||
--sign "$SIGNING_IDENTITY" exov2-${VERSION}.dmg
|
||||
--sign "$SIGNING_IDENTITY" "$DMG_NAME"
|
||||
|
||||
# Setup notarization credentials (optional - comment out if no notarization secrets)
|
||||
if [[ -n "$APPLE_NOTARIZATION_USERNAME" ]]; then
|
||||
@@ -146,24 +128,14 @@ jobs:
|
||||
xcrun notarytool submit --wait \
|
||||
--team-id "$APPLE_NOTARIZATION_TEAM" \
|
||||
--keychain-profile notary_pass \
|
||||
exov2-${VERSION}.dmg
|
||||
"$DMG_NAME"
|
||||
|
||||
# Staple the notarization
|
||||
xcrun stapler staple exov2-${VERSION}.dmg
|
||||
xcrun stapler staple "$DMG_NAME"
|
||||
fi
|
||||
|
||||
- name: Create DMG (Debug builds)
|
||||
if: github.event_name != 'push' || !startsWith(github.ref, 'refs/tags/v')
|
||||
run: |
|
||||
mkdir -p tmp/dmg-contents
|
||||
cp -r ./exov2.app tmp/dmg-contents/
|
||||
ln -s /Applications tmp/dmg-contents/Applications
|
||||
VERSION=$(git rev-parse --short HEAD)
|
||||
|
||||
hdiutil create -volname "Exo Debug" -srcfolder tmp/dmg-contents -ov -format UDZO exov2-debug-${VERSION}.dmg
|
||||
|
||||
- name: Cleanup Keychain
|
||||
if: always() && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||
if: always()
|
||||
run: |
|
||||
security default-keychain -s login.keychain
|
||||
security delete-keychain exov2.keychain
|
||||
@@ -171,11 +143,11 @@ jobs:
|
||||
- name: Upload DMG file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: exov2-dmg
|
||||
path: exov2*.dmg
|
||||
name: exo-dmg
|
||||
path: exo.dmg
|
||||
|
||||
- name: Upload App Bundle
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: exov2-app
|
||||
path: exov2.app/
|
||||
path: EXO.app/
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
@@ -24,7 +24,7 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
E07D64BA2E36127E009BFB4D /* exov2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = exov2.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E07D64BA2E36127E009BFB4D /* EXO.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EXO.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E07D64CB2E36127F009BFB4D /* exov2Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exov2Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E07D64D52E36127F009BFB4D /* exov2UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exov2UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -85,7 +85,7 @@
|
||||
E07D64BB2E36127E009BFB4D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E07D64BA2E36127E009BFB4D /* exov2.app */,
|
||||
E07D64BA2E36127E009BFB4D /* EXO.app */,
|
||||
E07D64CB2E36127F009BFB4D /* exov2Tests.xctest */,
|
||||
E07D64D52E36127F009BFB4D /* exov2UITests.xctest */,
|
||||
);
|
||||
@@ -114,7 +114,7 @@
|
||||
packageProductDependencies = (
|
||||
);
|
||||
productName = exov2;
|
||||
productReference = E07D64BA2E36127E009BFB4D /* exov2.app */;
|
||||
productReference = E07D64BA2E36127E009BFB4D /* EXO.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
E07D64CA2E36127F009BFB4D /* exov2Tests */ = {
|
||||
@@ -399,6 +399,7 @@
|
||||
DEVELOPMENT_ASSET_PATHS = "\"exov2/Preview Content\"";
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = EXO;
|
||||
INFOPLIST_KEY_LSUIElement = YES;
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -407,7 +408,7 @@
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = exolabs.exov2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PRODUCT_NAME = EXO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
@@ -425,6 +426,7 @@
|
||||
DEVELOPMENT_ASSET_PATHS = "\"exov2/Preview Content\"";
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = EXO;
|
||||
INFOPLIST_KEY_LSUIElement = YES;
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
@@ -433,7 +435,7 @@
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = exolabs.exov2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PRODUCT_NAME = EXO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
|
||||
BIN
Binary file not shown.
@@ -16,7 +16,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E07D64B92E36127E009BFB4D"
|
||||
BuildableName = "exov2.app"
|
||||
BuildableName = "EXO.app"
|
||||
BlueprintName = "exov2"
|
||||
ReferencedContainer = "container:exov2.xcodeproj">
|
||||
</BuildableReference>
|
||||
@@ -69,7 +69,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E07D64B92E36127E009BFB4D"
|
||||
BuildableName = "exov2.app"
|
||||
BuildableName = "EXO.app"
|
||||
BlueprintName = "exov2"
|
||||
ReferencedContainer = "container:exov2.xcodeproj">
|
||||
</BuildableReference>
|
||||
@@ -93,7 +93,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "E07D64B92E36127E009BFB4D"
|
||||
BuildableName = "exov2.app"
|
||||
BuildableName = "EXO.app"
|
||||
BlueprintName = "exov2"
|
||||
ReferencedContainer = "container:exov2.xcodeproj">
|
||||
</BuildableReference>
|
||||
|
||||
Reference in New Issue
Block a user