Building Zimbra using Git: Difference between revisions
mNo edit summary |
|||
(18 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
<div class="col-md-12 ibox-content"> | <div class="col-md-12 ibox-content"> | ||
= Building Zimbra using Git = | = Building Zimbra using Git = | ||
{{KB|{{ZC}}|{{ZCS 8. | {{KB|{{ZC}}|{{ZCS 8.8}}|{{ZCS 8.7}}|{{ZCS 8.6}}|}} | ||
==General Information== | ==General Information== | ||
The git fusion server gives users access to download and build/modify Zimbra source code for Open Source products. Building Zimbra Collaboration Suite from Zimbra's git fusion server requires advanced knowledge of troubleshooting. It is not available for Network Edition components. Changes cannot be committed to the git fusion server. | The git fusion server gives users access to download and build/modify Zimbra source code for Open Source products. Building Zimbra Collaboration Suite from Zimbra's git fusion server requires advanced knowledge of troubleshooting. It is not available for Network Edition components. Changes cannot be committed to the git fusion server. | ||
Line 17: | Line 16: | ||
==Initial Setup== | ==Initial Setup== | ||
At it's simplest, to obtain the source you need to essentially: | At it's simplest, to obtain the source you need to essentially: | ||
* Install git | * Install git | ||
** <tt>yum install git</tt> (RHEL, SLES, etc) | ** <tt>yum install git</tt> (RHEL, SLES, etc) | ||
** <tt>apt-get install git</tt> (Ubuntu, etc) | ** <tt>apt-get install git</tt> (Ubuntu, etc) | ||
==ZCS 8.7.6 and above== | |||
Starting ZCS 8.7.6 and above we have moved all our repositories to our public GitHub, so we have changed the way you can download, review and of course build the product, you can find all the details here: | |||
* [https://github.com/Zimbra/zm-build https://github.com/Zimbra/zm-build] | |||
* Obtain the git ssh access keys | ==ZCS 8.7.2 to 8.7.5== | ||
=== Accessing git using ssh === | |||
* Obtain the git ssh access keys. | |||
mkdir -p /tmp/zimbra-git1 | |||
cd /tmp/zimbra-git1 | |||
wget https://files.zimbra.com/downloads/git-fusion/zimbra-git1-ssh.tgz | |||
tar xfz zimbra-git1-ssh.tgz | |||
* Add the access keys to your own user account: | |||
cd ~/.ssh | |||
cp /tmp/zimbra-git1/id_rsa_git1* . | |||
* Add the following ~/.ssh/config. Create the file if it doesn't exist: | |||
Host zimbra-git1 | |||
User public | |||
Hostname git.zimbra.com | |||
IdentityFile ~/.ssh/id_rsa_git1 | |||
IdentitiesOnly yes | |||
Port 1067 | |||
* Ensure the permissions on the config file are correct | |||
chmod 600 ~/.ssh/config | |||
chmod 600 ~/.ssh/id_rsa_git1 | |||
* List of all repos available: | |||
https://git.zimbra.com/repos/zimbra-foss-ge872/ | |||
=== Obtaining the source to Zimbra Collaboration Suite === | |||
The source code for ZCS is retrieved from git.zimbra.com as described above. | |||
To obtain the source: | |||
mkdir -p ~/git | |||
cd ~/git | |||
=== Cloning using SSH. Requires SSH access keys above === | |||
You will need to clone one by one, or make an script for it, you can find the list here: https://git.zimbra.com/repos/zimbra-foss-ge872/ | |||
git clone git@zimbra-git1:zm-zcs | |||
git clone git@zimbra-git1:zm-store | |||
git clone git@zimbra-git1:zm-common | |||
git clone git@zimbra-git1:zm-client | |||
git clone git@zimbra-git1:zm-soap | |||
etc | |||
'''Note: Code is just published as it is. Objective is people should able to see the code changes. | |||
There are some tweaks required to get it build. We are working on restructuring.''' | |||
==ZCS 8.7.1 and below== | |||
=== Accessing git using ssh === | |||
* Obtain the git ssh access keys. | |||
mkdir -p /tmp/zimbra-git | mkdir -p /tmp/zimbra-git | ||
cd /tmp/zimbra-git | cd /tmp/zimbra-git | ||
wget https://files.zimbra.com/downloads/git-fusion/zimbra-git-ssh.tgz | wget https://files.zimbra.com/downloads/git-fusion/zimbra-git-ssh.tgz | ||
tar xfz zimbra-git | tar xfz zimbra-git* | ||
* Add the access keys to your own user account: | * Add the access keys to your own user account: | ||
Line 42: | Line 92: | ||
* Ensure the permissions on the config file are correct | * Ensure the permissions on the config file are correct | ||
chmod 600 ~/.ssh/config | chmod 600 ~/.ssh/config | ||
chmod 600 ~/.ssh/id_rsa_git | |||
== Obtaining the source to Zimbra Collaboration Suite == | === Obtaining the source to Zimbra Collaboration Suite === | ||
The source code for ZCS is retrieved from git.zimbra.com as described above. | The source code for ZCS is retrieved from git.zimbra.com as described above. | ||
Line 49: | Line 100: | ||
mkdir -p ~/git | mkdir -p ~/git | ||
cd ~/git | cd ~/git | ||
=== Cloning using SSH. Requires SSH access keys above === | |||
git clone git@zimbra-git:zimbra-foss | git clone git@zimbra-git:zimbra-foss | ||
=== Cloning using anonymous HTTPS === | |||
'''For ZCS 8.7.1 and below repos''' | |||
git clone https://git.zimbra.com/repos/zimbra-foss/.git | |||
===Source for the "main" branch=== | ===Source for the "main" branch=== | ||
Line 61: | Line 118: | ||
=== Listing available branches === | === Listing available branches === | ||
The '''zimbra-foss''' repo contains all the available release branches. You can obtain a list of the branches via: | The '''zimbra-foss''' repo contains all the available release branches. You can obtain a list of the branches via: | ||
git branch -a | git branch -a | ||
Line 84: | Line 140: | ||
=== Changing the active checkout === | === Changing the active checkout === | ||
To change the active branch, you use the '''git checkout''' command, and supply the release you are interested in. | To change the active branch, you use the '''git checkout''' command, and supply the release you are interested in. | ||
Line 95: | Line 150: | ||
git pull | git pull | ||
==Building Zimbra Collaboration Server== | ===Building Zimbra Collaboration Server=== | ||
To build Zimbra Collaboration Server, the "buildZCS.sh" script can be used, that is located in the ZimbraBuild directory after the checkout completes. | |||
To build Zimbra Collaboration Server, the " | |||
The first time you go to build, it is recommended to execute | The first time you go to build, it is recommended to execute | ||
cd ~/git/zimbra-foss/ZimbraBuild | cd ~/git/zimbra-foss/ZimbraBuild | ||
==== ZCS 8.6 and prior ==== | |||
./buildZCS.sh -t -u | ./buildZCS.sh -t -u | ||
This will help you through adding Ant & JDK, check dependencies, build ThridParty using a public CPAN mirror for Perl, then start the ZCS build process. It requires sudo access to install the various required binaries and libraries for build (The -u option). | This will help you through adding Ant & JDK, check dependencies, build ThridParty using a public CPAN mirror for Perl, then start the ZCS build process. It requires sudo access to install the various required binaries and libraries for build (The -u option). | ||
This will help you through adding Ant & the required Java JDK. It is no longer necessary to build Third Party to build ZCS with 8.7 and later. | |||
For 8.6 and previous, if the server already has the various required binaries and libraries installed, then: | |||
cd ~/git/zimbra-foss/ZimbraBuild | cd ~/git/zimbra-foss/ZimbraBuild | ||
./buildZCS.sh -t | ./buildZCS.sh -t | ||
Line 114: | Line 172: | ||
cd ~/git/zimbra-foss/ZimbraBuild | cd ~/git/zimbra-foss/ZimbraBuild | ||
./buildZCS.sh | ./buildZCS.sh | ||
=== ZCS 8.7 and 8.7.1 === | |||
./buildZCS.sh | |||
This will help you through adding Ant & JDK. Note that JAVA_HOME will need to be set correctly to the location of the JDK. | |||
==== Third party packages ==== | |||
If working on adding recognition for a new OS, it will be necessary to build out a related 3rd party package repository. The overall build process is located on github, and there is a vagrant profile also noted on github for helping with the process. More documentation will be provided soon, as the github migration is still underway. | |||
Relevant URLs: | |||
* https://github.com/Zimbra/packages | |||
* https://github.com/Zimbra/zimbra-build | |||
* https://github.com/Zimbra/vagrant-provision-zimbra | |||
==Building with Maven== | ==Building with Maven== | ||
Line 124: | Line 196: | ||
* [[Building Zimbra Desktop on Windows (win32)]] | * [[Building Zimbra Desktop on Windows (win32)]] | ||
* [[Building Zimbra Desktop on Macintosh (OS 10.4.6+)]] | * [[Building Zimbra Desktop on Macintosh (OS 10.4.6+)]] | ||
==Troubleshooting== | ==Troubleshooting== | ||
Search the forums for any recent reports or create a new thread letting us know and we'll get right on it. | Search the forums for any recent reports or create a new thread letting us know and we'll get right on it. | ||
==Contributions== | |||
See https://www.zimbra.com/open-source/contribute | |||
{{Article Footer|unknown|7/7/2014}} | {{Article Footer|unknown|7/7/2014}} | ||
[[Category: Build]] | [[Category: Build]] |
Latest revision as of 17:28, 18 January 2018
Building Zimbra using Git
General Information
The git fusion server gives users access to download and build/modify Zimbra source code for Open Source products. Building Zimbra Collaboration Suite from Zimbra's git fusion server requires advanced knowledge of troubleshooting. It is not available for Network Edition components. Changes cannot be committed to the git fusion server.
By building Zimbra, you agree to Zimbra's licensing terms. Building from source is not covered under the ZEUL, unlike pre-compiled binaries, but rather the Open Source licenses as descrived on the licensing page. Please read the page on contributing if you plan to submit back any patches.
Technical support for source building can be found in the Zimbra Developers community.
By default, you will only be able to build "out of the box" with supported operating systems (see list on site or files in ZimbraBuild/defs). However, you may be able to modify the source to get Zimbra to build on your OS of choice.
Initial Setup
At it's simplest, to obtain the source you need to essentially:
- Install git
- yum install git (RHEL, SLES, etc)
- apt-get install git (Ubuntu, etc)
ZCS 8.7.6 and above
Starting ZCS 8.7.6 and above we have moved all our repositories to our public GitHub, so we have changed the way you can download, review and of course build the product, you can find all the details here:
ZCS 8.7.2 to 8.7.5
Accessing git using ssh
- Obtain the git ssh access keys.
mkdir -p /tmp/zimbra-git1 cd /tmp/zimbra-git1 wget https://files.zimbra.com/downloads/git-fusion/zimbra-git1-ssh.tgz tar xfz zimbra-git1-ssh.tgz
- Add the access keys to your own user account:
cd ~/.ssh cp /tmp/zimbra-git1/id_rsa_git1* .
- Add the following ~/.ssh/config. Create the file if it doesn't exist:
Host zimbra-git1 User public Hostname git.zimbra.com IdentityFile ~/.ssh/id_rsa_git1 IdentitiesOnly yes Port 1067
- Ensure the permissions on the config file are correct
chmod 600 ~/.ssh/config chmod 600 ~/.ssh/id_rsa_git1
- List of all repos available:
https://git.zimbra.com/repos/zimbra-foss-ge872/
Obtaining the source to Zimbra Collaboration Suite
The source code for ZCS is retrieved from git.zimbra.com as described above.
To obtain the source:
mkdir -p ~/git cd ~/git
Cloning using SSH. Requires SSH access keys above
You will need to clone one by one, or make an script for it, you can find the list here: https://git.zimbra.com/repos/zimbra-foss-ge872/
git clone git@zimbra-git1:zm-zcs git clone git@zimbra-git1:zm-store git clone git@zimbra-git1:zm-common git clone git@zimbra-git1:zm-client git clone git@zimbra-git1:zm-soap
etc
Note: Code is just published as it is. Objective is people should able to see the code changes. There are some tweaks required to get it build. We are working on restructuring.
ZCS 8.7.1 and below
Accessing git using ssh
- Obtain the git ssh access keys.
mkdir -p /tmp/zimbra-git cd /tmp/zimbra-git wget https://files.zimbra.com/downloads/git-fusion/zimbra-git-ssh.tgz tar xfz zimbra-git*
- Add the access keys to your own user account:
cd ~/.ssh cp /tmp/zimbra-git/id_rsa_git* .
- Add the following ~/.ssh/config. Create the file if it doesn't exist:
Host zimbra-git User public Hostname git.zimbra.com IdentityFile ~/.ssh/id_rsa_git IdentitiesOnly yes Port 1067
- Ensure the permissions on the config file are correct
chmod 600 ~/.ssh/config chmod 600 ~/.ssh/id_rsa_git
Obtaining the source to Zimbra Collaboration Suite
The source code for ZCS is retrieved from git.zimbra.com as described above.
To obtain the source:
mkdir -p ~/git cd ~/git
Cloning using SSH. Requires SSH access keys above
git clone git@zimbra-git:zimbra-foss
Cloning using anonymous HTTPS
For ZCS 8.7.1 and below repos
git clone https://git.zimbra.com/repos/zimbra-foss/.git
Source for the "main" branch
- main is the development branch.
The 'main' branch, (often referred to as mainline) contains the latest code - if your interested in seeing pre-release software check it out.
It is constantly in flux (for instance we might stagger spec files to avoid the need to always rebuild ThirdParty), if you're hitting a error in the Zimbra build side the first thing to do is re-sync, as we typically resolve these fast.
It is the default branch in use after doing a checkout of zimbra-foss
Listing available branches
The zimbra-foss repo contains all the available release branches. You can obtain a list of the branches via:
git branch -a
Example output (abbreviated)
* main-foss remotes/origin/HEAD -> origin/main-foss remotes/origin/frank-foss remotes/origin/franklin-5010-foss remotes/origin/franklin-5011-foss remotes/origin/franklin-5012-foss remotes/origin/franklin-5013-foss remotes/origin/franklin-5014-foss remotes/origin/franklin-5015-foss remotes/origin/franklin-5016-foss remotes/origin/franklin-5017-foss remotes/origin/franklin-5018-foss remotes/origin/franklin-5019-foss remotes/origin/franklin-5020-foss
The branch with a * in front of it is your active checkout.
Changing the active checkout
To change the active branch, you use the git checkout command, and supply the release you are interested in.
For example, to switch to the IRONMAIDEN 8.0.7 release branch, one would execute:
git checkout ironmaiden-807-foss
Updating an existing clone
To update an already existing clone:
cd ~/git/zimbra-foss git pull
Building Zimbra Collaboration Server
To build Zimbra Collaboration Server, the "buildZCS.sh" script can be used, that is located in the ZimbraBuild directory after the checkout completes.
The first time you go to build, it is recommended to execute
cd ~/git/zimbra-foss/ZimbraBuild
ZCS 8.6 and prior
./buildZCS.sh -t -u
This will help you through adding Ant & JDK, check dependencies, build ThridParty using a public CPAN mirror for Perl, then start the ZCS build process. It requires sudo access to install the various required binaries and libraries for build (The -u option).
This will help you through adding Ant & the required Java JDK. It is no longer necessary to build Third Party to build ZCS with 8.7 and later.
For 8.6 and previous, if the server already has the various required binaries and libraries installed, then:
cd ~/git/zimbra-foss/ZimbraBuild ./buildZCS.sh -t
Can be used to just build out Third Party and ZCS.
If Third Party has already been built, and simply rebuilding ZCS is desired, this can be achieved with:
cd ~/git/zimbra-foss/ZimbraBuild ./buildZCS.sh
ZCS 8.7 and 8.7.1
./buildZCS.sh
This will help you through adding Ant & JDK. Note that JAVA_HOME will need to be set correctly to the location of the JDK.
Third party packages
If working on adding recognition for a new OS, it will be necessary to build out a related 3rd party package repository. The overall build process is located on github, and there is a vagrant profile also noted on github for helping with the process. More documentation will be provided soon, as the github migration is still underway.
Relevant URLs:
- https://github.com/Zimbra/packages
- https://github.com/Zimbra/zimbra-build
- https://github.com/Zimbra/vagrant-provision-zimbra
Building with Maven
Starting with ZCS 9.0/KISS the Java projects are built using Maven.
See Building Zimbra with Maven for more details.
Building Zimbra Desktop
- Building Zimbra Desktop on Linux
- Building Zimbra Desktop on Windows (win32)
- Building Zimbra Desktop on Macintosh (OS 10.4.6+)
Troubleshooting
Search the forums for any recent reports or create a new thread letting us know and we'll get right on it.
Contributions
See https://www.zimbra.com/open-source/contribute