Internal AppStore for Android and iOS apps. Supports publish newest builds from Jenkins or API. Supports OTA downloads and optional authentication with LDAP.
AppZone provides a simple interface for publishing Android and iOS apps through a simple web interface. Apps can be published on AppZone using simple REST commands or with the Jenkins plugin.
Location | Note |
---|---|
jenkins-plugin | This is the Jenkins plugin for Appzone. It is written in Java and uses Apache Maven for lifecycle management. It make use of the AppZone API. |
server-api | This is the Appzone API server. It is written in Scala and makes use of sbt and Lift. It also requires a MongoDB backend. |
server-web | This is the static web frontend for Appzone. It is written in Javascript. |
- mongodb. Any 2.4.7 compatible version should do.
- Java JDK 1.7
- If you plan on building the Jenkins plugin, you will need Apache Maven, as well. Any 3.x version or newer should do.
Default settings can be edited in run.properties. This includes MongoDB configuration, API host and port, as well as authentication settings such as option LDAP settings.
Please make sure that your host name is included in the hosts file for your machine. Java based host name lookup will fail if it cannot lookup your IP from your host name.
./run.sh start
Open your browser at http://localhost:8080.
To configure the domain, ports for various subsystem and mongodb edit run.properties
. You can also edit the security settings in there while you are at it.
First you will need a Tomcat or Jetty server running. The API server allows for uploading of artifacts via a REST API interface. This is used internally by the Jenkins plugin, but it can also be called from your own program or used with curl.
cd server-api/
./sbt package
cp target/.../...war <your_tomcat>/webapps/appzone.war
To configure mongodb, either edit the source, or create a default.props file in src/main/resources/props.
Edit the SERVER variable at the top of server-web/app/js/config/config.js to point to your running API. Then serve server-web as a static website. Preferably through nginx. Otherwise you can run:
cd server-web/
python -m SimpleHTTPServer
# or: sudo python -m SimpleHTTPServer 80
cd server-api/
./sbt
> container:start
> ~ ;copy-resources;aux-compile
Now open the site's root page in your browser.
Running the following command creates a .hpi file in the target directory, that can be installed in Jenkins in the plugin manager (advanced tab).
cd jenkins-plugin
mvn package
Manual uploading of an artifact is possible if you make use of the API and curl. Refer to the API documentation for the URL paths required for this. Some common examples are provided below.
curl --interface 127.0.0.1 -sLX POST http://127.0.0.1:8081/app -d id=exampleApp -d name=exampleAppName {"ios":[],"name":"exampleAppName","id":"exampleApp","android":[]}
curl --interface 127.0.0.1 -sLX GET http://127.0.0.1:8081/apps [{"ios":[],"name":"exampleAppName","id":"exampleApp","android":[]}]
curl -X POST http://127.0.0.1:8081/app/exampleApp/android -F version=0.1.1 -F apk=@Downloads/Test_android-Test_dev.apk
{"ios":[],"name":"exampleAppName","id":"exampleApp","android":[{"lastUpdateDate":"2014-05-02T11:44:36+0900","changelog":"","versionCode":1,"version":"0.1.1","id":"_default","hasIcon":true}]
curl --interface 127.0.0.1 -sLX GET http://127.0.0.1:8081/app/exampleApp/android
Appzone uses the following libraries.
Library | Version |
---|---|
Lift | 2.6-M2 |
Scalatra | 2.1.1 |
logback-classic | 1.1.1 |
xpp3 | 1.1.4c |
jzlib | 1.1.1 |
commons-io | 1.3.2 |
commons-net | 3.2 |
jetty-webapp | 8.1.7.v20120910 |
javax.servlet | 3.0.0.v201112011016 |
Library | Version |
---|---|
ionic | 0.9.18-alpha |
lodash | 2.4.1 |
angular-http-auth | 1.2.1 |
angular-translate | 1.1.1 |
Library | Version |
---|---|
dd-plist | 1.0 |
xmlunit | 1.3 |
snakeyaml | 1.7 |
xpp3 | 1.1.4c |
Copyright © CyberAgent, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.