JenkinsPipeline是一套插件践叠,支持將連續(xù)輸送Pipeline實施和整合到Jenkins蟹漓。Pipeline提供了一組可擴展的工具即寒,用于通過PipelineDSL為代碼創(chuàng)建簡單到復(fù)雜的傳送Pipeline家肯。 對于單個項目來說菱属,使用這樣的Pipeline來構(gòu)建能夠滿足絕大部分需求肛宋,但是這樣做也有很多缺陷,包括:
多個項目的Pipeline打包腳本不能公用榨馁,導(dǎo)致一個項目寫一份腳本憨栽,維護比較麻煩。
Jenkins提供了一個更優(yōu)雅的管理Pipeline腳本的方式翼虫,在配置項目Pipeline的時候屑柔,選擇Pipeline script from SCM。
這樣珍剑,Jenkins在啟動job的時候掸宛,首先會去倉庫里面拉取腳本,然后再運行這個腳本招拙。在腳本里面旁涤,我們規(guī)定的構(gòu)建方式和流程翔曲,就會按部就班地執(zhí)行。
接下來我們來實踐下劈愚。
一瞳遍、Jenkins安裝插件
? 系統(tǒng)管理--->管理插件--->可選插件--->搜索pipeline--->點擊直接安裝
? 系統(tǒng)管理--->管理插件--->可選插件--->搜索extended choice parameter---->點擊直接安裝
二、Jenkins安裝插件
新建一個Pipline的Item后菌羽,配置選項卡掠械,Pipeline里配置,在下面script path寫入你工程下的Jeckinsfile的名稱注祖。
Jenkinsfile文件大概如下:
檢出代碼-》編繹-》打包并推送倉庫-》發(fā)布部署
stage '審核'
node {
stage('檢出代碼'){
git branch: 'master',url:'http://10.20.16.3/ruancanghui/springbootdemo.git'
}
stage('Maven編繹'){
dir('./'){
sh 'mvn clean install -DskipTests=ture'
}
}
stage('推送倉庫'){
dir('./'){
sh? '/root/docker_dir/step1.sh'
}
}
stage('發(fā)布部署'){
dir('./'){
sh? '/root/docker_dir/step2.sh'
}
}
}
兩個腳本:
step1.sh:將打包的應(yīng)用推送到私有倉庫里
#!/bin/sh
jarName=spring-boot-demo-0.0.1-SNAPSHOT.jar
jarFolder=ph
projectName=ph
docker_path=${WORKSPACE}
echo jar path is "${WORKSPACE}\/target\/${jarName}"
cp ${WORKSPACE}/target/${jarName} ${docker_path}
sh /root/docker_dir/deploy_docker.sh ${projectName} ${docker_path} ${jarName}
setp2.sh:遠程執(zhí)行swarm的命令猾蒂,運行程序。
set -e
echo ok
#ssh 10.20.17.217 'docker service rm wordpress_web'
ssh 10.20.17.217 'docker stack deploy wordpress --compose-file=/root/docker-compose.yml'?
docker-compose.yml:-》拉取遠程最新的鏡像是晨,映射到8888的端口
version: "3"
services:
? web:
? ? # replace username/repo:tag with your name and image details
? ? image: 10.20.17.180:5000/ph:latest
? ? deploy:
? ? ? replicas: 2
? ? ? resources:
? ? ? ? limits:
? ? ? ? ? cpus: "0.1"
? ? ? ? ? memory: 50M
? ? ? restart_policy:
? ? ? ? condition: on-failure
? ? ports:
? ? ? - "8888:8888"
? ? networks:
? ? ? - webnet
networks:
? webnet:
Dockerfile里的配置:
FROM registry-scu.cloudtogo.cn/ubuntu:jdk
COPY target/spring-boot-demo-0.0.1-SNAPSHOT.jar /spring-boot-demo-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java" , "-jar" , "/spring-boot-demo-0.0.1-SNAPSHOT.jar"]
現(xiàn)在可以執(zhí)行點擊:自己就會發(fā)布了肚菠。