Skip to content

Latest commit

 

History

History
68 lines (47 loc) · 3.22 KB

developers-guide-osx.md

File metadata and controls

68 lines (47 loc) · 3.22 KB

Metabase OS X App

NOTE: These instructions are only for packaging a built Metabase uberjar into Metabase.app. They are not useful if your goal is to work on Metabase itself; for development, please see our developers' guide.

Prereqs

  1. Install XCode.

  2. Install XCode command-line tools. In Xcode > Preferences > Locations select your current Xcode version in the Command Line Tools drop-down.

  3. Run ./bin/build to build the latest version of the uberjar.

  4. Next, you'll need to run the following commands before building the app:

      # Fetch and initialize git submodule
      git submodule update --init
    
      # Install Perl modules used by ./bin/osx-setup and ./bin/osx-release
      # You may have to run this as sudo if you didn't upgrade perl as described in step above
      cpan install File::Copy::Recursive Readonly String::Util Text::Caml
    
      # Copy JRE and uberjar
      ./bin/osx-setup

./bin/osx-setup will build run commands to build the uberjar for you if needed. Run ./bin/osx-setup again at any time in the future to copy the latest version of the uberjar into the project.

(If the script fails near the end, you can just copy the JARs in question to OSX/Resources/metabase.jar and OSX/Resources/reset-password.jar.)

Releasing

A handy Perl script called ./bin/osx-release takes care of all of the details for you. Before you run it for the first time, you'll need to set up a few additional things:

# Install aws command-line client (if needed)
brew install awscli

# Configure AWS Credentials
# You'll need credentials that give you permission to write the metabase-osx-releases S3 bucket.
# You just need the access key ID and secret key; use the defaults for locale and other options.
aws configure --profile metabase

# Obtain a copy of the private key used for signing the app (ask Cam)
# and put a copy of it at ./dsa_priv.pem
cp /path/to/private/key.pem OSX/dsa_priv.pem

You'll need the Apple Developer ID Application Certificate in your computer's keychain. You'll need to generate a Certificate Signing Request from Keychain Access, and have Sameer go to the Apple Developer Site and generate one for you, then load the file on your computer.

Finally, you may need to open the project a single time in Xcode to make sure the appropriate "build schemes" are generated (these are not checked into CI). Run open OSX/Metabase.xcodeproj to open the project, which will automatically generate the appropriate schemes. This only needs to be done once.

After that, you are good to go:

# Bundle entire app, and upload to s3
./bin/osx-release

Debugging ./bin/osx-release

  • You can run individual steps of the release script by passing in the appropriate step subroutines. e.g. ./bin/osx-release create_dmg upload. The entire sequence of different steps can be found at the bottom of ./bin/osx-release.
  • Generating the DMG seems to be somewhat finicky, so if it fails with a message like "Device busy" trying the step again a few times usually resolves the issue. You can continue the build process from the DMG creation step by running ./bin/osx-release create_dmg upload.