Jenkins是什么?

  1. 基于JAVA的开源的自动化系统平台
  2. 加速自动化CI,CD任务及流水线,所有类型的任务:构建,测试,部署等
  3. 丰富的插件生态系统支持功能扩展,1400+插件和SCM,测试,通知,报告,Artfact,触发,外部集成等
  4. 基于Web的管理和使用界面
  5. 源于Hudson
  6. 官网文档:https://jenkins.io/doc/
Jenkins系统架构图

用docker环境部署Jenkins

一,安装docker-ce版本

1.1 删除之前版本的Docker

sudo yum remove docker docker-common docker-selinux docker-engine

1.2 安装一些依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

1.3 下载repo文件

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

1.4 把软件仓管地址替换为 TUNA:

sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

1.5 安装

sudo yum makecache fast
sudo yum install docker-ce

参考文档:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

1.6 安装完成后可以使用:dock version 命令查看docker信息

[root@linux-node1 ~]# docker version
Client:
Version: 17.09.-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep ::
OS/Arch: linux/amd64 Server:
Version: 17.09.-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep ::
OS/Arch: linux/amd64
Experimental: false
二,安装docker-compose

2.1 先确认完成docker环境安装,再执行此步骤

2.2 参考文档:

https://docs.docker.com/compose/install/

2.3 以linux为例:

2.3.1下载docker compose执行文件

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2.3.2 添加执行权限

sudo chmod +x /usr/local/bin/docker-compose

2.3.3 验证结果

docker-compose --version
docker-compose version 1.17., build 1719ceb
三,下载镜像文件

3.1 配置国内docker镜像加速,国内拉取官方docker镜像速度较慢

[root@linux-node1 data]# more /etc/docker/daemon.json
{"registry-mirrors": ["http://4c7d9402.m.daocloud.io"]}

3.2 下载docker的Jenkins镜像

docker pull jenkins:latest

3.3 下载gitlab-ce(如果需要可以下载,可选择)

docker pull gitlab/gitlab-ce:latest

3.4 下载daoker的sonarqube(如果需要可以下载,可选择)

docker pull sonarqube:latest

3.5 验证docker镜像下载结果

[root@linux-node1 data]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 733cc235d0c0 days ago .38GB
sonarqube latest c1637bd4502f days ago 934MB
jenkins latest 3f08dc4f3f5d weeks ago 809MB

3.6 启动jenkins的docker镜像

docker run -it --name jenkinsci0001 -v $HOME/jenkins:/var/  -p : -p : -p : jenkins:latest 

在控制台显示信息如下

...
org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@6b4ba523]: org.springframework.beans.factory.support.DefaultListableBeanFactory@ed6a5eb
Nov , :: AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@ed6a5eb: defining beans [authenticationManager]; root of factory hierarchy
Nov , :: AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@6fd126d1: display name [Root WebApplicationContext]; startup date [Sun Nov :: UTC ]; root of context hierarchy
Nov , :: AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@6fd126d1]: org.springframework.beans.factory.support.DefaultListableBeanFactory@62e4ea3c
Nov , :: AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@62e4ea3c: defining beans [filter,legacy]; root of factory hierarchy
Nov , :: AM jenkins.install.SetupWizard init
INFO: *************************************************************
*************************************************************
************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation: da4d937a40144c53a05e4383273c902b This may also be found at: /var/jenkins_home/secrets/initialAdminPassword *************************************************************
*************************************************************
************************************************************* --> setting agent port for jnlp
--> setting agent port for jnlp... done
Nov , :: AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Nov , :: AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Nov , :: AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tools.JDKInstaller
Nov , :: AM hudson.model.AsyncPeriodicWork$ run
INFO: Finished Download metadata. , ms
Nov , :: AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Nov , :: AM hudson.WebAppMain$ run
INFO: Jenkins is fully up and running

3.7 打开登陆界面,根据提示输入上面的显示的密码

3.8 选择默认推荐安装的插件

3.9 等待插件安装

3.10 设置账户密码

....

3.11 进入页面

四,使用yum安装部署Jenkins

4.1 添加源

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

4.2 导入key

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

4.3 yum安装 jenkins

yum install jenkins -y

为什么要使用Jenkins?


在2015年前我们公司上线流程是:

1.测试环境权限开发给开发人员,开发调试看日志拉代码都是开发自己登陆到测试机上面操作

2.开发提测,QA通过后,开发人员发邮件到ops抄送其他相关部门申请上线,需要开发主管确认等,ops再登服务器拉取发布代码到生产环境(就是说项目定在几点上或者延迟上ops都得苦逼的等着)

3.ops发布完成回复邮件(每星期都会收到大量的上线邮件)

4.QA回滚测试

在2016年ops和其他同行聊天抱怨的时候,人家说你们怎么不用Jenkins。那时候因为年少无知Jenkins是什么鬼啊,然后回来就开始研究,直到下半年就开始慢慢都用上了,现在是:

测试环境:收回开发人员登录系统权限,代码自动触发更新,日志通过ELK实时查看

生产环境:ops基本不参与上线项目,和开发负责人确认哪些开发人员可以有哪些项目的上线权限,ops授权开发人员上线,服务器上面有代码更新会脚本自动发邮件到ops。

具体开发内部怎么上线由开发负责人决定,当业务有问题的时候ops再根据Jenkis的上线记录排查问题,ops可以节省大量时间去其它维护工作。

配置参考图片


相关的项目:php  java .net

