Sunday, June 14, 2026

Complete AI-Enabled DevOps Learning Roadmap for 2026 | Skills Required to Become a Modern DevSecOps Engineer

 ðŸš€AI-Enabled DevOps Engineer Roadmap for 2026

The future belongs to AI-Enabled DevOps Engineers, not AI-only Engineers. Strong DevOps fundamentals combined with AI productivity skills will create the highest demand in the job market.


AI is not a replacement for DevOps skills. 

Top AI and DevOps skills

  1. Linux knowledge and scripting - basic troubleshooting and scripting and looking at the logs
  2. Experience in Git, GitHub, GitLab, Bitbucket, Azure Repos or any source code management tools.
  3. Experience in CI tools such as Jenkins, GitHub Actions, GitLab CICD, Azure DevOps
  4. Experience in Code quality tool/security scanning tools - SonarQube, AquaSec Trivy, Checkov
  5. Experience in Infrastructure automation tools such as Terraform, AWS cloud formation
  6. Experience in Configuration Management tools such as Ansible, Puppet or Chef
  7. Experience in scripting languages such as YAML, groovy, Ruby, Python and Shell
  8. Experience in containers such as Docker, Kubernetes and Helm
  9. Experience in Monitoring tools such as Prometheus, Grafana
  10. Ability to troubleshoot in case builds, deployments failure.
  11. Any cloud knowledge and experience - AWS, Azure and Google cloud
  12. AI-assisted DevOps and Cloud Engineering
  13. AI-assisted Troubleshooting and RCA
  14. AI-assisted Infrastructure Automation
  15. AI-assisted DevSecOps
  16. AI-assisted Kubernetes Operations
  17. Understanding AI Agents, RAG and SRE Automation

Soft skills employers are looking:

These days employers are not only looking for strong technical skills but also looking "soft skills" which are essentials to become successful in IT. If you think if you are lagging on any of these skills, no worries. All these skills can be developed and improved over period of time by practicing.

  • Open minded
  • Willingness to learn new skills
  • Communication
  • Approachable
  • "Get it done" attitude
  • Being adaptable

Tuesday, June 9, 2026

How to Integrate SonarQube with GitLab CI/CD | DevSecOps Pipeline

Please find steps for integrating SonarQube with GitLab CICD

Developer → GitLab → Build WAR → SonarQube Scan → Quality Gate 

PASS → Deploy WAR → Tomcat 

FAIL → Pipeline Failed → No Deployment


Pre-requisites:

How to integrate SonarQube with GitLab CICD and Deploy App into Tomcat 
We will be following below steps:
  • Create Token in SonarQube to authenticate with GitLab
  • Add Sonar Token, SonarQube URL as Secrets in GitLab
  • Create GitLab CICD yaml
  • Add tasks for Maven build and Sonar Scan
  • Verify scan report in SonarQube
Create Token in SonarQube to authenticate with GitLab
You need to login to SonarQube using your admin password and click on Admin on your top side.
Click on My Account, Security. 
Under Tokens, Give some value for token name and choose global analysis token, click on generate Tokens. Copy the token value generated.


Add Sonar Token and Sonar Host URLs as Variables in GitLab
Go to your GitLab Repo --> Click on Settings --> CICD --> Variables

Click new Variables


Add another variable for storing Sonar token




Create GitLab CICD workflow yaml:

Go to GitLab repo where your Java project is, create a new file:.gitlab-ci.yml

The below file have three stages:
    - build
    - sonar
    - deploy

Create .gitlab-ci.yml CICD Pipeline:
stages:
  - build
  - sonar
  - deploy

