Search code examples
c++cmakegitlab-cirosgitlab-ci-runner

how to use ros | cmake with gitlab-ci


I have a simple project but i have no experiences with GitLab-ci. I use ROS and cmake to build my project on my local machine(ubuntu18-04). now I want to build my project on GitLab but this doesn't look easy for me.

Steps:

1-) installed binary runners from here

2-) registered runners from here for Linux - used docker as an executor (like gitlabci; i have no experience with docker) - selected ruby:2.6 default image

3-) Now' i can see my runner under Settings > CI/CD -> Runners

4-) Creating example .yml provided from gitlab

build-job:
  stage: build
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

And its working!

But now I want to build my code on gitlab-ci. File structure:

scripts
    ->build.sh
src
    ->Cmakelist.txt
    ->codes.cpp
binaries
    ->outputs ll be here.
.gitlab-ci.yml

build.sh doing everything that I want:

...
mkdir build
cd build
cmake .. -GNinja
ninja

So I need just run it. But I don't know how to install prerequisites. Which system exactly am I working on right now and how can I install prerequisites? (ubuntu 18.04 - docker - runner.. I just got mixed up )


Solution

  • Which system exactly am I working on right now

    You clicked selected ruby:2.6 default image so you are on ruby:2.6. You may then browse docker hub : https://hub.docker.com/_/ruby and dockerfile https://github.com/docker-library/ruby/blob/8e49e25b591d4cfa6324b6dada4f16629a1e51ce/2.6/buster/Dockerfile - I see it has "buster" which is the name of one of debian releases, so I guess it's debian.

    how can I install prerequisites?

    That depends on the image your are using, different linux distributions use different package mangers. I usually take a look at wiki package manager.

    You could just something like:

    build:
      image: ubuntu
      script:
        - apt-get install -y cmake gcc whatever-else-like-you-have-on-your-machine
        - ./scripts/build.sh