简单的jenkins+git自动化上线

一.Jenkins+Github自动化上线

不会的要多查多问,不然不会的永远不会,哪怕你离会就差了那么一点点

(一).环境:

[[email protected] ]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[[email protected] .ssh]# uname -a

Linux hxy-centos7 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Jenkins 版本

jenkins-2.118-1.1

Jdk版本1.8.0

java-1.8.0-openjdk.x86_64

Git版本

git-1.8.3.1

(二).安装

1.安装epel源

rpm -ivh https://mirrors.kernel.org/fedora-epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

2.安装jenkins

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

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

yum install jenkins -y

3.安装jdk

yum install java-1.8.0-openjdk.x86_64 -y

4.安装git

yum install git -y

5.启动jenkins

/etc/init.d/jenkins restart

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

检查进程是否存在,端口是否开启,不想用8080的,也可以自己换个端口

6.这里关闭防火墙,或者配置开放端口(我懒得配置直接关闭了)

systemctl start firewalld.service

systemctl disable firewalld.service

iptables -F

or(开放端口)

iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

7.测试jenkins然后在浏览器上输入

http://192.168.18.171:8080

[[email protected] ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

c9c35f0eefb84059b4d2c70baed5d7e1

8.输入密码登录完成

9. 安装插件:

我是新手我选择了第一个(安装推荐的插件)

10.然后开始创建用户(你可以继续使用admin也可以创建新的用户)

11.jenkins安装完成

12.安装ssh插件

13.配置公私钥

安装插件,Publish Over SSH我的已安装了,未安装的会出现这个的,未安装安装上就行

在Linux服务器上生成公私钥:

[[email protected] .ssh]# ssh-keygen -t rsa -C "[email protected]"

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): mghxy123_rsa

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in mghxy123_rsa.

Your public key has been saved in mghxy123_rsa.pub.

The key fingerprint is:

SHA256:SHl1ywpu4SECMxSn7SJn8I+LzT0F7ErvcNeCzp+gim8 [email protected]

The key's randomart image is:

+---[RSA 2048]----+

| .*..     . .    |

|   B   . . o .   |

|. ..o + =   o    |

| o .oo * + .     |

|. =.... S .      |

| +.+...o         |

| .oo=.o .        |

|.+EOoo o         |

|++*.=oo          |

+----[SHA256]-----+

Passwd:

mghxy123

cp mghxy123_rsa.pub authorized_keys

chmod 600 authorized_keys

[[email protected] .ssh]# ll

总用量 12

-rw-------. 1 root root  398 4月  28 17:39 authorized_keys

-rw-------. 1 root root 1766 4月  28 17:38 mghxy123_rsa

-rw-r--r--. 1 root root  398 4月  28 17:38 mghxy123_rsa.pub

[[email protected] .ssh]# ssh localhost

Last login: Mon Apr 23 17:42:55 2018 from 192.168.178.1

14.公司要配置完成,尝试本地登录,无密码登录就OK了

注:这个是centos6.5的,6.5可以输入密码在登录的时候无密码登录,但是centos7不行,只能是密码为空的,才能实现免密码登录

[[email protected] .ssh]# ssh-keygen -t rsa -C "[email protected]"

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:MXl46VkFaBA1pDoPkcCCeyE2ZVjlHkslbMhwICTHpUI [email protected]

The key's randomart image is:

+---[RSA 2048]----+

|+EOB*o .o=+....  |

|*=*+o+o. +oo .   |

|oooo.+o *.+ .    |

|... o oo * o     |

| .   o+ S o      |

|       +         |

|        .        |

|                 |

|                 |

+----[SHA256]-----+

[[email protected] .ssh]# cp  id_rsa.pub authorized_keys

[[email protected] .ssh]# chmod 600 authorized_keys

[[email protected] .ssh]# ssh localhost

The authenticity of host 'localhost (::1)' can't be established.

ECDSA key fingerprint is SHA256:t1iQaiLET6B/bFvzukcTrBLUJLrSkBTUva+My47Zd7M.

ECDSA key fingerprint is MD5:9a:6e:4d:3b:d1:b6:64:f8:77:d7:2d:c7:33:34:f4:98.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.

Last failed login: Mon May  7 23:52:01 CST 2018 on pts/0

There was 1 failed login attempt since the last successful login.

Last login: Mon May  7 15:55:23 2018 from 192.168.18.1

拷贝公钥,修改权限为600

15.然后给jenkins配置秘钥

 

16.配置完成了点下test configuration 配置没问题了结果就成success,不是success就检查下配置

17.ssh秘钥配置完成,下面创建任务

18.配置下你的工作空间,便于管理(描述什么的,随便写不写都行)

19.配置git,这里需要github的utl了,到自己的github项目上去找

19..1这里在自己的github找到https的url(我在这里选用的是https,而不是用ssh,方法其实都差不多)

https://github.com/mghxy123/my_script.git

19..2.可以用ssh,但是ssh需要另外配置秘钥

19..2..1在这里填入私钥即可

19..2..3如果是ssh,就需要在jekins上也配置秘钥

