In software engineering, DevOps (Development and Operations) refers to the practices and methodologies used to streamline the development, deployment, and maintenance. Jenkins is one such popular open-source automation server used in DevOps practices, including in robotics.
Jenkins is used to setting up automated workflows to ensure that changes to the codebase are tested and integrated smoothly, leading to more efficient development and deployment processes.
.
├── ros1
│ └── gazebo
│ ├── Dockerfile
│ └── ros_entrypoint.sh
├── Jenkinsfile
├── Makefile
├── README.md
└── start_jenkins.sh
The project contains two branches, one for noetic
distribution and a second for galactic
distribution.
- ros1 # noetic
- ros2 # galactic
A Makefile
is a script used in software engineering to automate the process, to execute the Makefile
open the terminal and execute the following commands for root of the project directory.
# check if you are on correct branch
$ git branch
*ros1
# install and setup docker
$ make setup-docker
# setup terminal
$ make setup-tty
# install, setup or start jenkins
$ make setup-jenkins
Note: In case installation of Docker
and Jenkins
is already done in the past the above steps in not needed.
# find the web address for jenkins
$ jenkins_address
# alternative
$ cat ~/jenkins__pid__url.txt
# find login credentials
$ cat ~/jenkins__login.txt
To access the Jenkins
server open the web address in a new tab and log in to the server using credentials.
Note: The server contains two pipelines ROS1
and ROS2
, one for each branch ros1
and ros2
as SCM poll
build triggers.
# create a new branch from base branch
$ git checkout -b ros1 ros1-modified
# create new generic file
$ touch .gitignore
# commit changes to new branch
$ git commit -am "test: check jenkins build via pr"
Note: Create a pull request from ros1-modified
to ros1
.
System tool/modules used for project development.
Applications
: vs-code, ros-extensions and docker-desktop.ROS
: ros-docker-images (galactic
,noetic
) or build-source.
Distributed under the MIT License. See LICENSE.txt
for more information.