diff --git a/Deploy/prepare b/Deploy/prepare
index c77af01..f1db506 100755
--- a/Deploy/prepare
+++ b/Deploy/prepare
@@ -7,6 +7,7 @@ import string
import os
import sys
import argparse
+import commands
from io import open
if sys.version_info[:3][0] == 2:
@@ -57,6 +58,14 @@ token_expiration = rcp.get("configuration", "token_expiration")
verify_remote_cert = rcp.get("configuration", "verify_remote_cert")
########
+#Read version form .git
+status, output = commands.getstatusoutput('git describe --tags')
+if status == 0:
+ version = output
+else:
+ version = 'UNKNOWN'
+#######
+
ui_secret = ''.join(random.choice(string.ascii_letters+string.digits) for i in range(16))
base_dir = os.path.dirname(__file__)
@@ -108,7 +117,8 @@ render(os.path.join(templates_dir, "ui", "env"),
use_compressed_js=use_compressed_js,
ui_secret=ui_secret,
verify_remote_cert=verify_remote_cert,
- token_expiration=token_expiration)
+ token_expiration=token_expiration,
+ version=version)
render(os.path.join(templates_dir, "ui", "app.conf"),
ui_conf,
diff --git a/Deploy/templates/ui/env b/Deploy/templates/ui/env
index fe8f860..c4afba4 100644
--- a/Deploy/templates/ui/env
+++ b/Deploy/templates/ui/env
@@ -20,3 +20,4 @@ EXT_ENDPOINT=$ui_url
TOKEN_URL=http://ui
VERIFY_REMOTE_CERT=$verify_remote_cert
TOKEN_EXPIRATION=$token_expiration
+VERSION=$version
diff --git a/README.md b/README.md
index 6ef8f6d..e17b4d9 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,6 @@ Project Harbor is an enterprise-class registry server that stores and distribute
* **Graphical user portal**: User can easily browse, search repositories and manage projects.
* **AD/LDAP support**: Harbor integrates with existing enterprise AD/LDAP for user authentication and management.
* **Auditing**: All the operations to the repositories are tracked.
-* **Internationalization**: Already localized for English, Chinese, German, Japanese and Russian. More languages can be added.
* **RESTful API**: RESTful APIs for most administrative operations, easy to integrate with external systems.
* **Easy deployment**: docker compose and offline installer.
@@ -65,7 +64,7 @@ If you are upgrading Harbor from an older version with existing data, you need t
For information on how to use Harbor, please take a look at [User Guide](docs/user_guide.md).
### Community
-Get connected with Project Harbor's community and sign up with VMware {code} [https://code.vmware.com/join/](https://code.vmware.com/join/) to get invited to VMware {code} Slack group, Channel: #harbor.
+Get connected with Project Harbor's community and sign up with VMware {code} [https://code.vmware.com/join/](https://code.vmware.com/join/) to get invited to VMware {code} Slack group, Channel: #harbor. **Email:** harbor @ vmware.com .
### Contribution
We welcome contributions from the community. If you wish to contribute code and you have not signed our contributor license agreement (CLA), our bot will update the issue when you open a pull request. For any questions about the CLA process, please refer to our [FAQ](https://cla.vmware.com/faq).
@@ -91,4 +90,4 @@ This project uses open source components which have additional licensing terms.
Harbor is powered by Beego.
### About
-Project Harbor is initiated by the Advanced Technology Center (ATC), VMware China R&D as a Cloud Application Accelerator (CAA) project.
+Project Harbor is initiated by the Advanced Technology Center (ATC), VMware China R&D.
diff --git a/ROADMAP.md b/ROADMAP.md
index ed4e382..02ea0f4 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -14,34 +14,31 @@ Please open an issue to track any initiative on the roadmap of Harbor. We will w
---
+### 1. Notary
+The notary feature allows publishers to sign their images offline and to push the signed content to a notary server. This ensures the authenticity of images.
-### 1. Image replication between Harbor instances
+### 2. Image replication between Harbor instances (Completed)
Enable images to be replicated between two or more Harbor instances. This is useful to have multiple registry servers servicing a large cluster of nodes, or have distributed registry instances with identical images.
-### 2. Image deletion and garbage collection
+### 3. Image deletion and garbage collection (Completed)
a) Images can be deleted from UI. The files of deleted images are not removed immediately.
b) The files of deleted images are recycled by an administrator during system maintenance(Garbage collection). The registry service must be shut down during the process of garbage collection.
-### 3. Authentication (OAuth2)
+### 4. Authentication (OAuth2)
In addition to LDAP/AD and local users, OAuth 2.0 can be used to authenticate a user.
-### 4. High Availability
+### 5. High Availability
Support multi-node deployment of Harbor for high availability, scalability and load-balancing purposes.
-### 5. Statistics and description for repositories
+### 6. Statistics and description for repositories
User can add a description to a repository. The access count of a repo can be aggregated and displayed.
-### 6. Audit all operations in the system
+### 7. Audit all operations in the system
Currently only image related operations are logged. Other operations in Harbor, such as user creation/deletion, role changes, password reset, should be tracked as well.
-### 7. Migration tool to move from an existing registry to Harbor
+### 8. Migration tool to move from an existing registry to Harbor
A tool to migrate images from a vanilla registry server to Harbor, without the need to export/import a large amount of data.
-
-
-### 8. Support API versioning
-Provide versioning of Harbor's API.
-
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..273e3f7
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,57 @@
+## Table of Content
+
+### User documents
+
+[Installation and Configuration Guide](installation_guide.md)
+Read this first!
+
+[Harbor User Guide](user_guide.md)
+How to use Harbor to manage images, projects, replications and users.
+
+[Configuring HTTPS for Harbor](configure_https.md)
+Configure security connection between Harbor and Docker client.
+
+[Upgrade and Data Migration Guide](migration_guide.md)
+Data migration may be needed when upgrading Harbor to a newer version.
+
+[Deploy Harbor on Kubernetes](kubernetes_deployment.md)
+Guide to deploy Harbor on Kubenetes. (maintained by community)
+
+### Developer documents
+
+[Arthicture Overview of Harbor](https://github.com/vmware/harbor/wiki/Architecture-Overview-of-Harbor)
+Developers read this first.
+
+[Harbor API Specs by Swagger](configure_swagger.md)
+Use Swagger to find out the specs of Harbor API.
+
+[Internationalization Guide](developer_guide_i18n.md)
+How to add your local language to Harbor.
+
+
+[Python SDK](../contrib/sdk/harbor-py) (by community)
+
+[Deploying Harbor using Docker Machine](../contrib/deploying_using_docker_machine.md) ( by community)
+
+[Configuring Harbor as a local registry mirror](../contrib/Configure_mirror.md) (by community)
+
+### Articles from the community
+
+[Remote site replicated Docker Registries with VMware Harbor](http://www.vmtocloud.com/remote-site-replicated-docker-registries-with-vmware-harbor/)
+
+[Hybrid cloud Docker Registry with VMware Harbor](http://www.vmtocloud.com/hybrid-cloud-docker-registry-with-vmware-harbor/)
+
+[Harbor Registry Blueprint for vRA](http://www.vmtocloud.com/harbor-registry-blueprint-is-here/)
+
+[Project Harbor in action](http://cormachogan.com/2016/08/05/project-harbor-action/)
+
+[Using vSphere docker volume driver to run Project Harbor on VSAN](http://cormachogan.com/2016/07/29/using-vsphere-docker-volume-driver-run-project-harbor-vsan/)
+
+[Architecture of Harbor: An Open Source Enterprise-class Registry Server](http://www.think-foundry.com/architecture-of-harbor-an-open-source-enterprise-class-registry-server/)
+
+[Overall Architecture of Harbor Registry](http://www.compare-review-information.com/overall-architecture-of-harbor-registry/)
+
+[Deploying a Private Secured Docker Registry in 15 Minutes](http://alexanderzeitler.com/articles/deploying-a-private-secured-docker-registry-within-15-minutes/)
+
+[Docker Private Registry Using Harbor](https://blog.imaginea.com/docker-private-registry-using-harbor-2/)
+