Understanding Jenkins and CI/CD Best Practices

Mar 17, 2025

Lecture Notes on Jenkins and CI/CD Automation

Overview of Jenkins

  • Jenkins is an automation server used to build projects.
  • It acts as a CI (Continuous Integration) tool and a CD (Continuous Delivery/Deployment) tool.
  • Jenkins orchestrates the whole CI/CD flow.
  • Can integrate with tools like Argo CD for microservices deployment and Ansible for software deployment.
  • Can trigger automated tests after compiling source code.

Artifacts in CI/CD

  • Artifacts refer to the output of build processes, like compiled binaries or executables.
  • Example formats: .exe for Windows, .jar (Java Archive) for Java, .war (Web Application Archive) for Java web applications.
  • Artifacts include compiled source code and dependencies and can be stored in artifact repositories like Nexus.
  • Important for storing different versions to allow rollback if newer versions fail.

Jenkins CI/CD Workflow

  • Code is developed and pushed to a version control system like GitHub.
  • Jenkins monitors the repository for changes using a GitHub webhook or SCM polling.
  • Upon detecting changes, Jenkins performs a build, creates artifacts, and can deploy these to a server.
  • Artifacts are stored in repositories such as Nexus for version control.

Configuring Jenkins

  • Jenkins can be set up to pull changes from a repository periodically using SCM polling.
  • Build triggers can be set up using CRON expressions to define polling frequency.

Introduction to Maven

  • Maven is a build tool used primarily for Java projects.
  • It utilizes a Project Object Model (POM) for configuration, listing dependencies, and repositories.
  • Maven's POM file is central to its operation, detailing project structure, dependencies, and plugins.
  • Maven automatically handles library dependencies and can be integrated into Jenkins pipelines.

Using Jenkins with Maven

  • Jenkins pipelines can invoke Maven to handle the build stage of the CI/CD pipeline.
  • Pipelines can be staged, such as Build, Test, Deploy, with each stage handling specific tasks.
  • Jenkins can trigger Maven and other tools like JUnit for running tests.

Repository and Version Control

  • Version control for Jenkins pipelines is better managed in source control systems like GitHub.
  • Storing Jenkinsfiles in a repo allows for better collaboration and versioning.

Issues and Troubleshooting

  • Errors in Jenkins builds might be due to misconfigured roles, permissions, or missing dependencies.
  • Common issues include Terraform not being found or incorrect IAM roles in AWS.

Practical Tips

  • Always ensure Jenkins is correctly configured to pull from the right branches and repositories.
  • Use CRON jobs for scheduled builds but ensure the correct syntax is used.
  • When debugging Jenkins, examine console outputs for detailed error logs.
  • Utilize Jenkins’ plugin ecosystem to extend its capabilities.