Jenkins是java编写,需要安装JDK,这里采用 yum 安装,对版本有需求的,可以到 oracle 官网下载 JDK。

yum install -y java-1.8.0-openjdk

  

一、安装 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

安装

yum install -y jenkins

新版本的 gitlab 服务端口为 8080,为了不和 gitlab 的服务端口冲突,修改 Jenkins 的默认端口为 8088。

查看端口

netstat -antup|grep :80

修改端口为8088

vi /etc/sysconfig/jenkins
JENKINS_PORT="8088"

数据目录,可以自定义
JENKINS_HOME="/var/lib/jenkins"

二、启动 Jenkins

systemctl start jenkins.service

设置开机启动

systemctl enable jenkins.service

如果访问8088端口,发现访问不了,则先查看日志

cat /var/log/jenkins/jenkins.log

如果发现这种信息

java.io.IOException: permission denied

原因是 Jenkins 默认使用的是 Jenkins 用户,因此日志中出现了权限问题,修改 Jenkins 默认用户为 root。

vi /etc/sysconfig/jenkins
JENKINS_USER="root"

  

三、配置jenkins使用gitlab更新代码

安装插件
Credentials Plugin # 签名证书管理
Gitlab Plugin # 安装后从gitlab获取代码
Git Plugin 和 Git Client Plugin # 用于 jenkins 在 gitlab中拉取源码
Gitlab Hook # gitlab触发 jenkins 构建项目
Gitlab Authentication # gitlab和 jenkins 认证相关的插件
SSH Plugin # 远程执行 shell 脚本
Publish Over SSH # 通过 ssh 部署应用

如果 jenkins 安装插件超时,可以在 管理jenkins -> 插件管理 -> 高级 -> 升级站点 改为:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

如果换站点后,还是安装超时,则到下面网站手动下载安装

http://updates.jenkins-ci.org/download/plugins/

  

四、设置 gitlab 用户 root 可以通过 ssh 公钥直接下载代码

生成的SSH密钥, 一路回车,注意我这里生成的是 root 用户,当然你也可以指定用户

ssh-keygen

查看公钥

cat ~/.ssh/id_rsa.pub

然后把公钥添加到 gitlab 项目->设置->版本库->部署密钥
这样我们通过root用户拉取代码,就不需要输入用户名和密码了。

git clone git@192.168.1.222:develop/web.git

  

五、Jenkins 添加 gitlab 用户 root 的 私钥

cat ~/.ssh/id_rsa

在 凭据 -> 全局 -> 添加凭据 -> 选择类型 SSH Username with private key
用户名输入 root,并添加私钥

注意,root用户的公钥在 gitlab,私钥在 jenkins,这样 jenkins 就可以直接拉取 gitlab 上的代码。

六、在 Jenkins 上添加项目

新建一个item -> 输入任务名称 -> 选择构建一个自由风格的软件项目,然后点确定。

然后 描述 根据需要自已填写,源码管理选择 git,并添加仓库URL为 git@192.168.1.222:develop/web.git。
然后选择凭据为我们刚刚添加的 root,然后点保存。

七、自动部署 web 项目

可以通过执行命令或脚本方式进行代码发布,这里演示使用 root 用户在各服务器上发布代码。
当然也可以建一些普通用户,但需要保持所有服务器上的用户ID一致,避免权限问题。

比如我想把222主机上的代码自动部署到111主机上,我的222主机上安装了 gitlab 和 jenkins。

1、首先要实现 root 用户无密码直接登陆111主机。

将公钥复制到远程主机

ssh-copy-id root@192.168.1.111
ssh 192.168.1.111

为了让 jenkins 登陆本机,也免密码,则在本机也复制一份

ssh-copy-id root@192.168.1.222

注意,你需要在哪台机器上自动发布代码,就需要让 jenkins 能使用root用户免密码登陆到那台机器上。

2、我们在 jenkins 的主机上,先 clone 一份代码

cd /data
git clone git@192.168.1.222:develop/web.git

3、然后编写 shell 执行命令,如 sync.sh

