Git--08 Jenkins
Jenkins
官网 https://jenkins.io
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,指在提供一个开放易用的软件平台,使软件的持续集成变成可能。
01. 安装准备
主机 | ip | 内存 | 硬盘 |
---|---|---|---|
Jenkins | 10.0.0.201 | 2G | 50G+ |
nexus | 10.0.0.202 | 2G | 50G+ |
02 .安装Jdk和Jenkins
#上传JDK和Jenkins安装包,使用rpm ‐ivh进行安装,安装完JDK运行Java测试是否安装成功
[root@jenkins ~]# ll
-rw-r--r-- 1 root root 170023183 2018-08-14 11:05 jdk-8u181-linux-x64.rpm
-rw-r--r-- 1 root root 74141787 2018-08-13 20:23 jenkins-2.99-1.1.noarch.rpm
[root@jenkins ~]# rpm -ivh jdk-8u181-linux-x64.rpm
warning: jdk-8u181-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03:
NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8-2000:1.8.0_181-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@jenkins ~]# rpm -ivh jenkins-2.99-1.1.noarch.rpm
warning: jenkins-2.99-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6:
NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jenkins-2.99-1.1 ################################# [100%]
03 .配置Jenkins
#启动用户修改为root
[root@jenkins ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
#启动
[root@jenkins ~]# systemctl start jenkins
#查看端口
[root@jenkins ~]# netstat -lntp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 8504/java
#查看进程
[root@jenkins ~]# ps aux |grep jenkins
root 8504 8.8 11.6 2618104 235556 ? Ssl 15:29 0:25 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
#访问页面进行配置
http://10.0.0.201:8080
#查看密码
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassworde8e69c5646cc4f3b88315fb20156ce6c
修改密码
04. 插件安装
插件安装(跳过安装插件,直接上传插件到目录)
1.自动安装可选插件
2.手动下载插件上传安装
3.插件放入插件目录
[root@jenkins ~]# cd /var/lib/jenkins/
[root@jenkins jenkins]# ll #jobs为每次构建后构建的结果目录,plugins为插件目录
总用量 36
‐rw‐‐‐‐‐‐‐ 1 root root 1822 8月 26 00:35 config.xml
‐rw‐‐‐‐‐‐‐ 1 root root 156 8月 26 00:31 hudson.model.UpdateCenter.xml
‐rw‐‐‐‐‐‐‐ 1 root root 1712 8月 26 00:32 identity.key.enc
‐rw‐‐‐‐‐‐‐ 1 root root 94 8月 26 00:32 jenkins.CLI.xml
‐rw‐r‐‐r‐‐ 1 root root 4 8月 26 00:35 jenkins.install.InstallUtil.lastExecVersion
‐rw‐r‐‐r‐‐ 1 root root 4 8月 26 00:35 jenkins.install.UpgradeWizard.state
drwxr‐xr‐x 2 root root 6 8月 26 00:31 jobs
drwxr‐xr‐x 3 root root 18 8月 26 00:32 logs
‐rw‐‐‐‐‐‐‐ 1 root root 907 8月 26 00:32 nodeMonitors.xml
drwxr‐xr‐x 2 root root 6 8月 26 00:32 nodes
drwxr‐xr‐x 2 root root 6 8月 26 00:31 plugins
‐rw‐‐‐‐‐‐‐ 1 root root 64 8月 26 00:31 secret.key
‐rw‐r‐‐r‐‐ 1 root root 0 8月 26 00:31 secret.key.not‐so‐secret
drwx‐‐‐‐‐‐ 4 root root 4096 8月 26 00:32 secrets
drwxr‐xr‐x 2 root root 23 8月 26 00:32 userContent
drwxr‐xr‐x 3 root root 18 8月 26 00:34 users
#上传插件包解压到plugins
[root@jenkins jenkins]# cd plugins/
[root@jenkins plugins]# ll
total 160580
-rw-r--r-- 1 root root 164431230 2018-08-14 21:00 plugins.tar.gz
[root@jenkins plugins]# tar xf plugins.tar.gz
[root@jenkins plugins]# rm -f plugins.tar.gz
[root@jenkins plugins]# mv plugins/* ./
[root@jenkins plugins]# rm -rf plugins/
#重启生效
[root@jenkins plugins]# systemctl restart jenkins
#4.jenkins主要的目录
/usr/lib/jenkins/: #jenkins安装目录,WAR包会放在这里
/etc/sysconfig/jenkins: #jenkins配置文件,"端口","JENKINS_HOME"等都可以在这里配置
/var/lib/jenkins/: #默认的JENKINS_HOME
/var/log/jenkins/jenkins.log: #Jenkins日志文件
05. 创建项目
进行构建
进入控制台
[root@jenkins plugins]# ll /var/lib/jenkins/workspace/freestyle-jobtotal 0
[root@jenkins plugins]# ll /var/lib/jenkins/workspace/freestyle-job
total 0
-rw-r--r-- 1 root root 0 2019-11-19 16:19 test.txt
06. Jenkins获取Git源代码
#这里我们有码云导入一个HTML页面的监控平台到gitlab仓库,打开码云,找到一个大转盘项目,将其代码路径进行复制
在Gitlab上面新创建一个项目仓库。将源代码导入进去。
dev用户端配置从git获取代码。
[root@dev ~]# git clone git@10.0.0.100:OPS/dzp.git
Cloning into 'dzp'...
remote: Counting objects: 19, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 19 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (19/19), 104.36 KiB | 0 bytes/s, done.
Resolving deltas: 100% (2/2), done.
[root@dev ~]# ll
drwxr-xr-x 6 root root 87 Nov 19 20:41 dzp
drwxr-xr-x 3 root root 52 Nov 17 17:21 git_test
[root@dev ~]# cd dzp/
[root@dev ~/dzp]# ll
total 8
drwxr-xr-x 2 root root 25 Nov 19 20:41 css
drwxr-xr-x 2 root root 84 Nov 19 20:41 img
drwxr-xr-x 2 root root 41 Nov 19 20:41 js
-rw-r--r-- 1 root root 2170 Nov 19 20:41 lottery.html
-rw-r--r-- 1 root root 113 Nov 19 20:41 README.md
#dev用户修改了源代码
[root@dev ~/dzp]# vim lottery.html
[root@dev ~/dzp]# git commit -am "modify html"
[master 1e2125e] modify html
1 file changed, 5 insertions(+), 5 deletions(-)
[root@dev ~/dzp]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 365 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@10.0.0.100:OPS/dzp.git
3935eb7..1e2125e master -> master
Branch master set up to track remote branch master from origin.
#Jenkins配置从Git获取代码,由于我们dev用户不是配置在Jenkins上,所以需认证即可下载代码。进行面认证方法,需要配置deploy key
[root@jenkins ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1z+H0mc9hUwOWiO3mFOGswuOW9jNr2bmOwRE50eECQU root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
| .E+o+o |
| .ooo |
| . = O . |
| . # B . |
| S.B o + .|
| = =.o o .o|
| o +.+ . =.=|
| o =. . =.|
| . =++. |
+----[SHA256]-----+
[root@jenkins ~]# cat .ssh/
id_rsa id_rsa.pub known_hosts
[root@jenkins ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCY3WrgTCmZeapjV9Tx6GmmHX+SVigxHnz37f8iUUjAexmR2/gSAjvsY3ez5iITmamf2I62+5n+gx9f1OPXUsUAzOApD6R8zHmvzQ/yheDO1y5XHcmRtklN1HpOq2g0PChrRjrr4QcXITKafU30OjTu4Fx3vndxqD/3RpHD3IVSZGAsiJC6T+C/PYW8YfeLNEAA7O3QKskjuSkoH2PZyF7qQgwjxfudno1g3qLQkmB+CjFFwgj0vkam/W4OwUwapC1O591CU7+VmSWL/z8uMTpSV+FQkyH04qS/HSs27pfpAI0wpBB/gBxx+wU8FCUh++2SWpuJR8/TPqkS8YKhfl+p root@jenkins #复制该串代码
#Jenkins配置从Git获取代码,配置好后保存
07. 立即构建获取源代码
#Jenkins服务器查看代码
[root@jenkins ~]# ll /var/lib/jenkins/workspace/freestyle-job/
total 8
drwxr-xr-x 2 root root 25 2019-11-19 21:12 css
drwxr-xr-x 2 root root 84 2019-11-19 21:12 img
drwxr-xr-x 2 root root 41 2019-11-19 21:12 js
-rw-r--r-- 1 root root 2205 2019-11-19 21:12 lottery.html
-rw-r--r-- 1 root root 113 2019-11-19 21:12 README.md
08.Jenkins代码推送到Web
#写一个脚本把从git仓库里获取的代码上传到web服务器站点目录下
[root@jenkins ~]# mkdir -p /server/script
[root@jenkins ~]# cd /server/script
[root@jenkins script]# vim deploy.sh
[root@jenkins script]# cat deploy.sh
#!/bin/sh
Date=$(date +%s)
Code_Dir=/var/lib/jenkins/workspace/freestyle-job
Web_Dir=/code
Ip=10.0.0.202
Code_Tar() {
cd $Code_Dir && tar zcf /opt/web_${Date}.tar.gz ./*
}
Scp_Code_Web() {
scp /opt/web_${Date}.tar.gz root@${Ip}:/opt
}
Code_Tar_Xf() {
ssh root@$Ip " cd /opt && mkdir web_$Date && tar xf web_${Date}.tar.gz -C web_$Date "
}
Ln_Html() {
ssh root@$Ip " rm -rf $Web_Dir && ln -s /opt/web_$Date /code "
}
Code_Tar;
Scp_Code_Web;
Code_Tar_Xf;
Ln_Html
#分发公钥
[root@jenkins script]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.202
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.202 (10.0.0.202)' can't be established.
ECDSA key fingerprint is SHA256:K8NapPzlTxhCMXC/bRFTtI9mdwr63FH4Wu7psrXXqBs.
ECDSA key fingerprint is MD5:73:9f:67:f1:5d:39:10:3d:b2:be:f7:c1:66:aa:00:6e.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.202's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@10.0.0.202'"and check to make sure that only the key(s) you wanted were added.
[root@jenkins script]# ssh root@10.0.0.202
Last login: Tue Nov 19 15:10:55 2019 from 10.0.0.1
[root@nexus ~]# logout
Connection to 10.0.0.202 closed.
Jenkins上面添加脚本进行构建
查看网站是否更新成功
09. 配置自动触发构建
#需要设置安全令牌Secret token
Gitlab上面操作
10. 测试是否触发
#dev用户修改源代码后进行推送测试是否自动触发
[root@dev ~/dzp]# vim lottery.html
[root@dev ~/dzp]# git commit -am "modify html test"
[master d8849aa] modify html test
1 file changed, 3 insertions(+), 3 deletions(-)
[root@dev ~/dzp]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 303 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@10.0.0.100:OPS/dzp.git
1e2125e..d8849aa master -> master
Branch master set up to track remote branch master from origin.
11. 返回构建状态
#Jenkins配置Jenkins返回构建状态到Gitlab
#先获得gitlab的token
将获得的token值进行复制备用
进行测试
添加构建后操作
检查结果
Git--08 Jenkins的更多相关文章
- [Git]08 如何自动补全命令
[Git]08如何自动补全命令 如果你用的是 Bash shell,可以试试看 Git 提供的自动完成脚本.下载 Git 的源代码,进入 contrib/completion 目录,会看到一个g ...
- Python接口测试实战5(上) - Git及Jenkins持续集成
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- gitlab & gerrit & git & repo & jenkins
Omnibus GitLab documentation(中文安装说明) 在自己的服务器上部署 GitLab 社区版->较为全面 GIT & REPO & GERRIT (三) ...
- Git + Maven + Jenkins 实现分布式部署
一.安装 和 准备工作 我们选择了用 Tomcat 服务器下 war 包的安装方式.Jenkins 的下载地址:http://mirrors.jenkins-ci.org/,打开链接后,表格有war列 ...
- 腾讯工蜂Git关联Jenkins Hooks
现在国内外Git平台非常多,最近维护的腾讯工蜂免费公网版本git.code.tencent.com,免注册(建议使用微信登录,舒服)即可使用私有仓库.对小型团队体验还不错,如果要关联Jenkins进行 ...
- Git和Jenkins日记之没有新提交代码
日期:2017/3/9 今天查看Jenkins运行代码记录的日志时,发现并没有昨天新提交的代码,然后查看了Jenkins的测试项目中所有的自动化测试用例, 并没有看到昨天新提交的测试用例,又查看了gi ...
- mac下git+maven+jenkins自动打包发布
随着springboot+springcloud(dubbo)越来越多人使用,流行的微服务的概念越来越深入人心.分布式部署越来越复杂,给手动发布带来很大工作量.为了方便前期测试和后期线上部署更新,可使 ...
- 使用Jenkins自动编译我的 java 项目 git maven jenkins
之前的项目已经将jenkins部署好,现在添加maven项目 准备工作 安装插件 Git plugin Publish Over SSH 全局设置 key: 是 linux服务器的私钥 Global ...
- 项目:git+gitlab+jenkins+ansible上线网站
项目需求 1. 在gitlab中创建一个项目 nginxinstall2. 编写playbook,实现一键部署nginx.部署一个静态测试页.测试部署结果要求: 部署nginx 端口:83 运行身份: ...
- 【转载】Maven安装配置+ GIt&SVN + Jenkins详细配置 软件项目管理 持续集成实验
原文地址: https://www.cnblogs.com/clownice/p/5395933.html 以下是学习笔记: Jenkins是一款开源持续集成的软件,实现集成的自动化 自动构建工具:M ...
随机推荐
- Centos7.5中的SElinux操作命令说明
设置Selinux模式 setenforce 0 0表示警告模式 1表示强制模式 关闭要设置/etc/sysconfig/selinux下将"SELINUX=enforcing"改 ...
- 【leetcode】1030. Matrix Cells in Distance Order
题目如下: We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), whe ...
- AndroidManifest.xml里加入不同package的component (Activity、Service里android:name里指定的值一般为句号加类名),可以通过指定完全类名(包名+类名)来解决
我们都知道对于多个Activity如果在同一个包中,在Mainfest中可以这样注册 <span style="font-size: small;"><?xml ...
- 英语单词character
来源——tr帮助说明 TR() User Commands TR() NAME tr - translate or delete characters SYNOPSIS tr [OPTION]... ...
- python线程池示例
使用with方式创建线程池,任务执行完毕之后,会自动关闭资源 , 否则就需要手动关闭线程池资源 import threading, time from concurrent.futures impo ...
- 阿里云E-HPC联合安世亚太、联科集团共建云超算生态
5月23日,2018云栖大会武汉峰会,阿里云高级技术专家刘峥和张维,对弹性计算最新上线的 serverless (无服务器化)计算技术Bazaar及基于该技术的容器服务产品 Severless Kub ...
- 图论 Algorithms
1) Dijkstra 基本思路:更新每个点到原点的最短路径:寻找最短路径点进行下一次循环:循环次数达到 n - 1 次说明每个点到原点的最短路已成,停止程序. 1 function Dijkstra ...
- spash和selenium浅析
Splash是什么: Splash是一个Javascript渲染服务.它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT.Twisted(Q ...
- jmeter(二十):Logic Controller:逻辑控制器(上)
逻辑控制器用来控制采样器(samplers)的执行顺序,根据实际需要定制执行规则.在控制器层级下面的所有的采样器都会当做一个整体,执行时也会一起被执行. Logic Controller种类: 以上L ...
- leetcode 141. 环形链表(C++)
给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 1: 输入: ...