jenkins2.0+pipeline体验笔记

来源:互联网 发布:x431pro3s软件下载app 编辑:程序博客网 时间:2024/06/14 16:58

早在两年前,记录过一篇hudson的部署项目的笔记。

采用hudson部署javaWeb项目

在实际的应用中,随着项目的增加才逐渐感觉到通过之前的界面方式,通过一步步的配置去完成项目的自动部署是多么麻烦的事情。

特别是对于采用maven的聚合工程来管理的项目,在配置时就显得更为复杂繁琐了。当修改某一配置变化时,(如所需要部署的服务器IP变化)需要配过配置一个一个的进行配置,繁琐这点显得尤为突出。

我想hudson(jenkins)的作者应该也想到了这一点,为了解决这一问题,在jenkins2.0中,他们就推出了pipeline的功能,可以让开发者通过groovy部署脚本来完成项目的整个部署。在使用了几次后,感觉确实挺方便的。

环境:

linux ubuntu


以下是我的体验时的主要步聚:

安装jenkins

设置国内阿里云源地址

 vim /etc/apt/sources.list

#deb包deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse  deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse  deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse  deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  ##测试版源  deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse  # 源码  deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse  deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse  deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse  deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  ##测试版源  deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse  # Canonical 合作伙伴和附加  deb http://archive.canonical.com/ubuntu/ xenial partner  deb http://extras.ubuntu.com/ubuntu/ xenial main  

再:sudo apt-get update

安装jenkins

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'sudo apt-get updatesudo apt-get install jenkins

此操作会在系统上创建一个名为jenkins的用户

执行完成后,netstat -antp一下,看是否jenkins的默认8080端口是否启动起来了



简单配置

输入管理员密码:


root@ubuntu:~# cat /var/lib/jenkins/secrets/initialAdminPassword7a5d5156d27c430985a55f6a71e47de7root@ubuntu:~# 

配好后,出现了如下问题:

提示:This Jenkins instance appears to be offline.

root@ubuntu:~#  find / -name "hudson.model.UpdateCenter.xml"find: 鈥run/user/1000/gvfs鈥 Permission denied/var/lib/jenkins/hudson.model.UpdateCenter.xmlroot@ubuntu:~# vim /var/lib/jenkins/hudson.model.UpdateCenter.xml<?xml version='1.0' encoding='UTF-8'?><sites>  <site>    <id>default</id>    <url>http://updates.jenkins.io/update-center.json</url>  </site></sites>

先找到配置,再将https的修改为http

再重启:

 service jenkins restart

 

让输入密码,但我还没有设置密码

于是只能找重置的办法了

admin密码重置

先找到jenkins的配置文件

仍然是find一把

root@ubuntu:/# find / -name "jenkins"/run/jenkinsfind: ‘/run/user/1000/gvfs’: Permission denied/etc/logrotate.d/jenkins/etc/default/jenkins/etc/init.d/jenkins/var/lib/jenkins/var/cache/jenkins/var/log/jenkins/usr/share/jenkins

从结果中,看到了/etc/default/jenkins

这个文件为jenkins的默认配置文件,于是打开看一下吧

