# Cheat Sheet #day35 - Jenkins

## Jenkins Cheatsheet

### Installation and Setup

* **Download Jenkins**
    
    * Download Jenkins from [jenkins.io](http://jenkins.io).
        
* **Install Jenkins on Ubuntu**
    
    ```bash
    wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
    sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
    sudo apt-get update
    sudo apt-get install jenkins
    ```
    
* **Start Jenkins Service**
    
    ```bash
    sudo systemctl start jenkins
    ```
    
* **Access Jenkins**
    
    * Open a web browser and go to [`http://localhost:8080`](http://localhost:8080).
        
* **Unlock Jenkins**
    
    * Follow on-screen instructions to unlock using the initial admin password located at `/var/lib/jenkins/secrets/initialAdminPassword`.
        

### Basic Commands

* **Install Jenkins Plugin**
    
    * Navigate to **Manage Jenkins** -&gt; **Manage Plugins** -&gt; **Available**, search for plugins and install.
        
* **Update Jenkins Plugins**
    
    * Navigate to **Manage Jenkins** -&gt; **Manage Plugins** -&gt; **Installed**, select plugins to update.
        
* **Restart Jenkins**
    
    * Navigate to **Manage Jenkins** -&gt; **Reload Configuration from Disk**.
        

### Managing Jobs

* **Create a New Job**
    
    * **Freestyle Project**:
        
        * Navigate to **New Item** -&gt; Enter name -&gt; Choose **Freestyle project** -&gt; Configure.
            
    * **Pipeline Project**:
        
        * Use Jenkinsfile with declarative or scripted pipeline.
            
* **Build Job**
    
    * Click **Build Now** in job's dashboard.
        
* **Configure Job**
    
    * Navigate to job -&gt; **Configure** -&gt; Update settings -&gt; Save.
        
* **Delete Job**
    
    * Navigate to job -&gt; **Delete** -&gt; Confirm.
        
* **Copy Job**
    
    * Navigate to job -&gt; **Copy Job** -&gt; Provide new name -&gt; OK.
        

### Jenkins Pipeline

* **Pipeline Syntax**
    
    * Declarative Pipeline:
        
        ```plaintext
        pipeline {
            agent any
            stages {
                stage('Build') {
                    steps {
                        // Build steps
                    }
                }
                stage('Test') {
                    steps {
                        // Test steps
                    }
                }
                stage('Deploy') {
                    steps {
                        // Deployment steps
                    }
                }
            }
        }
        ```
        
    * Scripted Pipeline:
        
        ```plaintext
        node {
            stage('Build') {
                // Build steps
            }
            stage('Test') {
                // Test steps
            }
            stage('Deploy') {
                // Deployment steps
            }
        }
        ```
        
* **Pipeline Libraries**
    
    * Configure global libraries under **Manage Jenkins** -&gt; **Configure System** -&gt; **Global Pipeline Libraries**.
        
* **Parallel Execution**
    
    ```plaintext
    pipeline {
        agent any
        stages {
            stage('Parallel') {
                parallel {
                    stage('Branch A') {
                        steps {
                            // Steps for branch A
                        }
                    }
                    stage('Branch B') {
                        steps {
                            // Steps for branch B
                        }
                    }
                }
            }
        }
    }
    ```
    

### Authentication and Authorization

* **Configure Security**
    
    * Navigate to **Manage Jenkins** -&gt; **Configure Global Security** -&gt; Configure security settings.
        
* **Create Users**
    
    * Navigate to **Manage Jenkins** -&gt; **Manage Users** -&gt; **Create User**.
        
* **Manage Roles**
    
    * Install and configure plugins like Role-based Authorization Strategy to manage roles and permissions.
        

### Plugins

* **Install Plugins**
    
    * Navigate to **Manage Jenkins** -&gt; **Manage Plugins** -&gt; **Available** -&gt; Search and install plugins.
        
* **Useful Plugins**
    
    * **Git Plugin**: Integrate Git with Jenkins jobs.
        
    * **Pipeline Plugin**: Enable Jenkinsfile-based pipelines.
        
    * **Credentials Plugin**: Manage credentials securely.
        
    * **Blue Ocean Plugin**: Provides a modern UI for pipelines.
        

### Jenkins CLI

* **Install Jenkins CLI**
    
    * Download CLI jar from Jenkins web interface or use package manager.
        
* **Basic CLI Commands**
    
    ```bash
    java -jar jenkins-cli.jar -s http://[jenkins-url] [command]
    ```
    
    * Example:
        
        * `java -jar jenkins-cli.jar -s` [`http://localhost:8080`](http://localhost:8080) `help`
            
        * `java -jar jenkins-cli.jar -s` [`http://localhost:8080`](http://localhost:8080) `build [job-name]`
            

### Script Console

* **Access Script Console**
    
    * Navigate to **Manage Jenkins** -&gt; **Script Console**.
        
* **Run Groovy Scripts**
    
    * Execute Groovy scripts for Jenkins administration and automation tasks.
        

### Backup and Restore

* **Backup Jenkins**
    
    * Archive Jenkins home directory (`/var/lib/jenkins`) regularly.
        
* **Restore Jenkins**
    
    * Replace Jenkins home directory with backup or use Jenkins CLI to restore jobs and configurations.
        

### Monitoring and Troubleshooting

* **Monitoring**
    
    * Use built-in monitoring tools or plugins like Jenkins Monitoring Plugin for performance insights.
        
* **Logs**
    
    * Jenkins logs are typically found in `/var/log/jenkins/`.
        
* **Troubleshooting**
    
    * Check Jenkins UI for notifications and logs for errors.
        

This cheatsheet covers essential commands and configurations for Jenkins, helping with job management, pipelines, security settings, plugins, and more. Adjust commands and paths based on your Jenkins installation and configuration.
