An approach to using GitLab-CI for complex builds

I am new to continuous integration. I am interested in systems that could check if the changes I made to the code would be compiling the code into a list of different assembly types.

Properties of the code (which I will call CodeA): 1.) Has dependencies on numeric libraries like SUNDIALS and PETSC 2.) Has dependencies on two other codes (CodeB CodeC), which themselves have dependencies on things like HDF5, MPI and etc.

Is it possible to use GitLab's CI feature to set up a system that will be able to generate CodeA (related to CodeB and CodeC) on Linux machines with various system accessories (Ubuntu, OpenSuSe, RHEL, Fedora, etc.).

Most of the examples I found for using GitLab for CI were the same as testing to see if HelloWold.cpp compiles if lines have changed on it. Easy to build with very little external management / dependency integration.

+1


source to share


1 answer


So it looks like you have some really big questions. I will tear them apart when I see them, and you will let me know if that fully answers your question.

  • How can I create different linux flavors?
    • The approach I would like to use would be to use the docker files mentioned in the comment by Connor Shi. This allows you to continue to use common build agents on your CI system, but test across multiple platforms.
    • Another option is to look at how you distribute your app and see if the snap package can be used. This will allow you not to worry about the environment you are deploying in.
  • How do I work with dependencies?
    • This is where it really comes in handy for reviewing and artifact repository. Both jfrog artifactory and sonatype nexus work wonders here. This will allow you to hook up a build pipeline for any application or library and push on an artifact that others might consume. They can be blocked by a set of credentials that you pass to your assembly.


Hope this helped.

+1


source







All Articles