build_war:
  stage: build
  image: maven:3.8.6-eclipse-temurin-11

  script:
    - echo "Building WAR file using Maven"
    - mvn clean install -f MyWebApp/pom.xml
    - echo "Listing target directory"
    - ls -la MyWebApp/target

  artifacts:
    paths:
      - MyWebApp/target/*.war
    expire_in: 1 hour

sonarqube_scan:
  stage: sonar
  image: maven:3.9.6-eclipse-temurin-17

  script:
    - |
      mvn sonar:sonar \
        -f MyWebApp/pom.xml \
        -Dsonar.projectKey=MyWebApp \
        -Dsonar.host.url="${SONAR_HOST_URL}" \
        -Dsonar.token="${SONAR_TOKEN}"\
        -Dsonar.qualitygate.wait=true
      
deploy_to_tomcat:
  stage: deploy
  image: curlimages/curl:latest
  dependencies:
    - build_war
  script:
    - echo "Deploying WAR file to Tomcat running on AWS EC2"
    - |
      curl -v -u ${TOMCAT_USER}:${TOMCAT_PASSWORD} \
      -T MyWebApp/target/MyWebApp.war \
      "http://${TOMCAT_HOST}/manager/text/deploy?path=/MyWebApp&update=true"

Commit the file.

As soon as you commit, build will run immediately in GitLab CICD. 
Now you can see the output of build in Build → Pipelines / CI/CD → Pipelines



Now login to SonarQube to see the Scan report

Lab Video:

Saturday, June 6, 2026

How to Build and Deploy a Java Web App Using GitLab CI/CD | GitLab Pipeline Tutorial

Introduction - Gitlab CICD Pipeline

In this lab, we will create a GitLab CI/CD pipeline that automatically builds a Java web application using Maven and deploys the generated WAR file to Tomcat.

Pipeline flow:

Developer → GitLab Repository → GitLab CI/CD Pipeline → GitLab Runner → Maven Build → WAR Artifact → Deploy → Tomcat → Web Application

What is GitLab CICD?

GitLab CI/CD automates the software delivery process whenever developers push code to a GitLab repository.

A GitLab CI/CD pipeline can automate:

  • Building the application
  • Running tests
  • Performing security and code-quality scans
  • Creating artifacts
  • Deploying the application

The .gitlab-ci.yml file defines the GitLab CI/CD pipeline and is stored in the root of your GitLab repository.

It defines:

  • Pipeline stages
  • Jobs
  • Container images
  • Commands/scripts
  • Variables
  • Artifacts
  • Deployment instructions

When code is pushed to GitLab, GitLab reads the .gitlab-ci.yml file and schedules the jobs for execution by a GitLab Runner.

GitLab automatically reads this file whenever code changes are pushed into the repository. In this lab, GitLab Runner uses a Docker container image to run the job,

What is a GitLab Runner?

A GitLab Runner is the execution engine that actually runs the CI/CD jobs defined in .gitlab-ci.yml.

In this lab, the runner uses different Docker images for different jobs:

Build job: maven:3.8.6-eclipse-temurin-11
Deploy job: curlimages/curl:latest

Pre-requisites:

Configure Tomcat credentials in GitLab

Add Tomcat user, Tomcat Password and Tomcat URL as Variables in GitLab
Go to your GitLab Repo --> Click on Settings --> CICD --> Variables

Create .gitlab-ci.yml for implementing CICD using GitLab

stages:

  - build

  - deploy

build_war:

  stage: build

  image: maven:3.8.6-eclipse-temurin-11

  script:

    - echo "Building WAR file using Maven"

    - mvn clean install -f MyWebApp/pom.xml

    - echo "Listing target directory"

    - ls -la MyWebApp/target

  artifacts:

    paths:

      - MyWebApp/target/*.war

    expire_in: 1 hour

deploy_to_tomcat:

  stage: deploy

  image: curlimages/curl:latest

  dependencies:

    - build_war

  script:

    - echo "Deploying WAR file to Tomcat running on AWS EC2"

    - |
      curl -v -u ${TOMCAT_USER}:${TOMCAT_PASSWORD} \
      -T MyWebApp/target/MyWebApp.war \
      "http://${TOMCAT_HOST}/manager/text/deploy?path=/MyWebApp&update=true"

You can access Pipeline:


What happens when the pipeline runs?

1. Developer pushes code → GitLab

GitLab detects .gitlab-ci.yml and creates a pipeline.

2. GitLab Runner picks up build_war

The Runner starts the Maven container:

maven:3.8.6-eclipse-temurin-11

Maven compiles, tests, packages the application and generates:

MyWebApp.war

3. WAR is stored as a GitLab artifact

MyWebApp/target/MyWebApp.war

4. Runner executes deploy_to_tomcat

A lightweight curl container is started:

curlimages/curl:latest

5. WAR is deployed to Tomcat

The pipeline calls the Tomcat Manager API and uploads the WAR file.

Verify the deployment

After the pipeline completes successfully, open:

http://<TOMCAT-PUBLIC-DNS>:8080/MyWebApp

You should see the deployed Java web application.

You can access lab video:

How to Configure GitLab Runner with Docker Executor on Ubuntu 24.04 EC2

How to Configure GitLab Runner with Docker Executor on Ubuntu 24.04 EC2 In this tutorial, we will configure a self-hosted GitLab R...