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…

陌陌的 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;所以我觉得有必…

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;还支持…

详解.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…

致敬平凡的程序员--《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…

跟沈剑学习如何带领技术团队作战

【学习笔记】| 作者/Edison Zhou这是恰童鞋骚年的第229篇原创文章小编Edison在阿里云开发者社区上看到了58集团技术VP大佬沈剑关于如何带领技术团队作战的一个直播分享&#xff0c;因此在站地铁的上下班路上学习完了整个录播视频&#xff0c;整理总结下此文作为学习笔记&#x…

用java做一个模拟彩票程序_JAVA模拟----- 彩票机子-----抽奖过程的实例化

/*时间&#xff1a;2012-10-05作者&#xff1a;烟大阳仔程序要求&#xff1a;模拟彩票抽奖机的功能编写一个程序,实现随即输出六个号码程序解释&#xff1a;该段程序没有传递参数*/class Day1005_Caipiao{public static void main(String[] args){System.out.println("估计…

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

代码如下&#xff1a; #include <iostream> #include <string> #include <deque> using namespace std;void printDeque(const deque<int>& d) {for (deque<int>::const_iterator it d.begin(); it ! d.end(); it){cout << *it <…

“我工作八年,换了四家小公司,今后的职业生涯该怎么走?”

去年&#xff0c;我曾在GIAC大会上分享过一个有关程序员职场变化和转型的话题。在分享结束之后&#xff0c;有一位小伙伴拦在大门口&#xff0c;问了我一个问题&#xff1a;"王老师&#xff0c;虽然你分享的内容很务实&#xff0c;落地性也很强&#xff0c;但我觉得跟自己…

.NET Core + Kubernetes:Deployment

在上篇文章 .NET Core Kubernetes&#xff1a;Pod 中&#xff0c;主要介绍了 Pod 的相关内容&#xff0c; 基于 Pod 为单位能更加合理进行容器编排&#xff0c;然而 Pod 只是个启动了一个或一组容器的资源类型&#xff0c;在实际应用中&#xff0c;我们也需要 Pod 能实现动态扩…

我整理了100G的.Net学习资料,速来领取!

听说免费送课会上瘾&#xff1f;不分享点干货给大家学习&#xff0c;完全无法衬托本号主的好人特质啊&#xff01;正所谓白嫖一时爽&#xff0c;一直白嫖一直爽&#xff01;举起你滴双手&#xff0c;擦亮你的眼睛&#xff01;今天我要丢个硬核干货&#xff01;一次性怒砸几百个…