java 持续交付_【Java架构:持续交付】一篇文章搞掂:Jenkins

1.1、使用yum安装JDK

a、检查系统是否有安装open-jdk

rpm -qa |grep java

rpm -qa |grep jdk

rpm -qa |grep gcj

如果没有输入信息表示没有安装。

如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件  这句命令的关键字是java

b、检索yum中包含java的列表

yum list java*

c、检索1.8的列表

yum list java-1.8*

d、安装1.8

安装1.8.0的所有文件:

yum install java-1.8.0-openjdk* -y

或只安装部分

yum  install  java-1.8.0-openjdk   java-1.8.0-openjdk-devel      安装JDK,如果没有java-1.8.0-openjdk-devel就没有javac命令

e、使用命令检查是否安装成功

java -version

1.2、使用yum安装jenkins

yum list jenkins* 此时查不出jenkins包

将jenkins库加入到yum库中

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

此时可以查到jenkins包了

yum list jenkins*

查看历史版本

yum list --showduplicate jenkins*

安装最新版本

yum install -y jenkins

安装指定版本

yum install jenkins 2.150.3-1.1

查看jenkins安装地址

00b2dabd88c2eb7b54fe94ea18689e9a.png

jenkins相关目录释义:

/usr/lib/jenkins/:jenkins安装目录,war包会放在这里。

/etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。

/var/lib/jenkins/:默认的JENKINS_HOME。

/var/log/jenkins/jenkins.log:jenkins日志文件。

修改Jenkins端口

vim /etc/sysconfig/jenkins

按I开始编辑

ESC->:->wq->回车 保存

q无修改退出

q!不保存退出

!强制退出

启动Jenkins

查看端口占用情况

netstat -ntlp

创建为服务

service jenkins start/stop/restart

安装成功后Jenkins将作为一个守护进程随系统启动

系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者

启动的时候将从/etc/sysconfig/jenkins获取配置参数

默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置

Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo

查看服务启动情况:service --status-all

查看运行日志:tail /var/log/jenkins/jenkins.log -n 100

直接启动

使用这种方式,端口配置无效,需要手动给配置参数

java -jar /usr/lib/jenkins/jenkins.war --ajp13Port=-1 --httpPort=8899

ajp13Port:

$ AJP_PORT运行在使用标准端口$ AJP_PORTjenkins监听AJP13协议。默认端口号为8009。要禁用(因为你使用的是HTTPS),使用端口-1。

2、使用Docker安装(暂略)

2、Jenkins的使用

2.1、初始化

初次进入需要输入密码,在提示的路径中可以获取到

b9a3d147cccaedee34a0e734d44d7f41.png

安装插件

选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。

安装失败也没有关系,会有一个重新安装的按钮,好像重装1次就行了,即使不行,可以进入系统后再安装。

e18cda4ca380867049fb054382cbbb7b.png

7d53e4f67b3a19c464356f7a7ec8b514.png

创建用户

af97e53995d253f7a420d9dba580c17b.png

进入主界面

0309bf6ca8dd471791f5e1e39d059a9a.png

配置Jenkins

c2caa9bb51b09fd2ffba13200a608c4b.png

332b5b7eda1ee832d699ad160a8c33a2.png

配置工具

41d9a7b8e955766b87afb90209ce057d.png

2abd670f204c78d52c50ae9078cbb851.png

2.2、创建项目

创建一个项目

08ec95f6383ea668f8e3c7b350ee84ae.png

8bd55dfd89f3d1ce66bad863a4eee330.png

配置代码SVN地址

ffc5bd4135edbd0a3f09132687529f6a.png 

c8134965b12ceec129975420b6eee382.png

创建Maven构建步骤

f982800ef105ed1a654538dd0177555d.png 

6dc3e466060cfc000568766ef3a2f5fb.png

84cb66e7ddd5edbcfe8d2456e46f6736.png

即可看到构建结果

实例:

在Jenkins中创建构造shell脚本执行项目时,运行docker语句,报错

错误信息:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/lt-spring-cloud_zuul_1/stop: dial unix /var/run/docker.sock: connect: permission denied

Build step 'Execute shell' marked build as failure

如下处理:

将jenkins用户加入docker组

重启Jenkins服务

sudo gpasswd -a jenkins docker

sudo service jenkins restart

自动安装的maven本地仓库地址:/var/lib/jenkins/.m2/repository