19..2..4要是gitlab上拉代码就不用勾选。
①在Repository URL填写自己的远端地址。git打头的是ssh的连接形式,http打头的是http的连接形式。 
②在Credentials这一栏,我弄了很久,每次我都是直接点击那个“Add”->“Jenkins”然后创建账号。结果总是不对。后来我回到首页: 
 

19..2..5点击 Stores scoped to Jenkins中的 Jenkins 

19..2..6在System中鼠标移动Global credentials(unrestricled)右边会出现小三角, 
点击会出现Add Credentials. 

19..2..7 Kind中选择SSH类型 

Username这里是可以随便填,建议填写你生成ssh时的key。 
private key这里选择第一个“Enter directly”,再把.ssh文件夹中的私钥全部复制过来(包括注释)。 
至此,正常情况下这样配置,ssh认证是没有错的! 
③Branches to build这一栏:*/master

20.构建触发器

定时构建,每两分钟构建一次(也可以不填)

21.构建,构建要根据具体的需求来做,我这里只是为了测试,就随意写了个脚本

[[email protected] ~]# mkdir /data

[[email protected] my_script]# chmod 777 /data/ -R

[[email protected] my_script]# chmod 777 /tmp -R

构建

22.发现权限不够的情况下

①可以把需要的文件和目录的拥有者都改为jenkins用户;

②修改jenkins配置文件把jenkins用户改为root用户

vim /etc/sysconfig/jenkins

JENKINS_USER="jenkins"

改为:

JENKINS_USER="root"

1. 手动把需要的权限的文件夹或者目录加权限,(这样很费劲的)

构建成功:

这里只是为了测试写了个简单的脚本,至于构建成功后你再怎么做就看个人的需要了

二. Jekins+Gitlab自动化上线

安装jenkins就不重复了

1.安装gitlab插件

2.如图所示输入gitlab

3.我这里已经安装了,没有安装的安装上就行了

然后配置公私钥(不要再系统配置的gitlab里面配置,配置都失败了):

Gredentials--->stores scoped to jenkins--->global--->add gredentials

4.然后选择

ssh username whieh private key

5.Username随便填,但是最好填自己秘钥的名字

6.然后再私钥里面填入私钥:

其他的可填可不填,看个人的情况:

7.然后配置自己gitlab的公私钥:

8.然后创建任务:

9.描述什么的,看个人的情况来填:

10.秘钥就选我们刚才配置的

配置定时任务,这个的定时任务和crontab不一样,这里的分别代表

分 时 天 月 年

我这里写的是每小时的半点执行一次

[[email protected] my_script]# cat jenkins_web.sh

#!/bin/bash

now_time=$(date +"%Y%m%d_%H%M%S")

mv  /data/web /data/web_back_${now_time}

mv /data/git_dir/ /data/web/

mkdir /data/git_dir

chmod 777 /data/git_dir

11.构建失败,查看构建时的输入,找到问题

对于这样权限不够的,我直接吧文件夹的拥有者改成了jenkins就没问题了

chown jenkins:jenkins /data -R

12.修改完成再次构建

构建成功就OK了

13.然后到浏览器上测试一下

14.再次修改提交测试一下

15.提交完成,开始构建测试

16构建完成

17.在浏览器上看一下

18.正常输出,没问题,试验完成

三.在安装使用jenkins的时候遇到的一些问题

一.启动jenkins报错,这个报错很明显说jenkins需要jdk1.8,但是你的jdk是1.7

所以升级jdk到1.8就好了

[[email protected] ~]# java -jar /usr/lib/jenkins/jenkins.war

Jenkins requires Java 8, but you are running 1.7.0_51-mockbuild_2014_06_09_19_19-b00 from /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre

java.lang.UnsupportedClassVersionError: 51.0

at Main.main(Main.java:128)

原因是需要升级jdk到1.8

2.关于密码问题

一、admin密码未更改情况

1.进入/Jenkins/secrets目录,打开initialAdminPassword文件,复制密码;

2.访问Jenkins页面,输入管理员admin,及刚才的密码;

3.进入后可更改其他管理员密码;

admin密码更改忘记情况

1.删除Jenkins目录下config.xml文件中下面代码,并保存文件。

<useSecurity>true</useSecurity>

<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">

<denyAnonymousReadAccess>true</denyAnonymousReadAccess>

</authorizationStrategy>

<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">

<disableSignup>true</disableSignup>

<enableCaptcha>false</enableCaptcha>

</securityRealm>

2.重启Jenkins服务;

3.进入首页>“系统管理”>“Configure Global Security”;

4.勾选“启用安全”;

5.点选“Jenkins专有用户数据库”,并点击“保存”;

6.重新点击首页>“系统管理”,发现此时出现“管理用户”;

7.点击进入展示“用户列表”;

8.点击右侧进入修改密码页面,修改后即可重新登录。

 

改好密码后就可以登录了

然后把修改的东西再修改回来就好了

Centos7克隆的时候报错了,fatal: unable to access

需要升级一下就好了yum update -y nss curl libcurl

修改工作空间:

