Build and Release

A continuous learner for experience and life.

Instore Pick-up Maps

enter image description here From:

Instore pick-up maps

Thoughts about a mobile application that provides a guide for customers to pick-up goods they wanted inside a supermarket.

With providing some goods’ name to the application that a customer want to buy, the application should provide an optimized route for the user to guide him/her to pick up the goods easily, without traffic jam around crowd, which always happens in some popular supermarkets, like Costco.

User Generated Content Backend Design

User Generated Content Backend Design

enter image description here

Most of time, web browser or mobile platform user only care how to get information from web or apps, they send GET on http protocol much more than POST/PUT. However, as one of our application required, we have to handle the requests which user submit contents to backend server.

We design the process in asynchronized way. User submit contents, once the 1st tier server (as the figure below) – mainly act as a database with a REST Interface – receive and save the contents, the server send back a response immediately to user, which indicates that user submit successfully.

Continuous Integration/Delivery Pipeline

enter image description here

Based on several software release engineering system, such as: Jenkins (include a bunch of Plugins), Gerrit, Git, Mocha, Nodejs and etc, we create a continuous integration pipeline to control source code, validation change(s), build artifact, report test results and deploy the artifacts to various deployment servers, just as: dev, staging, production (all groups). Here is a draft diagram we are trying to implement for Content Stream Application Service:

Feeding Build Logs Into Elasticsearch With Logstash on Jenkins

enter image description here

Elasticsearch platform is designed to take data from any source and as a build guy, we create a lot of metadata every day, across Android, iOS, Windows platform, such as compiler warnings, errors, lint message, unit test reports, etc. Is it possible to collect such data, then store into Elasticsearch with Logstash plugins, then visualize them with Kibana?

In this article, we setup an Elasticsearch instance very quickly, with the support of elastic cloud, then config the Logstash plugin on Jenkins to feed log data into Elasticsearch space, then display the message with Kibana.

Playing With Ansible to Manage Build Pool


Ansible is one of the best configuration management system, together with Puppet, Chef, and etc. Ansible makes IT deployment automatic and easy. With Ansible, deploying application, managing systems is becoming easier than ever, as well as building a strong foundation for DevOps.

This article use Ansible to config and manage Xcode build pool step by step.

Install Libxmljs Failed on Macosx

Today I am trying to install osmosis on macosx

npm i --save osmosis

libxmljs is one of the dependency of it, which is failed during installing, here is the error log:

3 warnings generated.
  CC(target) Release/
  LIBTOOL-STATIC Release/xml.a
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make: *** [Release/xml.a] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2

RESTful WordPress

enter image description here This article introduce how to launch and config WordPress at first time, based on the composed WordPress docker container. With the several WordPress plugins, setup the RESTful API and config their permissions to register users, create new posts etc.

Playing With iOS Background Multitasking

enter image description here

In the realm of the background multitasking, Apple has made some significant changes by exposing additional APIs since iOS7.‚Äč iOS7 introduced some new background task handlings that help developers achieve some great user experiences, just like schedule the content update some spefice times, or allow the app to launch immediately whenever you send it a special push notification. They are called ‘background app fetch’ and ‘remote notifications’ correspondingly.

Using Git Command to Find Build Failure Very Quickly

When some changes broke your build during the mid night, how to find the culprit of the failure very quickly? Like this: build failure history

If you are using git as your version control system, then the short answer is ‘git bisect’.

As the above screenshot, you know the latest good version is, and the earliest bad version is, so some changes between the two version failed the build. Then how to use ‘git bisect’ to help us debug the issue very quickly?