注意.m2是隐藏文件夹,需要ls -a才能看到

启动失败,设置了端口为1001,java -jar可以启动,但是service不能启动

查看日志/var/log/jenkins/jenkins.log

tail /var/log/jenkins/jenkins.log -n 100

发现jetty启动的时候,提示没有权限

原因是非root用户,不能使用1024以下的端口

最后改成2001就可以访问了

运行Shell报错:command not found

执行脚本,提示

docker-compose: command not found

原因是没有设置环境变量

1、控制台执行 echo $PATH

6fb9ee2b7d1df2458b57cfe140e33314.png

把输出的这句话复制

2、jenkins->系统管理->系统设置

24a4c3ccf12f400962cef53de50e95e8.png

勾选Environment variables,添加键值,键:PATH,值:刚才复制的那句话

4f6412cfa462b708a1b8b49c17a98d9b.png

OK了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抱歉,请不要把 “业务逻辑层” 理解为 “业务中台”

这是头哥侃码的第197篇原创在IAS2019中台架构峰会上,我曾与一位年轻帅气的技术小伙来了一番有趣的对话。因为和朋友有约,所以我在现场互动结束之后,就急匆匆地跟其他嘉宾打了声招呼,抱着笔记本冲出了会场。但没想到刚到电梯口&…

C++异常处理分析

C异常处理基本语法: 代码如下: #include <iostream> using namespace std;int divide(int x, int y) {if (y 0) throw y;return x / y; }void test01() {//试着去捕获异常try{divide(10, 0);}/*catch (int){cout << "除数为0!" << endl;} */catc…

java文件损坏_java – 损坏的文件处理

我想知道如果任何人有任何建议处理损坏的文件与Apache POI我试图打开一个文件&#xff0c;并收到此消息&#xff1a;Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x1C left 2 bytes …

Harmonic Number (II) LightOJ - 1245(找规律?大数f(n)=n/1+n/2+n/3+......+n/n)

题意&#xff1a;让我们求f&#xff08;n&#xff09;n/1n/2n/3......n/n&#xff1b;同时注意n/i取整&#xff1b; 思路&#xff1a;首先我们先看数据的范围&#xff0c;n (1 ≤ n < 2 31)&#xff0c;数据范围太大&#xff0c;如果我们按 照题目中的代码直接暴力肯定超时…

陌陌的 Service Mesh 探索与实践

Service Mesh Virtual Meetup 是 ServiceMesher 社区和 CNCF 联合主办的线上系列直播。本期为 Service Mesh Virtual Meetup#1 &#xff0c;邀请了四位来自不同公司的嘉宾&#xff0c;从不同角度展开了 Service Mesh 的应用实践分享&#xff0c;分享涵盖来自陌陌和百度的 Servi…

C标准输入流

标准输入流对象cin&#xff0c;重点掌握的函数: cin.get()//一次只能读取一个字符 cin.get(一次参数)//读一个字符 cin.get(两个字符)//可以读字符串 cin.getline() cin.ignore() cin.peek() cin.putback() 标准输入流cin.get() 代码如下: #include <iostream> using n…

Harmonic Number(欧拉公式或技巧打表)LightOJ - 1234(求调和级数的和)

题意&#xff1a;求f(n)1/11/21/31/4…1/n (1 ≤ n ≤ 108).&#xff0c;精确到10-8 (原题在文末&#xff09; 知识点&#xff1a;调和级数(即f(n))至今没有一个完全正确的公式&#xff0c;但欧拉给出过一个近似公式&#xff1a;(n很大时) f(n)≈ln(n)C1/2*n 欧拉常数值&…

教你配置windows上的windbg,linux上的lldb,打入clr内部这一篇就够了

一&#xff1a;背景1. 讲故事前几天公众号里有位兄弟看了几篇文章之后&#xff0c;也准备用windbg试试看&#xff0c;结果这一配就花了好几天&#xff0c;(づ╥﹏╥)づ&#xff0c;我想也有很多跃跃欲试的朋友在配置的时候肯定会遇到这样和那样的问题&#xff0c;所以我觉得有必…

vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子

vuelayui实现select动态加载后台数据的例子发布时间&#xff1a;2020-09-18 22:51:36来源&#xff1a;脚本之家阅读&#xff1a;85作者&#xff1a;qq_26814945刚开始由于layui form渲染与vue渲染有时间差 有时会导致 select里面是空白的后来就想办法 等vue数据渲染完 再渲染la…