在安装插件的时候有可能安装不了,重试几次都不行,我的解决办法是重启jenkins,jenkins重启不行,就重启虚拟机或是服务器,就没问题了

网上找了好多博客,要么不全,要么不合适,感谢个博客

https://blog.csdn.net/u013066244/article/details/52611070

原文地址:http://blog.51cto.com/853056088/2113889

时间: 2024-10-27 13:24:05

简单的jenkins+git自动化上线的相关文章

jenkins+git+maven搭建自动化部署项目环境

简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky-        lulu/cxf_demo-Maven-Webapp)     系统:centos6.5 maven: Apache Maven 3.3.9 git:git version 2.0.0 1.首先安装git,看以前另外一篇博客 http://www.cnblogs.co

Jmeter+Maven+Jenkins+Git接口自动化流程

最近在实现 Jmeter+Maven+Jenkins+Git 接口自动化,研究不到两周,实现了 Jmeter+Maven+Jenkins+Git  接口自动化 的整体流程. 仅以此博客简单记录下自己实现的过程. 一. 职责.角色明确 Jmeter: 执行者,录制接口测试脚本,运行脚本,得到结果,生成报告,统计数据: Maven,Git :管理者, Maven 主要负责项目的依赖管理,Git 主要负责项目的代码管理: Jenkins:调度者,持续集成(CI)工具:构建.部署自动化:可以持续编译,运

「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程

Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变得可能.现在软件开发追求的是效率以及质量,Jenkins使得自动化成为可能! 亮点 采用shell自定义脚本,控制集成部署环境更加方便灵活 精简war包中的lib包,常驻tomcat里,减少war包传输时间 Jenkins 用户权限管理,不让淘气鬼乱动 构建失败发邮件通知相关人员解决 自动按天备份war包,Jenkins配置备份以及版本控制化 环境 Ubuntu 14.10 (GNU/Linux 3.16.0-

Jenkins+git+webhook自动触发部署和测试任务

Jenkins+git+webhook自动触发部署和测试任务 需求: 目前上线前会将需要上线的代码push到release分支,然后由人工填写参数点击触发jenkins上的任务.希望这个过程能完成自动化,只要有人往release上推代码,就自动跑部署release分支并测试 解决办法及步骤: 1.在jenkins里需要自动触发的job里的"源码管理"部分添加设置,如下图.填好git仓库url和需要检测的分支名称 注意事项: a.在填url的时候可能会提示找不到命令的错误,遇到这个错的解

jenkins + Git 搭建持续集成环境

jenkins + Git 搭建持续集成环境 持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前广泛应用的持续集成工具,本文记录我使用jenkins+Git配置持续集成环境的整个流程以及踩到的坑(jenkins过程的坑往往不是在第一次配置,而是在配置结束后更改某些配置项的时候踩到). 总体流程如下: tomcat8.0下载地址:http://tom

实战docker+jenkins+git构建持续集成环境

本文重点介绍jenkins以及让jenkins如何实现在docker容器中运行.jenkins和docker私有仓库又是怎么结合的.docker说明及安装和git说明及安装在本文中不会特别详细的介绍. ?并且,在本文中不着重介绍原理性的东西,比如不会介绍什么是持续集成.持续构建等等.本文的重点是实战为主.对持续集成.持续交互.持续部署不太了解的朋友可以参考这篇文章了解一下:https://www.zhihu.com/question/23444990 1.背景说明 Jenkins是一个开源软件项

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静态的网站. 如果大家可以熟练掌握以上内容,势必会在工作中减轻不小的工作量. 本篇博客将再次使用这四个工具结合freestyle和pipeline来完成动态网站的部署. 为了拓宽知识点,本篇博客将使用jenkins的两种常用方法来进行部署,如果你对pipeline还不熟悉,请参考我之前的博客<Jenki

spoon+robotium+jenkins进行自动化持续回归测试

自动化测试的意义: 别说是外行人,即使是正在从事自动化测试工作的人来说,现在或曾经都或多或少有过这样的疑惑,辛苦写了自动化测试用例,却基本发现不了问题,其意义何在?在说明这个意义前先看下质量的定义. 质量的定义: 维基百科中对于品质(Quality)的定义:中国大陆亦称为"质量",可指物品的特征.品性.本质,也可指商品或服务的水准.质量. 影响品质的要素包括物品的可靠性.安全性,功能上是否完备,能否满足需求, 等等. 对于软件质量的定义:软件质量,是指软件系统或系统中的软件部分的质量,

基于Jmeter跟Jenkins的自动化性能测试的一站式解决方案(转)

www.MyException.Cn  网友分享于:2015-08-26  浏览:0次 基于Jmeter和Jenkins的自动化性能测试的一站式解决方案 作者: Yu, Qingguo Shen, Vivien Wu,Biyun 背景 性能测试用来保证产品发布后系统的性能满足用户需求,在软件质量保证中起着重要作用.Jmeter是一款广泛使用的性能 测试工具,然而,在执行测试前,用户往往需要花费很多额外的精力和时间配置测试环境.同时在进行测试时,使用单台服务器模拟数以千计的用户对目标服务器产 生负