#!/bin/bash
echo $USER
cd /data/web
git pull
scp -r ./* root@192.168.1.111:/data/wwwroot/

4、在 jenkins 项目中点击配置,选择构建环境,增加构建步骤,选择 Execute shell,填入如下命令,并保存。

sudo ssh root@192.168.1.222 /data/sync.sh

5、然后点击 项目的 立即构建,看代码是否同步到了111主机上。

八、实现 gitlab 触发 jenkins 自动部署

1、安装 gitlab hook plugin 和 Build Authorization Token Root 和 Build Token Trigger 插件。

2、生成身份验证令牌

openssl rand -hex 16

3、在 jenkins 项目 -> 配置 -> 构建触发器 -> 选中远程构建,并填入上一步生成的令牌。

选中如下两项,然后点保存。
Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.1.222:8088/project/web
GitHub hook trigger for GITScm polling

4、在 gitlab 项目 -> 设置 -> 集成 -> 增加web钩子

链接URL格式:http://jenkins 地址/buildByToken/build?job=jenkins项目名&token=token值
如:

http://192.168.1.222:8088/buildByToken/build?job=web&token=46324e223bc203855552e62dd63b12c9

5、点击测试,push events,如果返回 201 ,说明成功了。

6、我们通过 git 添加文件,提交到版本库,看 jenkins 是否会触发自动构建。

九、使用 Build Pipeline 插件以流程图的形式展示各个 job 的顺序

Build Pipeline 插件作用: 这个插件能够以流程图的形式展示各个 job 的顺序,依赖关系等等。

安装完插件后,我们添加一个视图,并选中 Build Pipeline View。

在 Display Options 中

No Of Displayed Builds 选择 3 ,

Refresh frequency (in seconds) 填入 3。

上面的选项表示显示最近 3 次的构建结果,当然也可根据需要自已填写。

gitlab与jenkins结合构建持续集成的更多相关文章

  1. GitLab、Jenkins结合构建持续集成(CI)环境

    1 持续集成 概述及运行流程 1.1 持续集成概述 持续集成概述:持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并迚程自 ...

  2. 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...

  3. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  4. Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  5. 使用Jenkins构建持续集成环境

    简介 Jenkins是一个开源的持续集成工具,提供了数百种插件供用户选择,能够完成整套持续集成环境的构建. 它具有如下的特点: 持续集成和持续发布 作为可扩展的自动服务器,Jenkins可以作为简单的 ...

  6. 构建基于Jenkins + Github的持续集成环境

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  7. Docker 结合Jenkins 构建持续集成环境

    Docker 结合Jenkins  构建持续集成环境 Jenkins : 一个开源的持续集成工具, 提供软件版本发布.自动测试等一系列流程及丰富的插件 Maven: 一个自动化构建工具, 通过一段描述 ...

  8. 使用Docker构建持续集成与自动部署的Docker集群

    为什么使用Docker " 从我个人使用的角度讲的话  部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...

  9. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署

    前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...

随机推荐

  1. linux的装配与虚拟机的快照

    一.科普 1969年,“c语言之父”,“b语言之父”,ken Thompson,开发了一个叫unics系统,是unix系统的雏形,只不过此时的UNICS是用汇编语言写的.移植到其它计算机上需要改很多源 ...

  2. 【oracle】ORA-00947: 没有足够的值

    insert 时 对应NOT NULL 的列 必须有值

  3. Linux下动态切换EHCI控制器下端口的速率(即切换为12M)

    在sys目录下找到对应的控制器 例如:/sys/devices/platform/soc/ehci,直接操作该目录下的companion echo 1  > companion  将port1设 ...

  4. 【Java基础】正则表达式

    目录 正则表达式 什么正则表达式 普通字符 预定义字符 特殊字符 数量限定字符 定位字符 选择符和分组 反向引用 预搜索 运算符的优先级 常用正则 附录 正则表达式 本文的大部分内容转载自正则表达式从 ...

  5. 【带着canvas去流浪(10)】文字烟花

    目录 一. 文字烟花 二. 动画原理 2.1 像素操作 2.2 烟花生成算法 2.3 计时器 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址 ...

  6. JS基础语法---Date对象---格式化日期

    格式化后的指定格式的日期和时间,封装一个函数 function getDate() { var dt = new Date(); var year = dt.getFullYear(); var mo ...

  7. kotlinx.android.synthetic.** 坑点

    Kotlin通过添加 apply plugin: 'kotlin-android-extensions' 可以直接使用layout id 名称获取当前view对象,详细使用如下: //layout & ...

  8. jmeter控制器(四)

    交替控制器: 交替控制器主要是让控制器里面的请求顺序执行,如下图设置了审批管理循环3次,那么第一次运行就执行了请假模块,第二次运行执行了请假模块1,第二次执行了请加模块2,依顺序每一个请加模块只执行一 ...

  9. mysql忧化参数

    转自 https://blog.51cto.com/tongcheng/1710265以下参数是在mysql-5.6.27中使用,可能mysql版本不同使用方法不一样1.线程参数innodb_read ...

  10. 一行代码在Linux服务器上搭建基于.Net Core的博客

    如果你有一台Linux服务器(CentOS7+ 或者 Ubuntu 16.04+)可以使用以下命令快速搭建一个博客. curl http://cdn.zkeasoft.com/zkeacms-blog ...