Rochambeau POJ - 2912 (枚举和加权并查集+路径压缩)找唯一裁判

题意&#xff1a;有n个人玩石头剪刀布&#xff0c;有且只有一个裁判。除了裁判每个人的出拳形式都是一样的。 a<b表示b打败a&#xff0c;ab表示a和b出拳一样&#xff0c;平手。a>b表示a打败b。 给出m个回合的游戏结果&#xff0c;问能否判断出谁是裁判&#xff1f;如果能…

C标准输出流

标准输入流对象cin&#xff0c;重点掌握的函数: cout.flush()//刷新缓冲区 cout.put()//向缓冲区写字符 cout.write()//二进制流的输出 cout.width()//输出格式控制 cout.fill() cout.set(标记) cout.flush() 代码如下: #include <iostream> using namespace std;void…

Autofac在.NET Core 中的使用

前言Autofac 是一款.NET IoC 容器 . 它管理类之间的依赖关系, 从而使应用在规模及复杂性增长的情况下依然可以轻易地修改 。.NET CORE 中也内置了依赖注入&#xff0c;但是有些情况下需要用到Autofac去进行依赖注入&#xff0c;Autofac支持的所有注入方式以外&#xff0c;还支持…

Aladdin and the Flying Carpet (素数打表+正整数的唯一分解定理,找因数对)

题目大意&#xff1a;给两个数a&#xff0c;b&#xff0c;求满足c*da且c>b且d>b的c,d二元组对数&#xff0c;(c,d)和(d,c)属于同一种情况 题目分析&#xff1a;根据唯一分解定理先将a唯一分解&#xff0c;则a的所有正约数的个数为ans (1 a1) * (1 a2) *...(1 an) 因为…

C++文本文件操作和二进制文件读写

文本文件操作: 代码如下: #include <iostream> #include <fstream> using namespace std;void test01() {const char *fileName "C:\\Users\\Tom\\Desktop\\hhh.txt";//ifstream ism(fileName, ios::in);//只读方式打开文件ifstream ism;ism.open(file…

java类结构工具_java类层次结构图工具

Java主类结构_计算机软件及应用_IT/计算机_专业资料。Java主类结构 谢谢大家! Java主类结构 谢谢大家! 申请认证 文档贡献者 胸兢谙韶硛蠌 中西医 59981 ......知识结构类思维导图模板:java知识结构。{"code":&...所有这些都遵从 Spring 的通用事务和 DAO 异常层…

详解.NET Core 依赖注入生命周期

前言.NET Core 自带依赖注入框架&#xff0c;支持三种不同生命周期的注入模式&#xff1a;Singleton 单例模式Scoped 区域模式Transient 瞬时模式但是常常不知道什么时候使用哪种模式才最合适&#xff0c;接下来我就用代码详细解读一下三种模式代码示例首先新建.NET Core API…

[C++STL]string容器用法介绍

string构造函数 代码如下: #include <iostream> #include <string> using namespace std;void test01() {string s1;cout << "s1 " << s1 << endl;const char *str "hello world";string s2(str);cout << "s2…

LightOJ-1220 Mysterious Bacteria (素数打表+欧几里得算法+唯一分解定理)给出x,求x=a^p,最大的指数

题目大意&#xff1a; x b^p, x只有一个因子的p次幂构成 如果24 2^3*3^1&#xff0c;p应该是gcd(3, 1) 1,即24 24^1 324 3^4*2^2(3^2*2)^2,p应该是gcd(4, 2) 2,即324 18^2 所以p gcd(x1, x2, x3, ... , xn){欧几里得算法求取最大公约数}; *本题有一个坑&#xff0c;就…

致敬平凡的程序员--《SOD框架“企业级”应用数据架构实战》自序

“简单就是美”“平凡即是伟大”上面两句话不知道是哪位名人说的&#xff0c;又或者是广大劳动人民总结的&#xff0c;反正我很小的时候就常常听到这两句话&#xff0c;这两句话也成了我的人生格言&#xff0c;而且事实上我也是一个生活过得比较简单的平凡人物&#xff0c;当然…

[C++STL]vector容器用法介绍

代码如下&#xff1a; #include <iostream> #include <string> #include <vector> using namespace std;void printVector(vector<int >&v) {for (vector<int>::iterator it v.begin(); it ! v.end(); it){cout << *it << &qu…