1.环境

本文使用VMWare虚拟机进行实验。

最终实现目标,在Jenkins服务器上新建构建任务,从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器",再执行一个脚本。

Jenkins服务器

  • 2核CPU,4GB内存,20GB硬盘,IP:192.168.118.145(要求能上网,装插件)
  • CentOS 7.2最小安装(CentOS-7-x86_64-Minimal-1511.iso)

Git远程库服务器

  • IP: 192.168.118.148
  • 已经存在一个git repo: hello-jenkins.git

目标服务器

  • IP: 192.168.118.147

2.需求

  • Jenkins 2.89
  • JRE 8u162
  • Git 1.8.3.1
  • Supervisor 3.1.4

3.安装

3.1安装软件

yum -y install git supervisor

3.2安装JRE

官网下载Java SE Runtime Environment 8u162 Linux x64

jre-8u162-linux-x64.tar

tar zxvf jre-8u162-linux-x64.tar -C /opt
export JAVA_HOME=/opt/jre1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar

3.3安装Jenkins

官网下载Jenkins,安装

rpm -ivh jenkins-2.89.3-1.1.noarch.rpm

得到war包  /usr/lib/jenkins/jenkins.war

其实到现在已经可以运行Jenkins服务了,但我们先来配置下开机自动启动(利用supervisor)

3.4配置Jenkins开机自启

为jenkins创建supervisor配置文件

vi /etc/supervisord.d/jenkins.ini

添加如下内容,蓝色加粗的是有用的,分号开头的已经被注释掉了,需要的话自己开、自己配

[program:jenkins]
;command=/bin/cat
command=/opt/jre1.8.0_162/bin/java -jar /usr/lib/jenkins/
jenkins.war ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs= ; number of processes copies to start (def )
;directory=/tmp ; directory to cwd to before exec (def no cwd)
;umask= ; umask for process (default None)
;priority= ; the relative start priority (default )
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
startsecs=10 ; number of secs prog must stay running (def. 1
)
;startretries= ; max # of serial start failures (default )
;exitcodes=, ; 'expected' exit codes for process (default ,)
;stopsignal=QUIT ; signal used to kill process (default TERM)
;stopwaitsecs= ; max num secs to wait b4 SIGKILL (default )
;user=chrism ; setuid to this UNIX account to run the program
;redirect_stderr=true ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups= ; # of stdout logfile backups (default )
;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
;stdout_events_enabled=false ; emit events on stdout writes (default false)
;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups= ; # of stderr logfile backups (default )
;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
;stderr_events_enabled=false ; emit events on stderr writes (default false)
;environment=JAVA_HOME=/opt/jre1..0_162,CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar ; process environment additions (def no adds)

添加supervisor开机自启,注意现在不要启动(start),一会儿我们手动启动

systemctl enable supervisord

4.运行

java -jar /usr/lib/jenkins/jenkins.war

初次运行Jenkins会开始安装、配置,注意控制台会输出admin的密码(类似下面蓝色粗体),密码要记住,新建用户后这密码就找不到了...

*************************************************************
*************************************************************
************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation: d4b41da7b70048c8b2a4eb5786100996 This may also be found at: /root/.jenkins/secrets/initialAdminPassword *************************************************************
*************************************************************
*************************************************************

默认Jenkins服务器端口为8080

浏览器访问 http://192.168.118.145:8080/,把密码填进去,下一步

会让你选择安装插件,其实安装建议的就行,但这里选择自己安装插件

注意Git要勾选,

另外勾选“Publish Over SSH”,部署的时候会用到

然后确定开始下载安装插件,看网速...完了之后会进入账户设置,

设置完就进入主界面了

到这里就Jenkins安装好了,系统重启会自动启动Jenkins服务。

5.部署demo

最终实现目标,在Jenkins服务器上新建一个构建任务,这个任务从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器",再执行其中一个脚本。

5.1配置ssh key

这个Key用于访问git、访问“目标服务器”

在Jenkins服务器上,-C后面的注释随便写,交互shell中不用管,一路回车就行

ssh-keygen -t rsa -C "jenkins@admin.com"

生成的公钥文件/root/.ssh/id_rsa.pub、私钥文件/root/.ssh/id_rsa.pub

为了ssh无密码访问(使用root用户),我们要把公钥注册到目标上

在Git服务器上,把公钥内容复制填进去,保存。

vi /root/.ssh/authorized_keys

在目标服务器(见环境一节介绍)上,把公钥内容复制填进去,保存。

vi /root/.ssh/authorized_keys

5.2注册Jenkins SSH Server

主界面---系统管理---系统设置---Publish over SSH(在最下面)

Path to key 填私钥文件路径(公钥刚才已经传到目标服务器上了)

SSH Server,Name起一个名字,hostname填“目标服务器”IP,root登录,Remote Directory是部署的目录(/表示部署到根目录下),不懂的最右边有个问号可以点,有帮助。

5.3新建一个Job

填一个名字,下面选第一项”构建一个自由风格的软件项目“,点确定。

源码管理一栏,添git路径(就是一般git clone XXX中的XXX)

Credentials点右边Add,配置秘钥访问git

