Jenkins pipeline + docker + maven 打包SpringBoot項目


一、安裝 Jenkins

    使用 Docker 方式安裝 jenkins,命令如下:

docker run -u root --name my-jenkins -d -p 8184:8080 -p 50000:50000 -v /home/jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v ~/.ssh:/root/.ssh  -t jenkins/jenkins

    -p 映射jenkins的端口: 宿主機端口:容器端口

         Jenkins 訪問的端口號是8080 映射成8184,可自定義成其他端口,訪問的話訪問的是映射的端口。另外還需要暴露一個tcp的端口號50000。

    -v 映射的是存儲路徑: 宿主機路徑:容器路徑

        其中我映射了四個路徑,

            第一個 映射的事jenkins的本地映射路徑

            第二個和第三個是 Docker的操作路徑,因為之后 jenkins pipeline 里面需要用到 docker 命令,所以我把宿主機里面的docker映射到了容器中

            第四個是 github 的 SSH Key 路徑,因為 jenkins 在 github 中拉取代碼這里需要用到 SSH證書,因此我把宿主機的 SSH Key 映射進了容器里使用

    -t 這個就是jenkins的image

 

二、創建 pipline

    Jenkins初始化的步驟 不詳細介紹,直接從創建 pipeline 開始。

    1、Jenkinsfile

        Jenkinsfile:

 

import java.text.SimpleDateFormat

def dateFormat = new SimpleDateFormat("yyyyMMddHHmm")
// 
def DOCKER_TAG = dateFormat.format(new Date())


pipeline {
    agent any

    environment {
        DOCKER_URL='換成自己Docker的地址'
        DOCKER_NAMESPACE='換成自己Docker的NameSpace'
        DOCKER_NAME='換成自己的Docker Name'
        ENV='test'
    }

    stages {
        stage('git pull'){
            steps {
                sh 'pwd'
                git credentialsId: ' 這里是github的證書,在Jenkins系統設置后的憑據中配置,生成的一串碼 ', url: ' github地址 '
            }
        }
        stage('mvn install') {
            steps {
                script {
                    try {
                        sh 'pwd'
                        docker.image('maven:3.6.0-jdk-8-alpine').inside('-v /volume1/docker/.m2:/root/.m2') {
                            sh 'mvn --version'
                            sh 'mvn clean install'
                        }
                        currentBuild.result="SUCCESS"
                    } catch (e) {
                        currentBuild.result="FAILURE"
                        throw e
                    } finally {
                    }
                }
            }
        }
        stage('docker run') {
            steps {
                script {
                    sh 'pwd'
                    def imageUrl = "${DOCKER_URL}/${DOCKER_NAMESPACE}/${DOCKER_NAME}:${DOCKER_TAG}"
                    def customImage = docker.build(imageUrl)
                    sh "docker rm -f ${DOCKER_NAME} | true"
                    customImage.run("-it -d --name ${DOCKER_NAME} -p 8189:8001 -e SPRING_PROFILES_ACTIVE=${env}")
                    //only retain last 3 images,自動刪除老的容器,只保留最近3個
                    sh """docker rmi \$(docker images | grep ${DOCKER_NAME} | sed -n  '4,\$p' | awk '{print \$3}') || true"""
                }
            }
        }
    }
}

 

                

 

       pipeline 里面的 credentialsId 是需要配置的,在 Jenkins -> 憑據 -> 系統 ->全局憑據 (unrestricted) 目錄下 添加憑據 

                   

 

       點擊 確定 之后

                   

 

       還有一個前提就是Dockerfile,要放在SpringBoot項目的根路徑下,這樣jenkins在maven打包之后可以執行 Dockerfile文件來進行build image。

       把這個添加到 pipeline里面就可以。 其他我應該都沒配置,點擊構建就可以手動的跑起來了。這篇文章的主要目的就是分享一下 Pipelinefile 的內容,如果有什么細節我缺少了,請多多指教。

 

    2、github 自動觸發

       構建成功的話,下面可以配置一下個 github 的自動觸發功能。

       (1) github 配置

           github  Setting -> Developer settings -> personal access tockers

            

 

        

       (2) 回到 jenkins 項目里面

            我們需要選擇 Generic Webhook Trigger 並在下面填寫一下 tocken 這個 tocker 可自定義,然后下面會給出一些提示的 url。

            

 

            保存配置之后,我們按照它提示的url,在 github 的項目 setting 里面 配置 Webhooks . 如圖

            這是提示的內容

            

 

            這是 github 的 Webhooks

            

 

 

      (3) 這樣就成功了 

           

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM