mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 13:01:38 +00:00
* bump * Add sheet name to export for base load function * Disable pylint due to known issue with pylint and pandas * Add robust option if file already exists * Abstract the sheet name argument into the export data helper * Feature flag for auto overwrite * add to featflag menu * Add featflag to builds * Remove safety check * Fix test
186 lines
12 KiB
YAML
Vendored
186 lines
12 KiB
YAML
Vendored
name: Intel MacOS Build
|
|
|
|
env:
|
|
OPENBB_ENABLE_QUICK_EXIT: true
|
|
OPENBB_LOG_COLLECT: false
|
|
OPENBB_USE_ION: false
|
|
OPENBB_USE_PROMPT_TOOLKIT: false
|
|
OPENBB_FILE_OVERWRITE: true
|
|
PIP_DEFAULT_TIMEOUT: 100
|
|
PYTHONNOUSERSITE: 1
|
|
|
|
on: workflow_dispatch
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
Build:
|
|
name: Intel MacOS Build
|
|
runs-on: [self-hosted, macos, x64]
|
|
steps:
|
|
# Checkout repository main branch. this allows for the commit hashes to line up
|
|
- name: Checkout
|
|
uses: actions/checkout@v2.4.2
|
|
- name: Git Log
|
|
run: git log
|
|
# Install create-dmg
|
|
- name: Install create-dmg
|
|
run: brew install create-dmg
|
|
# The following commands to clear previous PATHS and restore to defaults since we have to maintain the instance ourselves
|
|
- name: Clean Previous Path
|
|
run: |
|
|
export PATH=""
|
|
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
|
|
echo $PATH
|
|
# Set up caching for conda env so that the workflow runs quickly after the first time
|
|
- name: Setup Conda Caching
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/conda_pkgs_dir
|
|
key: conda-macos-3-9-${{ hashFiles('build/conda/conda-3-9-env-full.yaml') }}
|
|
# Set up miniconda using the environment yaml file within the repo
|
|
- name: Setup Miniconda
|
|
uses: conda-incubator/setup-miniconda@v2.2.0
|
|
with:
|
|
miniconda-version: "latest"
|
|
auto-update-conda: true
|
|
channels: conda-forge,defaults
|
|
show-channel-urls: true
|
|
channel-priority: flexible
|
|
environment-file: build/conda/conda-3-9-env-full.yaml
|
|
activate-environment: build_env
|
|
use-only-tar-bz2: true # Needed for caching some reason
|
|
- name: Run Poetry
|
|
run: poetry install
|
|
- name: Install Pyinstaller
|
|
run: poetry install -E installer
|
|
- name: Install Portfolio Optimization and Forecasting Toolkits
|
|
run: poetry install -E all
|
|
- name: Install Specific Papermill
|
|
run: |
|
|
pip uninstall papermill -y
|
|
pip install git+https://github.com/nteract/papermill.git@main
|
|
# This is basically the same as build4mac.sh
|
|
- name: Build Bundle
|
|
run: |
|
|
pyinstaller build/pyinstaller/terminal.spec --clean
|
|
osascript build/pyinstaller/setup_icons.applescript
|
|
mkdir DMG
|
|
cp -r build/pyinstaller/macOS_package_assets/* DMG/
|
|
mv dist/OpenBBTerminal DMG/OpenBB\ Terminal/.OpenBB
|
|
- name: Creating Keychain
|
|
env:
|
|
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
|
|
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
|
|
MACOS_KEYCHAIN_PWD: ${{ secrets.MACOS_KEYCHAIN_PWD }}
|
|
MACOS_CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
|
|
run: | # when pushing to main, make to generate new cert, and utilize secrets to store new password, and identity
|
|
echo "Decoding"
|
|
echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12
|
|
echo "Creating Keychain"
|
|
security create-keychain -p $MACOS_KEYCHAIN_PWD build.keychain
|
|
echo "Setting Default Keychain"
|
|
security default-keychain -s build.keychain
|
|
echo "Unlocking Keychain"
|
|
security unlock-keychain -p $MACOS_KEYCHAIN_PWD build.keychain
|
|
echo "Importing Keychain"
|
|
security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign
|
|
echo "Setting Partition List"
|
|
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $MACOS_KEYCHAIN_PWD build.keychain
|
|
- name: Codesign Specific Binaries
|
|
env:
|
|
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
|
|
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
|
|
MACOS_KEYCHAIN_PWD: ${{ secrets.MACOS_KEYCHAIN_PWD }}
|
|
MACOS_CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
|
|
run: |
|
|
echo "Code Signing SO Files"
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*.so
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*.so
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*/*.so
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*/*/*.so
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*/*/*/*.so
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*/*/*/*/*.so
|
|
echo "Code Signing DYLIB Files"
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/*/*/*/*/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/.dylibs/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/stan_model/cmdstan-2.26.1/stan/lib/stan_math/lib/tbb/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/torch/.dylibs/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/sklearn/.dylibs/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/scipy/.dylibs/*.dylib
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/xgboost/.dylibs/*.dylib
|
|
|
|
echo "Code Signing Other Files"
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/stan_model/prophet_model.bin
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/stan_model/cmdstan-2.26.1/bin/diagnose
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/stan_model/cmdstan-2.26.1/bin/print
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/stan_model/cmdstan-2.26.1/bin/stanc
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/prophet/stan_model/cmdstan-2.26.1/bin/stansummary
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/pyarrow/plasma-store-server
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/torch/bin/protoc
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/torch/bin/protoc-3.13.0.0
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/torch/bin/torch_shm_manager
|
|
echo "Code Sign OpenBB Executable File"
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY DMG/OpenBB\ Terminal/.OpenBB/OpenBBTerminal
|
|
- name: Create DMG
|
|
run: create-dmg --volname "OpenBB Terminal" --volicon "images/dmg_volume.icns" --background "images/openbb_dmg_background.png" --icon "OpenBB Terminal" 190 250 --window-pos 190 120 --window-size 800 400 --icon-size 100 --text-size 14 --app-drop-link 600 250 --eula LICENSE --format UDZO --no-internet-enable "OpenBB Terminal".dmg DMG
|
|
- name: Code Sign DMG Installer
|
|
env:
|
|
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
|
|
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
|
|
MACOS_KEYCHAIN_PWD: ${{ secrets.MACOS_KEYCHAIN_PWD }}
|
|
MACOS_CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
|
|
run: |
|
|
echo "Code Signing DMG Installer"
|
|
/usr/bin/codesign --deep --force --verify --verbose --options runtime --entitlements "build/pyinstaller/entitlements.plist" -s $MACOS_CODESIGN_IDENTITY OpenBB\ Terminal.dmg
|
|
echo "Verify Signing"
|
|
codesign --verify --deep --strict --verbose=2 OpenBB\ Terminal.dmg
|
|
- name: Deleting Previous Keychain
|
|
run: |
|
|
echo "Deleting Previous Keychain to Clean Instance"
|
|
rm -rf /Users/openbb/Library/Keychains/build.keychain-db
|
|
- name: Clean up Build Artifacts
|
|
run: |
|
|
rm -rf build/terminal
|
|
rm -rf dist
|
|
rm -rf DMG
|
|
- name: Notorize DMG
|
|
env:
|
|
NOTARIZE_APPLE_ID: ${{ secrets.NOTARIZE_APPLE_ID }}
|
|
NOTARIZE_APPLE_PWD: ${{ secrets.NOTARIZE_APPLE_PWD }}
|
|
NOTARIZE_APPLE_TEAM_ID: ${{ secrets.NOTARIZE_APPLE_TEAM_ID }}
|
|
run: |
|
|
xcrun notarytool submit OpenBB\ Terminal.dmg --apple-id "$NOTARIZE_APPLE_ID" --password "$NOTARIZE_APPLE_PWD" --team-id "$NOTARIZE_APPLE_TEAM_ID" --wait
|
|
- name: Staple
|
|
run: |
|
|
xcrun stapler staple "OpenBB Terminal.dmg"
|
|
- name: Save Build Artifact DMG
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Intel MacOS DMG Artifact
|
|
path: OpenBB\ Terminal.dmg
|
|
- name: Convert & Mount DMG
|
|
run: | # Remove the converting disc image at the end
|
|
hdiutil convert OpenBB\ Terminal.dmg -format UDTO -o openbbterminal.cdr
|
|
hdiutil attach openbbterminal.cdr
|
|
rm -rf openbbterminal.cdr
|
|
- name: Directory Change
|
|
run: |
|
|
cd
|
|
cd /Volumes/OpenBB\ Terminal
|
|
ls
|
|
cp -R OpenBB\ Terminal ~/Desktop
|
|
- name: Unmount DMG
|
|
run: hdiutil detach /dev/disk2
|
|
- name: Run Integration Tests
|
|
run: /Users/openbb/Desktop/OpenBB\ Terminal/.OpenBB/OpenBBTerminal /Users/openbb/actions-runner/_work/OpenBBTerminal/OpenBBTerminal/openbb_terminal/miscellaneous/integration_tests_scripts -t
|
|
- name: Remove OpenBB Folder
|
|
run: rm -rf /Users/openbb/Desktop/OpenBB\ Terminal
|
|
- name: Remove OpenBB Exports Folder
|
|
run: rm -rf ~/Desktop/OPENBB-exports
|