Kind选 SSH Username with private key

Username填root

Private Key选 From the Jenkins master ~/.ssh (私钥路径/root/.ssh/id_rsa,公钥刚才已经传到git服务器上了)

Description随便填,便于自己区分

填完之后回到之前的页面,选择使用这个凭证:root(sshKeyToGit)

构建后操作,选刚才添加的SSH Server

Source files填**,表示所有文件

Remote directory填first-ci,刚才配了部署目录是/,综合得到部署路径 /first-ci

Exec command填的是文件传输完成后执行的命令,这里执行的是git库中一个脚本

保存,进入这个界面,点“立即构建”,左下区域是构建情况(图上是构建了4次,蓝色表示成功,黄色表示出了点问题)

点“#4”,点“Console Output”,可以查看整个构建过程的输出,

一般构建出错也是在这里看错在哪了,比如下面这图#3

5.4验证部署结果

在目标服务器上,

可以看到部署的文件(也是部署后执行的脚本)

以及执行脚本的结果(可见登录后的目录为用户home目录)

TODO:

Jenkins用户管理....

CentOS 7.2安装Jenkins自动构建Git项目的更多相关文章

  1. 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

    写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...

  2. Jenkins自动构建gitlab项目(jenkins+maven+giltlab+tomcat)

    环境准备: System:CentOS 7.3 (最小化安装) JDK: 8u161 (1.8_161) tomcat: 8.5.29 Jenkins: Jenkins 2.107.1 Gitlab: ...

  3. jenkins自动构建前端项目(window,vue)

    我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...

  4. jenkins 自动构建gitlab项目

    安装的plugin: - kubernetes:1.7.1    - workflow-aggregator:2.5    - workflow-job:2.21    - credentials-b ...

  5. Linux下Jenkins与GitHub自动构建Node项目(Vue)

    根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...

  6. 使用Docker+Jenkins自动构建部署

    环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...

  7. 实战:向GitHub提交代码时触发Jenkins自动构建

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...

  8. DEVOPS技术实践_02:jenkins自动构建项目

    一.用户名密码错误 打开jenkins发现用户名密码错误,解决 1.1 找到config.xml文件 [root@jenkins-master ~]# ll -a drwxr-xr-x. root r ...

  9. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

随机推荐

  1. Sql Server 中的 @@ERROR

    @@ERROR:当前一个语句遇到错误,则返回错误号,否则返回0.需要注意的是@ERROR在每一条语句执行后会被立刻重置,因此应该在要验证的语句执行后检查数值或者是将它保存到局部变量中以备将来使用. D ...

  2. 洛谷 [P3480] KAM-Pebbles

    博弈论转化 本题的限制条件很多,我们尝试转化, 我们发现,定义 c[i] 为第 i 堆可以取得数量,如果第 i 堆取出了 x ,那么 c[i] - x , c[i + 1] + x 我们发现这是一个反 ...

  3. wamp Apache和mysql服务无法启动的终极解决方法!!!!!!

    用了几年的wampserver 突然宣告无法启动,Apache和mysql都崩溃了,在计算机的服务选项里面也是无法启动的,系统报了一个未知错误,重装了N个版本的PHP集成开发环境,都宣告失败! 我想应 ...

  4. vba比较日期大小,定义日期;vba让excel保存

    Private Sub CommandButton1_Click()Dim i, j As IntegerDim a As Datea = #10/1/2013#j = 2i = 2' If  Wor ...

  5. 测试开发系列之Python开发mock接口(三)

    于进入主题了,前面的准备工作都已经做好了,下面就开始写逻辑的代码了,代码我已经写好了,每行都加了注释,不明白的可以留言.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  6. hdu - 2667 Proving Equivalences(强连通)

    http://acm.hdu.edu.cn/showproblem.php?pid=2767 求至少添加多少条边才能变成强连通分量.统计入度为0的点和出度为0的点,取最大值即可. #include & ...

  7. alibaba/fastjson 之 JSONPath

    JOSNPath 是一个非常强大的工具,对于处理 json 对象非常方便. 官方地址:https://github.com/alibaba/fastjson/wiki/JSONPath 基本用法:ht ...

  8. 51NOD 1424 零树

    Discription 有一棵以1为根的树,他有n个结点,用1到n编号.第i号点有一个值vi. 现在可以对树进行如下操作: 步骤1:在树中选一个连通块,这个连通块必须包含1这个结点. 步骤2:然后对这 ...

  9. 电音中DJ/Producer/MC/EDM/Remix/Mix的名词解释(转)

    DJ DJ是Disc Jockey的缩写,是电音圈子里的一种热门职业,一般大家在夜店或者酒吧看到的站在台上甩着膀子拧着按钮或者使劲儿搓碟的就是DJ啦. DJ的主要工作一般就是在现场用打碟机和混音台把许 ...

  10. HTML5 这些你全知道吗?

    今天心情烦躁,搭建个论坛各种失败,Laravel.React也学不进去,于是就复习复习学过的.记录一下很少用的东西. 代码摘抄于W3C菜鸟教程HTML5手册 # 定义文本方向 <element ...