# defaults for Jenkins automation server# pulled in from the init script; makes things easier.NAME=jenkins# location of javaJAVA=/usr/bin/java# arguments to pass to java# Allow graphs etc. to work even when an X server is presentJAVA_ARGS="-Djava.awt.headless=true"#JAVA_ARGS="-Xmx256m"# make jenkins listen on IPv4 address#JAVA_ARGS="-Djava.net.preferIPv4Stack=true"PIDFILE=/var/run/$NAME/$NAME.pid# user and group to be invoked as (default to jenkins)JENKINS_USER=$NAMEJENKINS_GROUP=$NAME# location of the jenkins war fileJENKINS_WAR=/usr/share/$NAME/$NAME.war# jenkins home locationJENKINS_HOME=/var/lib/$NAME# set this to false if you don't want Jenkins to run by itself# in this set up, you are expected to provide a servlet container# to host jenkins.RUN_STANDALONE=true# log location.  this may be a syslog facility.priorityJENKINS_LOG=/var/log/$NAME/$NAME.log#JENKINS_LOG=daemon.info# OS LIMITS SETUP#   comment this out to observe /etc/security/limits.conf#   this is on by default because http://github.com/jenkinsci/jenkins/commit/2fb288474e980d0e7ff9c4a3b768874835a3e92e#   reported that Ubuntu's PAM configuration doesn't include pam_limits.so, and as a result the # of file#   descriptors are forced to 1024 regardless of /etc/security/limits.confMAXOPENFILES=8192# set the umask to control permission bits of files that Jenkins creates.#   027 makes files read-only for group and inaccessible for others, which some security sensitive users#   might consider benefitial, especially if Jenkins runs in a box that's used for multiple purposes.#   Beware that 027 permission would interfere with sudo scripts that run on the master (JENKINS-25065.)##   Note also that the particularly sensitive part of $JENKINS_HOME (such as credentials) are always#   written without 'others' access. So the umask values only affect job configuration, build records,#   that sort of things.##   If commented out, the value from the OS is inherited,  which is normally 022 (as of Ubuntu 12.04,#   by default umask comes from pam_umask(8) and /etc/login.defs# UMASK=027# port for HTTP connector (default 8080; disable with -1)HTTP_PORT=8080# servlet context, important if you want to use apache proxying

由此可得知道,jenkins的目录为/var/lib/jenkins

找到admin的目录:

/var/lib/jenkins/users/admin

找到<passwordHash>节点的内容(图中黑色的那一串)换成#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS

换为111111

再次重启,后登录, admin 111111

之后找到【系统设置】,进入【插件安装】

安装一些必要的插件,pipline和maven

待插件安装完成

 部署项目

创建pipline项目



选择pipline(流水线)

我这里创建了一个GITHUB上的项目,JAVA_ONLINE_IDE https://github.com/puhaiyang/onlineJavaIde



再选择Pipeline Syntax,因为我对pipline的语法不熟悉,就用它来生成

 

在piplineSyntax中选择克隆代码,先把代码down下来,输入git的地址,再点击生成按钮即可



生成后,代码拷贝到pipline 代码框中,为了查看下是否成功了,保存后,点击立即构建

如构建成功,则会将代码down到jenkins的workspace目录下

如我这里的此目录下:/var/lib/jenkins/workspace/JAVA_ONLINE_IDE




我测试时的脚本代码如下:

https://github.com/puhaiyang/onlineJavaIde/blob/master/deploy/DeployToAliyun.groovy


/** * @author: haiyangp * @date: 2017/12/17 * desc: 将项目部署到阿里云服务器脚本 */node {    def HOST_PWD = "your_host_password,eg:123456"    def HOST_USERNAME = "your_host_user,eg:root"    def HOST_NAME = "your_host_name,eg:192.168.1.103"    stage('get clone') {        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/puhaiyang/onlineJavaIde.git']]])    }    stage('mvn test') {        withMaven(maven: 'M3') {            sh "mvn test"        }    }    stage('mvn install') {        withMaven(maven: 'M3') {            sh "mvn install"        }    }    stage('depoly') {        sh 'sshpass -p  ' + HOST_PWD + ' ssh  -o StrictHostKeyChecking=no ' + HOST_USERNAME + '@' + HOST_NAME + ' ls'        sh 'sshpass -p  ' + HOST_PWD + ' scp  -o StrictHostKeyChecking=no  target/*.jar ' + HOST_USERNAME + '@' + HOST_NAME + ':.'        echo 'haha'    }    //    -p:指定ssh的密码    //    -o StrictHostKeyChecking=no 避免第一次登录出现公钥检查。也就是避免出现    stage('restart') {        timeout(time: 1, unit: 'DAYS') {            input message: 'Approve deployment?', submitter: 'it-ops'        }    }}


其中,有很多功能都是之前的jenkins版本无法完成的功能。如input功能,提示一个消息出来,再通过submitter指定这个提示的消息框只允许哪些用户可以点击



原创粉丝点击