版本库有:svn gitlab

服务器系统:CentOS Windows


Jenkins系统设置:需要在Jenkins服务器上安装一些工具软件,然后再web界面添加环境变量等信息,这里用的ssh秘钥和服务器同步代码

配置Jenkins账号和Gitlab账号信息有关联

设置Jenkins专有用户数据库

Androids apk打包配置

Java编译发布配置

项目构建情况,测试环境在Gitlab的trunk分钟,开发人员提交代码到trunk就会触发Jenkins拉取代码发布到业务服务器上面

php正式环境需要开发主管自己登陆到Jenkins进行点击发布

用户权限管理

用户分组及项目创建

用户项目权限分配

测试环境,自动构建

正式环境master分支,开发主管点击构建发布

GitLab8.9  Webhooks设置

使用Jenkins的里面授权的账号,GitLab的只读权限就可以

 Windows配置Jenkins让.NET项目自动编译发布

定时自动发版工具
插件
MSBuild Plugin
subversion.hpi
Global Tool Configuration
MSBuild
v4.0.30319
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
任务
byexx
SVN
svn://192.168.xx.xx/boxx/Byexx.BOxx.Serxx@HEAD
Build periodically
Poll SCM
* * * * * v4.0.30319
Byexxx.BOxx.API.sln
/m /t:Rebuild /property:Configuration=Release;TargetFrameworkVersion=v3.;OutputPath=D:\xx_site\sxx.com\bin .编译完的路径
.svn://192.168.xx.xx/boxx/Byexx.BOxx.Serxx@HEAD

插件安装,subversion或者git取决根据代码服务器实际情况选择安装即可

Global Tool Configuration添加MSBuild工具

配置项目

测试环境代码拉取及日程表

构建及代码发布目录配置

每分钟轮询如测试环境有新代码提前就触发代码拉取编译发

来自网络

Jenkins介绍和安装及配合GitLab代码自动部署的更多相关文章

  1. Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3)

    1.Jenkins 安装完成以后,首先我们在Jenkins中需要安装一下,Gitlab Hook Plugin 插件: 2.插件安装完成我们创建任务,在任务重构建触发器下获取回调URL: 注意: 注意 ...

  2. Gitlab使用Webhook实现Push代码自动部署

    1.Jenkins 安装完成以后,首先我们在Jenkins中需要安装一下,Gitlab Hook Plugin 插件: 2.插件安装完成我们创建任务,在任务重构建触发器下获取回调URL: 注意: 注意 ...

  3. Java代码自动部署

    注:本文来源于<it小熊> [ ①Java代码自动部署-总结简介] 代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节.对于Java开发者来说,Java ...

  4. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

  5. 做了一个简易的git 代码自动部署脚本

    做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08)   阅读(200 ...

  6. jenkins介绍和安装

    1.jenkins介绍 1.1 Jenkins概念: • Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台. • 这是一个免费的源代码,可以处理任何类型的构建或持 ...

  7. Jenkins代码自动部署相关文档

    环境 centos 7.0+ Java JDK 1.8+ jenkins 2.220 maven 3.0+ git 1.8+ 注意事项 一. linux 安装 JDK (jdk-8u201-linux ...

  8. Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署

    自动部署过程: jenkins从svn拉取代码,调用maven去打war包,用ansible去解压war包,最后重启tomcat. 前情回顾:在前面的文章我的环境已经有Jenkins+ansible ...

  9. git的安装使用和代码自动部署

    1.安装 http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html http://www.cnblogs.com/zhcncn ...

随机推荐

  1. css文字上下居中,一行文字居中,两行或多行文字同样居中

    附图: 1. 利用Flex布局实现 demo.html <div class="demo demo-flex"><span>孤云将野鹤,岂向人间住.莫买沃洲 ...

  2. Java 中数据库连接池的比较

    见 原文,现阶段建议使用 https://github.com/brettwooldridge/HikariCP

  3. 1. node.js 认识 (一)

    官网: (下载安装nodejs) https://nodejs.org/en/ http://nodejs.cn/ Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环 ...

  4. IkAnalyzer2012FF_u1.jar免费下载

    链接:https://pan.baidu.com/s/1P_0cdRLKJO4VIUTokvTS0g 提取码:qt3w

  5. Java开发岗位面试题归类

    一.Java基础 1. String类为什么是final的. ( 1.由于String类不能被继承,所以就不会被修改,这就避免了因为继承引起的安全隐患: 2.String类在程序中出现的频率比较高,如 ...

  6. 队列模拟基本操作I

    看到这道题,第一个想法就是“搜索”!“回溯”!的确,这种思路是很正确的,BFS和DFS都可以来解决: #include <cstdlib> #include <cstring> ...

  7. 谁考了第k名

    题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入: 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k ...

  8. 51nod图论题解(4级,5级算法题)

    51nod图论题解(4级,5级算法题) 1805 小树 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 她发现她的树的点上都有一个标号(从1到n),这些树都在空 ...

  9. vue的数据双向绑定和ref获取dom节点

    vue是一个MVVM的框架 业务逻辑代码即js部分是model部分, html是view部分. 当model改变的时候,view也会改变 view 改变是,model也会改变 <template ...

  10. Luogu 1071 - 潜伏者 - [字符串]

    题目链接:https://www.luogu.org/problemnew/show/P1071 题解: 模拟就完事儿了. 注意failed的情况有:出现一个 $f[x]$ 对应多个值:存在两个不同的 ...