# 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.5Java
--- Java8OpenSSL
--- 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.