Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Ubuntu16.04 based build on Azure Pipelines #2611

Merged
merged 2 commits into from
Nov 12, 2018

Conversation

taketwo
Copy link
Member

@taketwo taketwo commented Nov 10, 2018

This PR adds a new job that builds PCL in the Ubuntu 16.04 based image. It also switches the documentation job to use a dedicated "doc" image with Doxygen and other necessary tools.

I've created a new organization on Docker Hub to host "environment" images where all PCL dependencies are pre-installed. The images from this organization will be used for containerized builds on Azure Pipelines. For the time being I created these images locally and pushed to the registry. In future we may commit their respective Dockerfiles to the main PCL repository (or a supplementary one) and setup a separate pipeline to rebuild and push them to the registry automatically.

@taketwo taketwo changed the title Add Ubuntu16.04 based build on Azure Pipelines [WIP] Add Ubuntu16.04 based build on Azure Pipelines Nov 10, 2018
@SergioRAgostinho
Copy link
Member

SergioRAgostinho commented Nov 10, 2018

Edit: wrong thread sorry for the spam. I'll add it to the original.

@taketwo Read this https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=vsts&tabs=yaml#timeouts

You need to set the timeout explicitly to 0. A maximum limit still exists and it is 6 hours.

Edit 2: Don't forget about the status badge. https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started-yaml?view=vsts#get-the-status-badge

@taketwo
Copy link
Member Author

taketwo commented Nov 11, 2018

Thanks for the tip! With timeout set to zero the job succeeded (on my private account, log here). It took 3 hours to build the library though, really long. That was without passing -j option to make, so I've also tried to set -j2 and -j3. This leads to faster build progress, however inevitably ends up in a failure at some late stage of the build. I restarted the pipeline multiple times, but it always eventually failed. Here is an example of such failure. Unfortunately, Azure is not informative about the problem and refuses to provide a complete log of the step up until the failure, so we can not check at which exact point during the build it failed. I suspect it's some sort of out of memory error, we had similar a similar problem in the early days on Travis. The hacky solution was to build the memory-heavy targets with a single thread, and the rest of the targets with multiple threads. I'll try to use the same technique here.

@taketwo taketwo force-pushed the ubuntu1604-ci branch 2 times, most recently from e266321 to f85f293 Compare November 12, 2018 07:03
@SergioRAgostinho
Copy link
Member

Unfortunately, Azure is not informative about the problem and refuses to provide a complete log of the step up until the failure, so we can not check at which exact point during the build it failed.

It doesn't allow me to download to the log of the failed build :/

I suspect it's some sort of out of memory error, we had similar a similar problem in the early days on Travis.

That would also be my intuition. Did you know the "resource limits" of their VMs? In Travis we were not able to compile with -j2 in the container infrastructure and that was a reason to move to their sudo enabled builds. It provided slightly more memory.

The hacky solution was to build the memory-heavy targets with a single thread, and the rest of the targets with multiple threads. I'll try to use the same technique here.

We never really get rid of the highly involved CI pipelines.

@taketwo
Copy link
Member Author

taketwo commented Nov 12, 2018

It doesn't allow me to download to the log of the failed build :/

I can download, but it has exactly the same contents as in the web interface, i.e. only "Build Library failed" line.

So the following works and finishes in 1h 44m:

          cmake --build . -- -j2 pcl_filters
          cmake --build . -- test_filters
          cmake --build . -- -j2 pcl_registration
          cmake --build . -- test_registration test_registration_api
          cmake --build . -- -j2

I also tried -j3, but it took 10 minutes longer.

I will add one more commit on top, removing Travis pipeline and replacing the CI badge in the README, and then we are ready to go.

@SergioRAgostinho
Copy link
Member

👍 It might be worth to add a minor comment to the config file explaining the need for this "build order".

          cmake --build . -- -j2 pcl_filters
          cmake --build . -- test_filters
          cmake --build . -- -j2 pcl_registration
          cmake --build . -- test_registration test_registration_api
          cmake --build . -- -j2

@taketwo
Copy link
Member Author

taketwo commented Nov 12, 2018

Done.

@taketwo taketwo changed the title [WIP] Add Ubuntu16.04 based build on Azure Pipelines Add Ubuntu16.04 based build on Azure Pipelines Nov 12, 2018
Copy link
Member

@SergioRAgostinho SergioRAgostinho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super. Thanks a lot Sergey.

@SergioRAgostinho SergioRAgostinho merged commit d0b92fa into PointCloudLibrary:master Nov 12, 2018
@taketwo taketwo deleted the ubuntu1604-ci branch November 12, 2018 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants