Git cache for continuous integration jobs

CI job fails

In this article, I will explain how I solved a large git repository clone issue we had during our continuous integration job.

The fact is that we have a Cordova project using multiple plugins. Most of these plugins are stored in git repositories and some of them or their dependencies are really large. This can slow our job execution or even make it fail (due to timeout) as it depends on our internet connection..

I decided to find a way to “cache” repository so the build jobs wouldn’t use internet connection each time they need to clone the plugin repository without changing plugins files.

The solution I found was to use our  locally hosted gitlab as a mirror for the large repository and force git to use it using the git configuration “insteadOf”

I created a new repository in our gitlab to host the large plugin repository and I cloned it’s content from remote location once. I then added the following configuration for git inside the CI job runner machine:

Now I just need to regularly update the local mirror with a simple cron job for example. The Gitlab Enterprise Edition can also automatically update it’s repository from remote origin.

The result is just impressive : one job that could take more than an hour before of large repository clone will now execute in less than 10min.

CI Job successes

Email this to someoneTweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInShare on Reddit

Easy blog post translation with Yarakuzen

YarakuZen

I am running a bilingual blog and I have recently discover Yarakuzen. This is an innovative tool for text translation and they offer a free plan for personnal use. They also have premium plans for an extensive use.

This app is not like other translation tool but offers the ability to adjust translation as I want and save them. The more I translate my content, the more it become accurate and customized for my taste.

So to use it on my wordpress blog, I had to create an account here and generate and API key. I also downloaded the Yarakuzen wordpress plugin than is perfectly integrated to WordPress.

The plugin will ask for a public and a private key I get from my Yarakuzen account :

YarakuZen ‹ Mika A. — WordPress

Now, when I start a new post, I see a new box from the Yarakuzen plugin, it allows me to send my post content to Yarakuzen for translation.

Ajouter un nouvel article ‹ Mika A. — WordPress

This is how I use it :

  • I create my first post in any language (say english) and save it
  • I create another post for translation and paste content from source post
  • I send translation to Yarakuzen through the box and when ready
  • I click the “Retrieve translation” button from the Yarakuzen box

retrieve

This will replace my content with the translated text and it will also keep medias so I don’t need to add them again in the translation.

This is a service that is really helpful for me and I will use really often. You can learn more about Yarakuzen and their plans and services in yarakuzen.com

Email this to someoneTweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInShare on Reddit

Travis CI configuration package for Atom

Travis CI  Test and Deploy Your Code with Confidence

Working on a small package Atom lately, I started to configure Travis CI to automatically launch my builds and tests.This allows me to ensure that the future push and pull requests of my project do not break anything. As this is an opensource project, I can use Github free TravisCI services.

My repository is installed on Github and I started to activate webhook Travic CI in parameters. To do this, go to Settings> Webhooks & Services> Travic CI and activate this service by clicking edit button.

Webhooks Services

You must now set Travis CI. My Travis CI account is linked to my Github account so I can find the list of my repository and I chose the one that is concerned.

active

Finally, to start the work of travis, add a .travis.yml file in the root of the project. This file contains the information necessary for Travis and configuration for actions to run. Regarding the Atom packages, a repository has been deployed to easily set up Travis configurations. Just go to https://github.com/atom/ci/blob/master/.travis.yml and use it.

When I makes new push on the repository, Travis will now launch automatically builds and keep me informed in case of problems. To top it all, I can have the small button indicating the status of the repository.It can easily be integrated on a web page or on my project README 

For Atom packages, it is also possible to use other services or as AppVeyor Circle. The details for these are also available on the directoryhttps://github.com/atom/ci/

Et voila, your turn now!

Email this to someoneTweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInShare on Reddit