Showing posts with label Jenkins Automation. Show all posts
Showing posts with label Jenkins Automation. Show all posts

Thursday, September 3, 2020

Configuring Fresh Jobs in Jenkins

Hello, Dear DevOps Automation enthusiast! This post is intended targeted to those who have just started the journey in the Continuous Integration and Continuous Deployment on the Cloud Platforms or On-premises environments.

Pre-requisites

  • Latest Stable version of Jenkins installed 
  • Jenkins Master is in running state on your machine/VM/Cloud instance
  • Able to login to the Jenkins Console

In the left pane, you can click on 'New Item' or Click on the 'Start Using Jenkins' link. The welcome screen shows a link to create a new job!

Jenkins First Job Project creation


You need to enter the value for 
Name for the build project
Type of project
  1. Freestyle Project
  2. Pipeline
  3. Multi-configuration Project
  4. Folder
  5. GitHub Organization
  6. Multibranch Pipeline

Enter the name of the project, Select the 'Freestyle project' for the first time and click on the 'OK' button. New page loads with 6 sections/tabs for build project inputs.

Job Configuration Sections
In Jenkins console we have various Job Configuration types
Jenkins Job Configuration


  1. General - Description of the project, Enable project based security, change date pattern for BUILD_TIMESTAMP, Discard old builds enable will help you for easy migration of Jenkins master.
  2. Job Notification -  End points, You can enable notification mail when someone changed configuration. Rebuild without asking parameters or we can disable the rebuild for a particular job. You can choose the build requires lockable resources, which means other jobs not allowed when this job is in progress. This project is parameterized enabled then you can add different type Parameters such as String Parameter, Choice Parameter, Password Parameter, Node
  3. Jenkins job configuration allows us to use 5 different choices of 'Source code management' as:
