# Local Git installation

## Local Git installations from Github:

This is suggested if you want to contribute to Spinnaker. For more details click [**here**](https://spinnaker.io/setup/install/environment/#local-git)**.**

The Local Git installation means Spinnaker will be cloned, built, and run on the same single machine where Halyard is run on.

### **Install local dependencies**

Make sure you have the following software installed on your computer:

#### **Ubuntu**

* **git:** sudo apt-get install git
* **curl:** sudo apt-get install curl
* **netcat: s**udo apt-get install netcat
* **redis-server:** sudo apt-get install redis-server

**OpenJDK 11 - JDK (we’re building from source, so a JRE is not sufficient)**

```
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-11
```

**node** (version >=12.16.0, can be installed via [**nvm** ](https://github.com/nvm-sh/nvm#install-script), summarized below)

```
curl -o- 
https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
# Follow instructions at end of script to add nvm to ~/.bash_rc
nvm install v12.16.0
```

* **yarn:** npm install -g yarn or [**guide**](https://yarnpkg.com/lang/en/docs/install/)

#### **MacOS**

brew (a package manager for MacOS, can be installed via [**here** ](https://brew.sh/), summarized below)

{% code overflow="wrap" %}

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

{% endcode %}

* **git:** brew install git
* **curl:** brew install curl
* **netcat:** brew install netcat
* **redis-server:**
  * **Install:** brew install redis
  * **Start:** brew services start redis

**OpenJDK 11 - JDK (we’re building from source, so a JRE is not sufficient)**

```
brew cask install adoptopenjdk/openjdk/11
```

**node** (version >=12.16.0, can be installed via [**nvm**](https://github.com/nvm-sh/nvm#install-script)**,** summarized below)

```
curl -o-
https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
# Follow instructions at end of script to add nvm to ~/.bash_rc
nvm install v12.16.0
```

* **yarn:** npm install -g yarn or [**guide**](https://yarnpkg.com/lang/en/docs/install/)

#### **Fork all Spinnaker repos**

Fork all of the microservices listed here: [**Spinnaker Microservices**](https://www.spinnaker.io/reference/architecture/#spinnaker-microservices) on github ( [**guide**](https://guides.github.com/activities/forking/#fork) ).

#### **Setup SSH keys**

Follow these guides to setup SSH access to your github.com account from your local machine:

* Generating a new ssh key and adding it to your ssh agent.  Refer [**here**](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)**.**
* Adding a new ssh key to your Github account. Refer [**here**](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).

#### **Required Halyard invocations**

Halyard defaults to a **Local Debian** install when first run. If you will be contributing code to the Spinnaker project, you can change your deployment type to **Local Git** type and set up your development environment with the latest code.

{% code overflow="wrap" %}

```
hal config deploy edit --type localgit --git-origin-user=<YOUR_GITHUB_USERNAME
hal config version edit --version branch:upstream/master
```

{% endcode %}

**Refer to the image below (This image is only an example).**<br>

<div align="left"><figure><img src="https://lh6.googleusercontent.com/H5C0iGyakp_R56f0ZKpdREWLLmI4MftGFGg1vEnSq0bBVBN4A5vomp-bX-CeTptFtNR48XWlaQaL1Eo8CtYQ1R_s_e50RYlDJZ8Sz6oex8zMpYxAvDtcQyHuSwCJB8vAMZ7cmSuKRCxpCecyPjd_7AhLGbK2PN3iODEHHqZ2b8DPJ3prPOuVQ3goYg" alt=""><figcaption></figcaption></figure></div>

**In the hal config file, it will be updated as shown in the image below:**

<div align="left"><figure><img src="https://lh3.googleusercontent.com/R06ql7B0L4NTSEB5qfaVUlkebRSp2jJoLnw2NF3nhIAmgmuh9rTNeuOmZyO_YOhOKI0I8mM_kYYKwdDGzoB8Qs-mRBnDq3nxLc6kv5LltthVU5j4eRDhaDGJ6yDHSriOsIWFKdcbFTYQfjzEbOBSDigstVpvDOk-QQ0ql9SvsB4EkYPrvksuBSgy-g" alt=""><figcaption></figcaption></figure></div>

#### **Intended use case:**

The Local Git installation is intended for developers who want to contribute to Spinnaker. It is not intended to be used to manage any production environment.

See the [**developer setup guide** ](https://spinnaker.io/docs/guides/developer/getting-set-up)for a short guide to getting up and running with developing Spinnaker.

{% hint style="info" %}
**Note**: Be sure to use the same username here that you forked the Spinnaker repositor&#x79;**.**
{% endhint %}
