一、安裝 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) 這樣就成功了

