Quick Reference Guide - Jenkins as Code

Quick reference for common tasks and configurations in Jenkins as Code

Updated Jan 15, 2024
6 min read
Beginner
tools

Quick Reference Guide

Quick reference for common tasks and configurations in Jenkins as Code

📋 Table of Contents


🚀 Common Commands

Ansible Commands

# Run full deployment
ansible-playbook packer.yml \
  -e "target_host=packer_al2023_aarch64_devops_jenkins" \
  -t deploy,monitoring

# Check connectivity
ansible target_host -m ping

# Run with verbose output
ansible-playbook packer.yml -e "target_host=..." -vvv

# Dry run (check mode)
ansible-playbook packer.yml -e "target_host=..." --check

Git Commands

# Create feature branch
git checkout -b feature/onboard-new-service

# Commit changes
git add amazon/mcloud/nonprod/pipelines/jobs/JobGenie.groovy
git commit -m "Onboard new-service-api"

# Push and create PR
git push origin feature/onboard-new-service

Jenkins Commands

# Check Jenkins service
systemctl status jenkins

# View Jenkins logs
tail -f /var/log/jenkins/jenkins.log

# Restart Jenkins
systemctl restart jenkins

⚙️ Configuration Quick Reference

Essential Ansible Variables

# Jenkins Version
jenkins_version: 2.528.2

# Jenkins Home
jenkins_home: "/var/lib/jenkins"

# Project Name
jenkins_project_name: amazon

# Jenkins URL
jenkins_location:
  url: "https://jenkins.mcloud.com/"
  adminAddress: "mcloud-jenkins@mcloud.com"

# Security
jenkins_securityRealm:
  local:
    allowsSignup: false
    users:
      - id: "admin"
        password: "Admin@123"

User Access Configuration

# Read Users
overall_read_users:
  amazon:
    mcloud:
      - user: "dev"
    qa:
      - user: "qa-user"

# Admin Users
overall_admin_users:
  devops_managers:
    - user: "hari_25585"
    - user: "admin"

JobGenie Default Config

def defaultConfigs = [
    EKS_CLUSTER_NAME: "${PROJECT_NAME}-eks-${PROJECT_ENV}",
    CICD_TEMPLATE_BASE: 'templates/cicd',
    CICD_BASE: "${HOME_DIR}/jenkinsfiles",
    VALUES_YMLBASE: "${HOME_DIR}/helm-values",
    IMAGE_ECR: "${awsAccountId}.dkr.ecr.${region}.amazonaws.com",
    GROUP: "v2",
    ENV: "stage"
]

🎩 JobGenie Quick Examples

Simple Application Job

def jobGenie = [
    "mcloud": [
        [
            APP_REPO: 'my-app',
            APP_BRANCH: 'master',
            appNames: ['my-service']
        ]
    ]
]

Multi-Service Job

def jobGenie = [
    "mcloud": [
        [
            APP_REPO: 'monorepo',
            APP_BRANCH: 'main',
            appNames: ['service-a', 'service-b', 'service-c']
        ]
    ]
]

Custom Job with Parameters

def jobGenie = [
    "mcloud": [
        [
            SERVICE: 'custom-service',
            CICD_TEMPLATE_NAME: 'custom-template',
            JOB_PARAMS: [
                [ name: 'TAG', string: 'latest', description: 'Deployment tag' ],
                [ name: 'ENV', choices: ['dev', 'prod'], description: 'Environment' ]
            ]
        ]
    ]
]

Advanced Configuration

def jobGenie = [
    "mcloud": [
        [
            APP_REPO: 'my-app',
            APP_BRANCH: 'develop',
            appNames: ['my-service'],
            DOCKER_BUILD_ARGS: 'ENV,TECHTEAM',
            DOCKERFILE_PATH: 'services/Dockerfile',
            SSH_KEYS: 'default:/var/lib/jenkins/.ssh/id_rsa',
            MAVEN_VERSION: 'maven3.9.7',
            JDK_VERSION: 'jdk21'
        ]
    ]
]

🔧 Troubleshooting Quick Fixes

Jenkins Not Accessible

# Check service
systemctl status jenkins

# Check port
netstat -tlnp | grep 8080

# Check logs
tail -f /var/log/jenkins/jenkins.log

Configuration Not Applied

  1. Reload Configuration as Code:
    • Navigate to: amazon/manage-infra/Reload-ConfigAsCode
    • Run job
  2. Check Configuration:
    • Navigate to: Manage JenkinsConfiguration as Code

Jobs Not Generated

  1. Check createjob flag:
    def globalConfigs = [ createjob: true ]
    
  2. Verify JobGenie syntax:
    def jobGenie = [
        "mcloud": [ /* ... */ ]
    ]
    
  3. Check seed job logs:
    • View console output
    • Look for errors

Permission Denied

  1. Check user in configuration:
    overall_read_users:
      amazon:
        mcloud:
          - user: "username"
    
  2. Verify role patterns match job paths

  3. Test as user to verify access

📚 Additional Resources

🧭 Navigation

Related Topics:

Jenkins

  • Jenkins URL: https://jenkins.mcloud.com/
  • Configuration as Code: Manage JenkinsConfiguration as Code
  • Credentials: Manage JenkinsCredentials

Git Repositories

  • mCloud-Jenkins: https://github.com/HarryTheDevOpsGuy/mCloud-Jenkins.git
  • mCloud-infra: https://github.com/HarryTheDevOpsGuy/mCloud-infra.git

Support

  • Email: devops-admin@example.com
  • Slack: #devops-alerts

📝 Common Workflows

Onboard New Service

  1. Edit JobGenie.groovy:
    def jobGenie = [
        "mcloud": [
            [
                APP_REPO: 'new-service',
                APP_BRANCH: 'develop',
                appNames: ['new-service-api']
            ]
        ]
    ]
    
  2. Commit and push:
    git add amazon/mcloud/nonprod/pipelines/jobs/JobGenie.groovy
    git commit -m "Onboard new-service-api"
    git push origin feature/onboard-new-service
    
  3. Run seed job:
    • Navigate to: amazon/mcloud/nonprod/0-mCloud-DevOps
    • Run with your branch
  4. Verify job created:
    • Check: amazon/mcloud/nonprod/deploy/v2/stage/new-service-api/

Update Configuration

  1. Edit Ansible variables:
    vim group_vars/packer_al2023_aarch64_devops_jenkins.yml
    
  2. Run Ansible playbook:
    ansible-playbook packer.yml \
      -e "target_host=packer_al2023_aarch64_devops_jenkins" \
      -t deploy
    
  3. Reload Configuration as Code:
    • Run: amazon/manage-infra/Reload-ConfigAsCode

Add New User

  1. Edit Ansible variables:
    overall_read_users:
      amazon:
        mcloud:
          - user: "new-user"
    
  2. Run Ansible playbook:
    ansible-playbook packer.yml \
      -e "target_host=packer_al2023_aarch64_devops_jenkins" \
      -t deploy
    
  3. Reload Configuration as Code

🎯 Quick Checklist

Initial Setup

  • Ansible playbook configured
  • Jenkins server provisioned
  • Configuration as Code loaded
  • Credentials added
  • Seed jobs created

Onboarding Service

  • JobGenie config created
  • Changes committed to Git
  • Seed job run successfully
  • Jobs generated correctly
  • Test build successful

Maintenance

  • Regular backups configured
  • Monitoring enabled
  • Security audit completed
  • Documentation updated
  • Team trained

Maintained by the DevOps Team

Quick reference for common tasks

Found this helpful?

Help us improve this documentation by sharing your feedback or suggesting improvements.