Giter Club home page Giter Club logo

-jenkins-maven-project's Introduction

jenkins-maven-project

Building Jenkins Pipelines on Amazon Linux 2 AWS EC2 Instance
        Configuring Jenkins Pipeline with GitHub Webhook to Build the a Java Maven Project
  • To build the java maven project with Jenkins pipeline using the Jenkinsfile and GitHub Webhook. To accomplish this task, we need;

    • a java code to build

    • a java environment to run the build stages on the java code

    • a maven environment to run the build stages on the java code

    • a Jenkinsfile configured for an automated build on our repo

  • Create a public project repository jenkins-maven-project on your GitHub account.

  • Clone the jenkins-maven-project repository on local computer.

  • Copy the files from my repository(https://github.com/gulec2000/jenkins-maven-project/tree/main/hello-app) hello-app and paste under the jenkins-maven-project your GitHub repo folder.

  • Go to the Jenkins dashboard and click on New Item to create a pipeline.

  • Enter pipeline-with-jenkinsfile-and-webhook-for-maven-project then select Pipeline and click OK.

  • Enter Simple pipeline configured with Jenkinsfile and GitHub Webhook for Maven project in the description field.

  • Put a checkmark on GitHub Project under General section, enter URL of the project repository.

https://github.com/gulec2000/jenkins-maven-project.git
  • Put a checkmark on GitHub hook trigger for GITScm polling under Build Triggers section.

  • Go to the jenkins-maven-project repository page and click on Settings.

  • Click on the Webhooks on the left hand menu, and then click on Add webhook.

  • Copy the Jenkins URL from the AWS Management Console, paste it into Payload URL field, add /github-webhook/ at the end of URL, and click on Add webhook.

http://ec2-54-144-151-76.compute-1.amazonaws.com:8080/github-webhook/

- Go to the `Pipeline` section, and select `Pipeline script from SCM` in the `Definition` field.

- Select `Git` in the `SCM` field.

- Enter URL of the project repository, and let others be default.

```text
https://github.com/gulec2000/jenkins-maven-project.git
  • Click apply and save. Note that the script Jenkinsfile should be placed under root folder of repo.

Java Installation

- sudo yum update -y
- sudo amazon-linux-extras install java-openjdk11 -y
- sudo yum install java-devel 

Maven Settings

  • 'Maven' Installation on 'ec2 Instance' and setting uo the environment
- cd /opt
- wget https://www-eu.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
- sudo tar xzf apache-maven-3.6.3-bin.tar.gz
- sudo ln -s apache-maven-3.6.3 maven
- sudo echo 'export M2_HOME=/opt/maven' >> /etc/profile.d/maven.sh
- sudo echo 'export PATH=${M2_HOME}/bin:${PATH}' >> /etc/profile.d/maven.sh
- source /etc/profile.d/maven.sh

GIT installation on 'ec2 instance'

 - sudo yum install git -y

Open Jenkins GUI on web browser

  • Setting System Maven Path for default usage
- Go to `Manage Jenkins`
  - Select `Configure System`
  - Find `Environment variables` part,
  - Click `Add`
    - for `Name`, enter `PATH+EXTRA` 
    - for `Value`, enter `/opt/maven/bin`
  • Setting a 'specific Maven Release' in Jenkins for usage
- Go to the `Global Tool Configuration`

- To the bottom, `Maven` section
  - Give a name such as `maven-3.6.3`
  - Select `install automatically`
  - `Install from Apache` version `3.6.3`
  • Since the Jenkins Server would be running on Docker Machine, we could leverage from docker image of maven to setup the java and maven environment.

  • Create a Jenkinsfile with the following pipeline script. This is for 'Docker image'

pipeline {
    agent {
        docker {
            image 'maven:3-openjdk-8'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn -B -DskipTests clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml'
                }
            }
        }
        stage('Deliver') {
            steps {
                sh 'chmod +x deliver-script.sh'
                sh './deliver-script.sh'
            }
        }
    }
}
  • For 'native structured Jenkins Server'
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn -f hello-app/pom.xml -B -DskipTests clean package'
            }
            post {
                success {
                    echo "Now Archiving the Artifacts....."
                    archiveArtifacts artifacts: '**/*.jar'
                }
            }
        }
        stage('Test') {
            steps {
                sh 'mvn -f hello-app/pom.xml test'
            }
            post {
                always {
                    junit 'hello-app/target/surefire-reports/*.xml'
                }
            }
        }
    }
}
  • Commit and push the changes to the remote repo on GitHub.
git add .
git commit -m 'added jenkinsfile and maven project'
git push
  • Observe the new built triggered with git push command on the Jenkins project page.

  • Explain the role of the docker image of maven, Jenkinsfile and GitHub Webhook in this automation.

-jenkins-maven-project's People

Contributors

matmanpro avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.