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' } }}
- jenkins2.0+pipeline体验笔记
- 初试Jenkins2.0 Pipeline持续集成
- 初试Jenkins2.0 Pipeline持续集成
- Jenkins2.71实战笔记
- jenkins2 pipeline下的php项目搭建部署
- Jenkins2插件Pipeline实现持续交付(CD)解决方案
- 浅析Jenkins2.0
- Spark ML PipeLine学习笔记
- Tensorflow 学习笔记:Input Pipeline
- Pipeline
- PIpeline
- pipeline
- Pipeline
- redis学习笔记五之pipeline
- redis学习笔记五之pipeline
- 五 redis学习笔记之pipeline
- Scrapy笔记(6)- Item Pipeline
- sklearn学习笔记3——pipeline
- 计算机发展史
- 正则化方法 (一)
- go语言并发编程
- [Leetcode] 560. Subarray Sum Equals K 解题报告
- 第29届IEEE IV 征稿启示
- jenkins2.0+pipeline体验笔记
- Linux 进阶笔记(二)
- Poj-1222-EXTENDED LIGHTS OUT-枚举
- 图像的小波变换(二)
- python-快速使用urllib爬取网页(5-POST)
- 【O'Reilly Data Show】机器学习将如何加速数据管理系统
- PAT训练(乙级)—— 1027. 打印沙漏(20)
- KindEditor实现多图片上传
- 南邮CTF逆向题第四道WxyVM解题思路