a. None
b. CVS
c. CVS Projectset
d. Git
e. Subversion
                    Default it is selected as - None


            Build Trigger
            1. Jenkin's job will be triggered by a 'Build Triggers' section. Here we have Trigger build remotely from scripts, 
            2. Build after other projects are built when there is dependency are in the projects
            3. Build periodically - This choice asks you on what period you want to execute this job
            4. Enable Artifactory trigger - when docker image is pushed you want to run a job 
            5. GitHub hook trigger for GITscm polling - requires authentication for webhook accessing GitHub repository
            6. Poll SCM - for all types of source code repository updates can trigger the job.
            Build Environment

            Usually, when we run a build, Jenkins uses /tmp/somerandomnumber.sh in Linux machines as the automatically generated script will create workspace in the slave machine. 
            1. Delete workspace before build starts
            2. Use secret text(s) or file(s)
            3. Provide configuration files
            4. send files or execute commands over SSH before the build starts 
            5. send files or execute commands over SSH after the build runs
            6. Abort the build if it's stuck
            7. Add timestamps to the Console Output
            8. Ant/Ivy-Artifactory Integration
            9. Create a formatted version number
            10. Farm Repository
            11. Generic-Artifactory Integration
            12. Gradle-Artifactory Integration
            13. Inject environment variables to the build process
            14. Inject passwords to the build as environment variables
            15. Inspect build log for published Gradle build scans
            16. Maven3-Artifactory Integration
            17. Run Xvnc during build
            18. Setup Kubernetes CLI (kubectl)
            19. With Ant

            Build

            The build section will have an Execute shell with command text box. where you can enter the shell commands. which will become a shell script.


            2. Pipeline Project

            If you choose the Pipeline Project then it will have the following sections
            1. General
            2. Job Notifications
            3. Build Triggers
            4. Advanced Project options
            5. Pipeline 

            General 

            In the General section, you can see
            Enable project-based security

            Discard old builds when you check this -> Strategy where you have LogRotation based on - Days to keep builds or Max # of builds to keep 
            Advance option - 
            Days to keep artifacts - if not empty default 14, artifacts from builds older than this number of days will be deleted, but the logs, history, reports, etc for the build will be kept
            Max # of builds to keep with artifacts - if not empty, only up to this number of builds have their artifacts retained

            Do not allow concurrent builds
            Do not allow the pipeline to resume if the master restarts
            GitHub project

            Job Notifications


            Notify when Job configuration changes
            Pipeline speed/durability override
            Preserve stashes from completed builds
              Rebuild options: Rebuild Without Asking For Parameters
              Disable Rebuilding for this job
            Sidebar Links
            This project is parameterized selected then you are allowed to use following parameters:
            1. Node
            2. String
            3. Active Choices parameter -> 
              1. Name 
              2. Script option will have choice to enter the Groovy script
              3. Choice type:  Single select, Multi select, Radio button, Checkbox 
              4. Enable Filters
              5. The filter starts at 1

            Build Triggers

            1. Build after other projects are built
            2. Build periodically
            3. Build whenever a SNAPSHOT dependency is built
            4. Enable Artifactory trigger
            5. GitHub hook trigger for GITScm polling
            6. Poll SCM
            7. Disable this project
            8. Quiet period
            9. Trigger builds remotely (e.g., from scripts)

            Advanced Project Options

            Click on the 'Advanced' button

            Pipeline

            Definition - Pipeline script
                the script, Use Groovy sandbox.

            After you configured the Job, you have to Apply to save the configuration until now. 

            If you are working on the Visual Studio code as editor then you can install the Extention. 

            Groovy extension



            Jenkinsfile Extension




            Saturday, September 7, 2019

            Continuous Integration Automation: Webhook on GitHub notify Jenkins

            Hello Guys, Jenkins CI/CD enthusiast,

            In this post, I would like to discuss the implementation of Jenkins Continuous Integration automatic build triggers. Where Jenkins master will be stay connected with the GitHub server with an API token based authentication. To connect with GitHub server we need a personal access token.

            Webhook for GitHub and Jenkins integration

            1. Create token credentials
            2. GitHub server configuration

            Webhook is a wonderful solution that will keep track of changes that made to the GitHub repo and notify the Jenkins Master. If we create the item or freestyle project will be triggered automatically.

            Create token credentials 

            Login into the Jenkins console, Click on the left pane - "Manage jenkins" link. Select the "System Configure" navigates to the new page where you need scroll down till you found the GitHub section.
            First we will create the token, look for the "Advanced" button on the rightside. Additional actions: 'Convert login and password to token'.
            Select the radio button: "From login and password" which prompt for entering the values for the Login, password that used for GitHub where you have repo. Then use the 'Create token creentials' button at the right end.

            Create Token for GitHub on Jenkins
            Now the tokens are generated we are ready to connect with the GitHub server. move upwards and enter the following values:


            • Your GitHub profile used for connecting
            • API URL don't change this 
            • Credentials select from the dropdown, where you can find the recently created Token for GitHub - Selected
            • Click on the Test connection button will produce the result of connectivity 
            • Tick mark the 'manage hooks'



            GitHub Server configuration on Jenkins

            GitHub Configuration for Webhook

            The following simple steps will be enables you to get the webhook on the GitHub that connected to Jenkins Master

            1. Log in to your GitHub
            2. The top right corner you can find your profile link from that menu select 'Settings'.
            3. In the left pane at the bottom, Select the 'Developer Settings'
            4. The new page for 'Developer Settings' will have three options, Select 'Personal access tokens' from the menu.

            Personal access tokens on GitHub

            Now we all set to go for testing the Webhook connectivity with Jenkins

            Create a freestyle project for Webhook


            On the Jenkins console create new freestyle project
            Name it as GitHub-webhook
            Project type: Freestyle project
            Click on Ok button

            Jenkins Project for GitHub Webhook

            Source Code Management


            Select the Git
            Jenkins Source Code management

            Build Triggers

            Select GitHub hook trigger for GITScm polling

            Jenkins Build Trigger
            In the Build tab
            Select the Execute shell

            enter the stuff to know that build triggered in my example used the cat the README.md file which is targeted to modify.

            Jenkins build section for CI automation


            Save the Jenkins Project.

            Go to the GitHub page

            Modify the code in the Git repository,

            added a line in the README.md file


            Automatic Build Triggers

            In the Jenkins now the job will be triggered automatically

            Jenkins Build automatic triggered and the console output 


            Here is the conclusion that Webhook is simple mechanism that will helps Jenkins get notified with code changed in the GitHub.


            Categories

            Kubernetes (25) Docker (20) git (15) Jenkins (12) AWS (7) Jenkins CI (5) Vagrant (5) K8s (4) VirtualBox (4) CentOS7 (3) docker registry (3) docker-ee (3) ucp (3) Jenkins Automation (2) Jenkins Master Slave (2) Jenkins Project (2) containers (2) create deployment (2) docker EE (2) docker private registry (2) dockers (2) dtr (2) kubeadm (2) kubectl (2) kubelet (2) openssl (2) Alert Manager CLI (1) AlertManager (1) Apache Maven (1) Best DevOps interview questions (1) CentOS (1) Container as a Service (1) DevOps Interview Questions (1) Docker 19 CE on Ubuntu 19.04 (1) Docker Tutorial (1) Docker UCP (1) Docker installation on Ubunutu (1) Docker interview questions (1) Docker on PowerShell (1) Docker on Windows (1) Docker version (1) Docker-ee installation on CentOS (1) DockerHub (1) Features of DTR (1) Fedora (1) Freestyle Project (1) Git Install on CentOS (1) Git Install on Oracle Linux (1) Git Install on RHEL (1) Git Source based installation (1) Git line ending setup (1) Git migration (1) Grafana on Windows (1) Install DTR (1) Install Docker on Windows Server (1) Install Maven on CentOS (1) Issues (1) Jenkins CI server on AWS instance (1) Jenkins First Job (1) Jenkins Installation on CentOS7 (1) Jenkins Master (1) Jenkins automatic build (1) Jenkins installation on Ubuntu 18.04 (1) Jenkins integration with GitHub server (1) Jenkins on AWS Ubuntu (1) Kubernetes Cluster provisioning (1) Kubernetes interview questions (1) Kuberntes Installation (1) Maven (1) Maven installation on Unix (1) Operations interview Questions (1) Oracle Linux (1) Personal access tokens on GitHub (1) Problem in Docker (1) Prometheus (1) Prometheus CLI (1) RHEL (1) SCM (1) SCM Poll (1) SRE interview questions (1) Troubleshooting (1) Uninstall Git (1) Uninstall Git on CentOS7 (1) Universal Control Plane (1) Vagrantfile (1) amtool (1) aws IAM Role (1) aws policy (1) caas (1) chef installation (1) create organization on UCP (1) create team on UCP (1) docker CE (1) docker UCP console (1) docker command line (1) docker commands (1) docker community edition (1) docker container (1) docker editions (1) docker enterprise edition (1) docker enterprise edition deep dive (1) docker for windows (1) docker hub (1) docker installation (1) docker node (1) docker releases (1) docker secure registry (1) docker service (1) docker swarm init (1) docker swarm join (1) docker trusted registry (1) elasticBeanStalk (1) global configurations (1) helm installation issue (1) mvn (1) namespaces (1) promtool (1) service creation (1) slack (1)