Jenkins2.0中pipeline插件在项目中的使用

jenkins2.0的一些新概念:

采用了groovy脚本语言,jenkins工具有自带shell转换groovy的工具,很方便。

  1. step,其实跟jenkins1中的概念一样, 是jenkins里job中的最小单位,可以认为是一个脚本的调用和一个插件的调用。
  2. node, 是pipleline里groovy的一个概念,node可以给定参数用来选择agent,node里的steps将会运行在node选择的agent 上。这里与jenkins1的区别是, job里可以有多个node,将job的steps按照需求运行在不同的机器上。例如一个job里有好几个测试集合需要同时运行在不同的机器上。
  3. stage,是pipeline里groovy里引入的一个虚拟的概念,是一些step的集合,通过stage我们可以将job的所有steps划分为不 同的stage,使得整个job像管道一样更容易维护。pipleline还有针对stage改进过的view,使得监控更清楚。

参考:

https://github.com/jenkinsci/pipeline-examples.git

https://github.com/docker/jenkins-pipeline-scripts.git

https://github.com/fabric8io/jenkins-pipeline-library.git

       经验之谈,jenkins2.0以前在构建多个项目时,脚本可以是一套脚本,环境变量不同设置而已,但2.0可以给我们带来脚本化配置环境,随用随取,避免了手动发布的错误产生,应了那句话一切让脚本自动化的完成你琐碎重复性的工作。开始本人以为jenkins必须在容器里运行,有资料讲述如何docker in docker,会误导人讲jenkins作为容器使用,也不是不可以这么做,但你一定要作为容器运行,在持续构建其它项目时候,共享目录必须要规划好,你还要操作其它容器中的文件或路径,在没有非常精炼的情况下,建议大家把jenkins2.0部署在1台或多个宿主机上,本人是做测试的,公司没有运维人员,所做项目发布后进行测试,环境问题太多,影响了测试效率,不能够立即进行。如何做,怎么做,怎么做的前无古人后无来者,前期一定要想好规划好,让后续工作变得简单化。比如:公司有多个项目Java项目、PHP项目、C项目,再具体一些,Java项目环境jdk要求1.6、1.7、1.8,tomcat还有版本要求。那么我们首先规划好要使用的服务器,1台做docker公司私服,1台做jenkins宿主机,下来就是打造自己的公用容器环境、特定容器,我们要分开什么环境就是干什么的,专门用来做什么,编译就专门用一个环境编译,编译后的产出物存放在某个文件服务器中,编译环境要准备好,运行环境可复用编译环境镜像,根据预先定义的随即使用。那么我通过jenkins做了第一个编译环境,名叫“BUILD_JDK_ENV”具体文件内容准备如下:

Dockerfile文件准备:

vi /root/.jenkins/workspace/test_offlinesale/Dockerfile

FROM centos:latest

MAINTAINER lichengyuan

ENV JAVA_HOME /usr/lib/java/jdk1.8.0_91

ENV MAVEN_HOME /usr/local/apache-maven-3.3.9

ENV PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:$JAVA_HOME/bin:$MAVEN_HOME/bin

RUN yum install -y glibc-common subversion

RUN mkdir -p /usr/lib/java/jdk1.8.0_91

ADD jdk1.8.0_91 /usr/lib/java/jdk1.8.0_91

RUN chmod -R 777 /usr/lib/java/jdk1.8.0_91/bin

RUN mkdir -p /usr/local/apache-tomcat-8.0.36

RUN mkdir -p /usr/local/apache-maven-3.3.9

ADD apache-tomcat-8.0.36 /usr/local/apache-tomcat-8.0.36

RUN chmod -R 777 /usr/local/apache-tomcat-8.0.36/bin

ADD apache-maven-3.3.9 /usr/local/apache-maven-3.3.9

RUN chmod -R 777 $MAVEN_HOME/bin

RUN mvn --help

#RUN mkdir -p /root/.m2/

ADD settings.xml /root/.m2/

RUN svn --help

RUN echo "store-plaintext-passwords = yes" >> /root/.subversion/servers

#ADD run.sh /run.sh

#RUN chmod 777 /run.sh

EXPOSE 8080

CMD ["/bin/bash", "-c", "/usr/local/apache-tomcat-8.0.36/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.36/logs/catalina.out"]

JENKINS2.0 pipeline内容

env.BUILD_IMAGE_CORE = "test_offlinesale"

env.REPO_SNAPSHOT = "127.0.0.1:5000"


node {

stage 'Check Out'

//sh 'rm -rf /root/.jenkins/workspace/OPERATION_CENTER/operation-center*'

sh 'svn co http://10.167.7.203/svn/mahua/Code/offlineSale --username lichengyuan --password 123456'

sh 'sed -i "s/localhost:33061/10.167.7.201:33061/g" ~/.jenkins/workspace/${JOB_NAME}/offlineSale/offlineSale-web/src/main/resources/properties/application.properties'

stage('Build APP') {

docker.image('jdk8:latest').inside('-v /home/uftp:/home/uftp -v /root/.m2/repository:/root/.m2/repository') {

sh 'cd $JENKINS_HOME/workspace/${JOB_NAME}/offlineSale && mvn clean package -Dmaven.test.skip=true'

}

}

stage('Prepara Release'){

sh 'rm -rf ./*.war'

sh 'cp -r -f $JENKINS_HOME/workspace/${JOB_NAME}/offlineSale/offlineSale-web/target/offlineSale.war ./'

sh 'pwd && ls ./'

}

stage('Build Docker Image'){

docker.build '$BUILD_IMAGE_CORE:$BUILD_NUMBER'

}

// stage('Publish Docker Image'){

// sh 'docker tag $BUILD_IMAGE_CORE:$BUILD_NUMBER $REPO_SNAPSHOT/$BUILD_IMAGE_CORE:$BUILD_NUMBER'

// sh 'docker push $REPO_SNAPSHOT/$BUILD_IMAGE_CORE:$BUILD_NUMBER'

// }

stage('Deploy Image'){

//sh 'docker pull $REPO_SNAPSHOT/$BUILD_IMAGE_CORE:$BUILD_NUMBER'

sh 'docker rm -f `docker ps -a | grep tomcat_8082 | grep -v grep |awk \'{print \\$1}\'`'

//sh 'docker run -d -p 8082:8080 --restart=always --name tomcat_8082 $REPO_SNAPSHOT/$BUILD_IMAGE_CORE:$BUILD_NUMBER'

sh 'docker run -d -p 8082:8080 --restart=always --name tomcat_8082 $BUILD_IMAGE_CORE:$BUILD_NUMBER'

}

}

运行jobs

152028_nC48_2436189.png

转载于:https://my.oschina.net/jimmylee216/blog/827155

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值