You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »


Input from

Christophe Closset

Morgan Richomme

sylvain.desbureaux

david.blaisonneau



Following up on testing various SCM and CICD infra :


Testing Bitbucket, GitHub, CircleCI and TravisCI :


Following up on our call last week with the LFN infra workgroup and our action item :
 
https://wiki.lfnetworking.org/display/LN/LFN+Infra+Work+Group+1+Feb+19
 
I went ahead trying the SCM features and CI of github, my goal was to reach a point where I could replicate the verify job and see the hurdles I would face.
 
I did the following :
 
-    Setup a new github account, clone an existing repo from ONAP (clamp in this case)
-    Pull the code locally and setup a circleci account;
-    read the doc from circleci
-    CLAMP build is java (maven based) + docker, with some special features like running an integration test suite with containers
-    Played around with circle CI options to reach a point where the build is successful
-    Create a pull request to see the CI interactions and how smooth the integration is.
 
My feeling after this short POC
 
All in all, it went well and I think that technically, this option sounds a good one.
 
The +
Obviously github is very good, I feel bitbucket is a bit better in visibility. CicleCI is also very nice and clear.
Documentation is good, but I’ve faced some problems requiring me to dig into forums and other sites to find the answers
Integration is smooth with github; pull requests get the status of builds, I can also use the workflow ability to decide what is done when and from where.
The CI allows for many cool features (you can log into the containers, vms running the builds, they stay available for 10 mins this is great for debugging)
Builds are docker based, all is setup through yml files in the repo.
You can provide your own custom images to run the builds on, but they already have a good set.
 
The –
It’s unclear how expensive this will be for the whole ONAP, I mean hosting code on github will probably be free but the CI might be expensive on the long term  :
-    Their pricing is ‘minutes of build’ based and depends on the type and number of containers you subscribe to.
-    Some features may imply additional fees : ‘Docker layer caching’ is well documented but when trying it, the ci tool said I must be ‘whitelisted first’…
There are some restrictions linked to the philosophy of the tool, for example, I couldn’t mount a volume in a container in my build easily, so I’ve had to switch to a VM type of executor, which cost ‘more minutes’ to run…
Next I’ll try travisci if I get some cycle
 
I’ve also started doing the same thing with Bitbucket and its pipeline feature, but I fear that I’ll be limited quickly since I get only 50 build minutes for free
 
 
Links :
SCM with pull request open : https://github.com/ChrisC-att/clamp/pull/1
CircleCI : https://circleci.com/gh/ChrisC-att/workflows/clamp/tree/circleci_poc

Travis-CI : https://travis-ci.org/ChrisC-att/clamp

The + :

Sounds like it is free for Open Source

Very easy to setup, even easier than Circle-CI, I was able to even run sonarcloud on pull request in a breeze.

The - :

Sounds limited to a pre-defined subset of actions (verify PR and build branches, no custom actions)

The VM image is fixed, although you can get sudo access and install what you want


All in all, I don't see much limitations technically to go to one or another, it sounds rather a limitation on price and philosophy than real technical issues


Gitlab

Gitlab sounds also a very good technical option, and it is open source

gitlab provides a complex CI system that can be customized as well



the +

-----

- All in one

- CI/CD

- artifact management

- documentation

- built-in web site

- open source solution

- it is free

- native integration with kubernetes /prometheus (even if we did not really used it so far)


the -

-----

- All in one

- no SLA on performance/availability, we experienced some problem time to time (e.g. after Microsoft announced they bought github, it was very slow, as lots of communities were moving to gitlab..)

- CI runners are available to launch CI jobs but you still needs cloud resources to do the job (we are using our own server), no idea how much it woudl cost if it was fully externalized

- no native integration so far with docker hub (as github)



  • No labels