Code Monkey home page Code Monkey logo

appzone's Introduction

#AppZone AppZone Icon

Internal AppStore for Android and iOS apps. Supports publish newest builds from Jenkins or API. Supports OTA downloads and optional authentication with LDAP.

Screenshot Screenshot

AppZone Server

Description

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.

overview.png.

Components

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.

Requirements

  • 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

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.

Simple build & run everything

./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.

Run the nicer way

Run API

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.

Run WEB

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

Build & run in sbt

cd server-api/
./sbt
> container:start
> ~ ;copy-resources;aux-compile

Now open the site's root page in your browser.

Jenkins plugin

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 uploads

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.

Create a project

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":[]}

Get a list of projects

curl --interface 127.0.0.1 -sLX GET http://127.0.0.1:8081/apps [{"ios":[],"name":"exampleAppName","id":"exampleApp","android":[]}]

Uploading an artifact

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}]

Download an artifact

curl --interface 127.0.0.1 -sLX GET http://127.0.0.1:8081/app/exampleApp/android

Libraries

Appzone uses the following libraries.

server-api

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

server-web

Library Version
ionic 0.9.18-alpha
lodash 2.4.1
angular-http-auth 1.2.1
angular-translate 1.1.1

jenkins-plugin

Library Version
dd-plist 1.0
xmlunit 1.3
snakeyaml 1.7
xpp3 1.1.4c

License

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.

appzone's People

Contributors

elyzion avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

appzone's Issues

Cannot download ipa

Hello,

When I try to download an iOS application, I get the following message : 'Cannot connect to my_server_name'. The server is contacted through an HTTPS connexion.

Is anyone having this problem too?

Thanks a lot,
Martin

Archive specific builds

Right now only a single build is kept for a given id and tag.
2013-08-14 15 17 41

It would be very useful to be able to archive certain builds from the web UI to be able to evaluate the evolution of an App.

Jenkins plugin can't deploy if product name contains a space

If my app name as a space, for instance "My App", the jenkins plugin is not able to deploy my app to AppZone. It fails with the following message:

[AppZone] File: myapp.ipa
[AppZone] No Info.plist file found. Aborting.

After changing my app name (product name) to "My-App", it worked.

How to keep previous builds upload?

Hello,

Thanks for your work, I am now using AppZone and it works great.

However, how can I configure the jenkins plugin in order to keep previous builds uploaded to the appZone API?

For now, there is only the '_default' build available and it is overridden at each build.

I would like to have something like that :

  • Myapp - 3
  • Myapp - 2
  • Myapp - 1

And for now I only have

  • _default

Thanks,
Martin

UI Improvements

  • Show only platform-specific builds on iOS/Android devices.
  • Show a better change log. Right now only the last commit is highlighted.
    2013-08-14 15 13 02

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.