# Environment Setup

All of Marfeel's codebase is on GitHub, in the Marfeel Organisation (opens new window). You can access all the repositories with the Marfeel GitHub credentials that you received from Systems.

# Preliminary checks

# GitHub's TFA

For a successful setup, the Two Factor Authentication in Github (opens new window) must be disabled.

Do enable it at the end of the process!

# Homebrew and git

Your computer must have Homebrew and git installed:

$ brew --version
Homebrew 2.1.14
Homebrew/homebrew-core (git revision cdb2; last commit 2019-10-14)
Homebrew/homebrew-cask (git revision 25842; last commit 2019-10-14)

$ git --version
git version 2.20.1

TIP

The exact version will vary depending on when you run this command. All recent versions are fine.

If it is missing, install Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Apple ID

Setup a valid Apple ID (opens new window), and associate it with your Marfeel laptop. This is important in order to use the App Store, and in case your laptop is stolen.

# Setup

One command installs everything needed for development at Marfeel.

WARNING

We recommend running the setup process from the default Terminal app rather than your preferred one (e.g., iTerm). Feel free to switch once everything is working!

Before you start, make sure your OS is up-to-date!

Create a marfeel folder in your local environment, enter it and clone the MarfeelXP Project:

$ mkdir ~/marfeel
$ cd ~/marfeel
$ git clone https://github.com/Marfeel/MarfeelXP.git && cd MarfeelXP && ./Jinks/bin/mrf-env -a

This command:

  • Installs Marfeel's recommended IDEs (VsCode for the frontend, IntelliJ for the backend),
  • Installs our Java, node, maven, etc versions.
  • Walks you through configuring SSH and GitHub keys,
  • Clones all the required Marfeel repositories.

Read the output carefully

As the command executes, you are required to execute some actions. Copying files, setting up your GitHub token...

If you don't understand a prompt, ask your buddy!

The setup process configures Bash shell. Once everything works, if you want to use any other shell (such as zsh) you must add source ~/.bash_profile in the config file of your terminal.

# Background services

  • Once mrf-env is finished running, check which services are running:
$ brew services list
Name               Status  User Plist
mongodb-community  started root /Library/LaunchDaemons/homebrew.mxcl.mongodb-community.plist
nginx              started root /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
mysql              stopped

You must find nginx and MongoDB as started on this list.

Start any missing service:

brew services start {service_name}

Pinned versions

Marfeel environment requires the following versions:

  • Groovy --- 2.5.5
  • Java --- Java8
  • OpenSSL --- 1.0.2

# NVM

The mrf-env utility installs Node 8, 10 and 12 using NVM. Node 12 is being used by default as it is the required version for working with XPLib Media Groups, however you can switch to, or install, a different version with nvm (opens new window):

#install a specific Node version
nvm install 13.6.0

#use a specific Node version
nvm use 13.6.0

#list Node versions already installed on your system
nvm ls

#list Node versions available to install
nvm ls-remote

# JIRA (opens new window)

JIRA is a tracking tool that Marfeel uses to manage all tasks for all Marfeel teams. There are a series of team boards ranging from a board for each Solutions team, Core team, Customer Success, and even the Sales team managing and tracking everything from:

  • New demos to be built for prospects
  • A new GoLive to be built
  • A customer request for a new ad configuration
  • New features to be integrated in Marfeel
  • ...

Each Marfeel engineer has their own JIRA board where they are assigned tasks by the Marfeeler triaging all the tickets that are created or assigned to that particular team.

The Marfeel engineer is then responsible for transitioning the ticket through the appropriate stages as they progress towards resolution, and using the commenting feature to clarify anything regarding the ticket with other Marfeelers.

Whenever Marfeel engineers merge to master, their pull requests must always be linked to the associated JIRA ticket for the development. Read more about pull requests.

# Jenkins

Jenkins (opens new window) is Marfeel's automation server that Marfeel uses as its continuous integration tool.

It's the tool Marfeel uses to shuttle commits into production so Marfeel can continuously deploy changes at an intense velocity.

# GitHub

Find out more about Marfeel's GitHub repositories.