Shorten the Travis build time of Meilix

Meilix is a lubuntu based script. It uses Travis to compile and deploy the iso as Github Release. Normally Travis took around 17-21 minutes to build the script and then to deploy the iso on the page. It is quite good that one gets the iso in such a small interval of time but if we would able to decrease this time even more then that will be better. Meilix script consists of basically 2 tests and 1 deploy: build.sh aptRepoUpdater.sh Github Deploy The idea behind reducing the time of Meilix building is to parallely run the tests which are independent to each other. So here we run the build.sh and aptRepoUpdater.sh parallely to reduce the time upto some extent. This pictures denotes that both the tests are running parallely and Github Releases is waiting for them to get complete successfully to deploy the iso. Let’s see the code through which this made possible: jobs: include: - script: ./build.sh - script: 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./scripts/aptRepoUpdater.sh; fi' - stage: GitHub Release script: echo "Deploying to GitHub releases ..." Here we included a job section in which we wrote the test which Travis has to carry out parallely. This will run both the script at the same time and can help to reduce the time. After both the script run successfully then Github Release the iso. Here we can see that we are only able to save around 30-40 seconds and that much matters a lot in case if we have more than 1 build going on the same time. Links to follow: Travis guide to build stages

Continue ReadingShorten the Travis build time of Meilix

Building Meilix in Travis using Heroku

Suppose you have to trigger (start) Travis but not through making a commit but through clicking a button on the webapp of the Meilix Generator. Through the webapp of Meilix Generator, we can pass the tag of the build which will be initiated and can also get the build link which is built by Travis. Heroku is the place where we have deployed our webapp and through a button on the webapp that we used to start the build on the Travis. We have the access to give a tag to the build and with the help of this, we can even predict the URL of the build beforehand. So one can use it for its own personal project in a number of ways. And how I used this feature in Meilix Generator using Meilix script is described below: How I used this idea FOSSASIA meilix repository consists the script of a Linux Operating System based on Lubuntu. It uses Travis to build that script to result in a release of an iso file. Now we thought an idea of building an autonomous system to start this build and get the release and in the meanwhile also make some required changes to the script to get it into the OS. We came up with an idea of a webapp which ask user its email id and tag of the build and till now a picture from the user which will be set as a wallpaper. It means the user would be able to config its distro according to its need through the graphical interface without a single line to code from the user end. Through the webapp, a build button is taken as an input to go to a build page which triggers the Travis with the same user configuration to build the iso and deploy it on Github page. The user gets the link to the build on the next page only. How I implemented this idea Thanks to Travis API without which our idea is impossible to implement. We used a shell script to outframe our idea. The script takes the input of the user’s, repository, and branch to decide to where the trigger to take place. There are two files one as travis_token as: fossasia meilix master # in the format of user repo branch And script.sh as:   #!/bin/bash cat travis_tokens | while read line; # this lines takes input of the user, repo and branch do array=(${line}) user="${array[0]}" project="${array[1]}" len=${#array[@]} for ((i=2; i<len; i++)); do branch="${array[i]}" # supplied each value as variable body="{\"request\":{ \"branch\":\"${branch}\", \"config\":{ \"env\":{ \"email\":\"${email}\", # supplied email and travis tag as environment variable \"TRAVIS_TAG\":\"${TRAVIS_TAG}\" } } }}" echo "This Link Will be ready in approx 20 minutes" echo "https://github.com/fossasia/meilix/releases/download/${TRAVIS_TAG}/meilix-zesty-`date +%Y%m%d`-i386.iso" # a pre-predication of the link, we provide tag from user and date from system. curl -s -X POST \ # sending an API POST request to Travis to trigger the build of most recent commit -H "Content-Type: application/json" \ -H "Accept:…

Continue ReadingBuilding Meilix in Travis using Heroku