恩光汽车新闻网

您现在的位置是: 首页 > 汽车测评

文章内容

hudson正式更名为jenkins_hudson和jenkins

tamoadmin 2024-08-29
1.jenkins 插件管理 为什么是空白2.关于hudson远程部署3.如何设置jenkins服务器环境变量4.如何用Jenkins/Hudson创建真正的p

1.jenkins 插件管理 为什么是空白

2.关于hudson远程部署

3.如何设置jenkins服务器环境变量

4.如何用Jenkins/Hudson创建真正的pipeline

5.如何给jenkins用户设置权限

6.系统运维需要掌握哪些工具?

hudson正式更名为jenkins_hudson和jenkins

上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》

CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,

Jenkins :基于Ja开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。

CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程

关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章

拉取镜像,启动并设置开机自启

配置docker加速器

GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了

切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来

external_url '://192.168.26.55’

gitlab_rails[‘gitlab_ssh_host’] = '192.168.26.55’

gitlab_rails[gitlab_shell_ssh_port] = 222

修改完配置文件之后。直接启动容器

相关的git命令

下面我们要配置私有的docker镜像仓库,用到的机器为:

这里仓库我们选择 harbor ,因为有web页面,当然也可以使用 registry

首先需要设置selinux、防火墙

安装并启动docker并安装docker-compose,关于docker-compose,这里不用了解太多,一个轻量的docker编排工具

解压harbor 安装包:harbor-offline-installer-v2.0.6.tgz,导入相关镜像

修改配置文件

harbor.yml:设置IP和用户名密码

./prepare && ./install.sh

查看相关的镜像

访问测试

这里因为我们要在192.168.26.55(CI服务器)上push镜像到192.168.26.56(私仓),所有需要修改CI服务器上的Docker配置。添加仓库地址

修改后的配置文件

加载使其生效

CI机器简单测试一下

push一个镜像,可以在私仓的web页面查看

镜像jenkins拉取

这里为什么要改成 1000,是因为容器里是以 jenkins 用户的身份去读写数据,而在容器里jenkins 的 uid 是 1000,

更换国内清华大学镜像,Jenkins下载插件特别慢,更换国内的清华源的镜像地址会快不少

"://.google/" 替换为 "://.baidu/"

替换后查看

重启docker,获取登录密匙

需要修改jenkins绑定的docker的启动参数 , ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock

修改镜像库启动参数后需要重启docker

后面 gitlab 要和 jenkins 进行联动,所以必须要需要对 jenkins 的安全做一些设置,依次点击 系统管理-全局安全配置-授权策略,勾选"匿名用户具有可读权限"

添加 JVM 运行参数 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 运行跨站请求访问

这里的话我们要通过jenkins上的kubectl客户端连接k8s,所以我们需要安装一个k8s的客户端kubectl,下载k8s客户端

然后拷贝kubeconfig 证书,k8s集群中查看证书位置,这里的证书是之前创建好的,小伙伴可以看看我之前的文章

命令测试没有问题

我们要部署 Nginx 来运行 hexo 博客系统, hexo 编译完后为一堆静态文件,所以我们需要创建一个 svc 和一个 deploy ,使用 SVC 提供服务,使用 deploy 提供服务能力,使用 Nginx+hexo的静态文件 构成的镜像

这里我们先用一个Nginx镜像来代替hexo博客的镜像

查看deployments和pod

访问测试没有问题,之后我们配置好jenkins上的触发器,直接替换就OK

我们通过 kubectl set 命令更新 deploy 的镜像时,获取的镜像是通过私仓获取的,所以需要在启动参数添加私仓地址

这里所有的节点都需要设置后重启docker

访问jenkins,接下来才是重点,我们要的jenkins上配置整个CICD流程,从而实现自动化

下面我们编译一下hexo,生成public的一个文件夹,然后上传gitlab

同时需要编写Dockerfile文件来创建镜像

jenkins 插件管理 为什么是空白

可以的。

1.先在jenkins --->系统管理--->插件管理里面安装权限策略role-strategy.jpi插件,再注册几个用户。2.在系统管理--->Configure Global Security里统一用户权限配置,在这里配置的权限针对所有job有作用。

3.也可以在job 配置里面单独授权给用户。在这里配置的权限针对当前job有作用。比如这图上可以看到admin和zhangxxx有权限,那么当用wangxxx登录时,这个job就不会显示,视图上就看不到。

关于hudson远程部署

jenkins

插件管理

为什么是空白

如何用Jenkins/Hudson创建真正的pipeline

这几天尝试用Jenkins/Hudson创建pipeline,发现网上的信息很少,所以写一篇跟大家分享。

在开始之前,得告诉你被我的标题给忽悠了,不是Jenkins/Hudson,只是Jenkins!如果你还在用Hudson,那么我建议你...

本文就简单说说我经验中的解决办法:

1.两个地域的网络都能直接相互访问,这是最好的情况(而这种情况适用范围是最窄的),可以直接用Jenkins的隐藏功能实现。

首先要有个job处于你build

process的最后一步,比如说,你release后,触发这个job

如何设置jenkins服务器环境变量

复制war到$TOMCAT_HOME/webs下启动的时候,设置一下hudson的环境变量exportHUDSON_HOME=/hudson_homecatalina.shstart对了,现在都用jenkins了。。。

如何用Jenkins/Hudson创建真正的pipeline

启动Jenkins

1、 安装jdk

从略,建议1.6或以上版本,配置好环境变量。

2、 安装tomcat

从略,安装完调试下tomcat是否正常。

3、 安装ant

下载zip包,解压后配置好环境变量。

4、 安装jenkins

下载war包,命名为Jenkins,拷贝到tomcat/webs目录下。

5、 安装Android SDK

下载安装,完成后配置好Android_SDK_HOME环境变量。此步骤主要用于进行android自动化测试,若不进行此项可略过。

安装完成后启动tomcat/bin/startup.bat文件(linux下是startup.sh),在浏览器输入://localhost:8080/jenkins,8080为tomcat端口,即可访问jenkins服务器。

配置Jenkins

1、 JDK配置

新增JDK,指定JDK名字和JAVA_HOME

2、 ANT配置

新增ANT,指定ANT名字和ANT_HOME

3、 Men配置

从略,本文未使用到Men,具体配置方法参考Google。

4、 Subversion

选择1.6版本SVN,勾选Update default Subversion credentials cache after successful authentication

5、 邮件通知

填写SMTP server、Default user E-mail suffix、System Admin E-mail Address、Jenkins URL、勾选Use SMTP Authentication,填写User Name、Password、Use SSL、SMTP port、Chareset(UTF-8) 、Default Content Type(默认)、Default Recipients(默认收件人),配置完成后可进行测试邮件。

6、 Jenkins URL

配置该URL,用于别人访问。

插件管理

1、 Hudson Subversion Plug-in,jenkins的svn插件。

2、 Android Emulator Plugin,android模拟器插件。

3、 JUnit Attachments Plugin,junit测试报告附件插件。

4、 Email-ext plugin,邮件扩展插件。此处说明下,默认Jenkins只会发送构建失败的邮件,我们需安装此插件才能自定义不同场景。

5、 Deploy to container Plugin远程发布插件。

自动化测试

打包源工程

Android程序

本小节讲诉如何打包一个Android工程,当前使用的是ant进行编译源码。

1、 首先构建一个自由风格的Job。

2、 添加源码路径,选择所使用的版本控制器,输入源码路径。

3、 构建触发器可根据需要选择是否定时构建。

4、 构建环境,此处Jenkins安装了Android Emulator Plugin插件,可以启动已有模拟器或添加新的模拟器,本文案例中使用真机调试。

5、 构建,卸载手机中原程序 adb –s uninstall com.XXXXXX

6、 生成bulid.xml文件,-p后面跟工程所在的本地jenkins下路径

android update project -n *** c:\被测工程Job路径\workspace

7、 Ant进行编译程序,并安装到当前手机中

ant debug install -f c:\被测工程Job路径\workspace\build.xml

8、 构建后操作,本案例中构建完成后自动启动构建下一个测试Job

Bulid other projects,选择测试工程的Job.

打包测试工程

Android程序

本小节讲诉如何构建一个Android测试工程,包括邮件发送和测试报告展示。

1、 构建步骤1-7和Android程序章节一样,从略。

2、 本文案例中测试程序是通过命令行启动运行的,所以在此处增加一个批处理运行。P.S. adb shell am instrument -w -e class com.megafon.test.MegafonTest#testDeleteContact com.megafon.test/android.test.InstrumentationTestRunner ,此处是通过批处理来单独运行一个个的测试用例。避免了Junit3的无序执行的问题。

3、 删除Workspace中原来存在的测试报告文件,一般不删除也会覆盖。

如何让测试程序生成xml格式的测试报告,其他文章会重点介绍。

4、 从手机中拷贝测试报告,最终测试是在手机上运行,所以报告也生成在手机中,使用adb pull命令把测试报告全部拷贝到workspace下制定目录。

5、 构建后操作,发布测试报告,如果报告中包含附件,此处使用到JUnit Attachments Plugin插件。

6、 邮件通知,此处使用到Email-ext plugin插件,前面的默认,直接使用我们在系统管理里面设置的默认值。

7、 点击右下角高级按钮,可选择不同场景下发送邮件。

8、 测试结果展示,在本次构建的控制台可以显示当前所有的构建日志。

9、测试报告点击Test Result可以显示所有测试记录。

如何给jenkins用户设置权限

如何用Jenkins/Hudson创建真正的pipeline

这几天尝试用Jenkins/Hudson创建pipeline,发现网上的信息很少,所以写一篇跟大家分享。

在开始之前,得告诉你被我的标题给忽悠了,不是Jenkins/Hudson,只是Jenkins!如果你还在用Hudson,那么我建议你立即切换到Jenkins。理由就不说了,看看这个投票就行。(此中,我吃尽了苦头)

接下来,就让我们一步一步用Jenkins搭建真正的pipeline吧。

第一步

第一步,我们先创建一个最简单的pipeline。所谓pipeline,顾名思义,就是一个流水线,由多个步骤(steps)组成。每走完一步,就来到下一步。用Build Pipeline Plugin就可以很方便地实现。

实现的效果如下图:

上例中,UnitTest是我们的初始任务。UnitTest结束之后,自动触发AC Test。如果通过了AC Test,团队可以有选择地部署到任意测试环境。

在配置这个插件时,最重要的就是选择Initial Job。

然后,在每一个step(job)中选择downstream step。可以是自动触发(Build Other Projects),也可以选择手动触发(Manually Execute Downstream Project)。

第二步

第一步中我们实现了一个流水线,但这个只是看上去的流水线而已。在工厂的流水线中,历经流水线上游到下游的,应该是同一个产品。但上例中显然不是,Unit Test和Acceptance Test所运行的可能是不同版本的代码。

要让几个step的代码运行在同一个版本,可以使用一个叫做Parameterized Trigger Plugin。如下图:

选择把Subversion revision传到下面的steps,则接下来的Steps都会checkout同一个版本的代码。但这个也有限制,就是这些Steps必须有相同的subversion URL配置。

另外,你应该还注意到我们还传了另一个参数:PL_BUILD_NUMBER。这个参数会另有用途。

除了希望保持相同版本,我们很可能希望重用upstream step生成的artifact。比如,在AC Test step会生成一些artifacts,这些artifacts经过测试之后,希望可以用于Deploy步骤。一方面,这会节省重新构建artifact的时间;另一方面,这些artifact是已经经过测试的,是可用的,而重新构建生成的却是未经测试的,可用与否未知。(虽然他们应该是一样的,但谁知道呢。。)我们可以使用ArtifactDepolyerPlugin实现。

系统运维需要掌握哪些工具?

安装插件后,进入系统设置页面,配置如下:

上安全域设置为Servlet容器代理,实际操作发现Jenkins专有用户数据库也是可以的。

二、配置权限

在系统管理页面点击Manage and Assign Roles进入角色管理页面:

1、管理角色(Manage Roles)

选择该项可以创建全局角色、项目角色,并可以为角色分配权限。

如上图,分别创建了admin、anonymous两个全局角色,Online Program、test两个项目角色。

项目角色与全局角色的区别就是,项目角色只能管理项目,没有管理jenkins的权限配置。

添加项目角色时,需要制定匹配项目的模式,如上图中的Pattern,官方文档介绍该选项支持正则表达式,如“Roger-.”表示所有以Roger-开头的项目,“(?i)roger-.*”表示以roger-开头的项目并且不区分大小写,如以ABC开头的项目可以配置为“ABC|ABC.*”,也可以使用“abc|bcd|efg”直接匹配多个项目。

2、创建用户

在分配角色之前需要先创建用户。

在系统管理页面,点击管理用户:

点击新建使用者可以创建新用户,如果之前有项目与scm版本管理系统(如svn、git等)连接并获取源码构建过,jenkins会从svn中读取到一些用户信息,可以在查看用户菜单中看到这些用户:

点击用户id或名称都可以修改用户信息。

3、分配角色(Assign Roles)

选择Assign Roles可以为用户分配所属角色,可以分配全局角色和项目角色。

如上图,将不同的用户分别分配给不同的角色,这样用户就可以具有角色所拥有的权限。

三、深入了解

该插件从2011年10月发布1.1.2版本后就不再维护了,因此会有一些小问题,但不影响使用,比如在分配角色后点击保存按钮时有可能会发生异常,浏览器点击后退按钮后重新提交就可以操作成功。

另外如果配置失败导致不能登录,可以通过修改配置文件恢复初始设置。

首先了解一下配置文件。

进入jenkins安装目录,用户配置信息和角色配置信息都以配置文件的形式存储。

上图中users目录存放了各个用户的配置信息,每个用户都会创建与用户名相同的文件夹,文件夹中包含config.xml文件,配置示例如下:

<?xml version='1.0' encoding='UTF-8'?>

<user>

<fullName>admin</fullName>

<properties>

<jenkins.security.ApiTokenProperty>

<apiToken>EfowsOP9H5arYxMmuFrbPjjITgu/fjtvHib5okFJ9DmPTu/088cvHxlE9RHwVv+S</apiToken>

</jenkins.security.ApiTokenProperty>

<hudson.model.MyViewsProperty>

<views>

<hudson.model.AllView>

<owner class="hudson.model.MyViewsProperty" reference="://.cnblogs/.."/>

<name>All</name>

<filterExecutors>false</filterExecutors>

<filterQueue>false</filterQueue>

<properties class="hudson.model.View$PropertyList"/>

</hudson.model.AllView>

</views>

</hudson.model.MyViewsProperty>

<hudson.search.UserSearchProperty>

<insensitiveSearch>false</insensitiveSearch>

</hudson.search.UserSearchProperty>

<hudson.security.HudsonPrivateSecurityRealm_-Details>

<passwordHash>uAEYii:02e0cd0d78abf90e42b28e7d3d4fe64776ae8fa9500e379f2598cc65e1b0fb70</passwordHash>

</hudson.security.HudsonPrivateSecurityRealm_-Details>

<hudson.tasks.Mailer_-UserProperty>

<emailAddress>gaoliang@esrichina.cn</emailAddress>

</hudson.tasks.Mailer_-UserProperty>

</properties>

</user>

系统运维管理是许多公司在维护软件系统中非常重要的工作内容。今天,我们就一起来了解一下,在运维过程中都有哪些工具是需要我们掌握和使用的。

1、对服务器安全和监控,可以推荐一些开源工具吗?监控好像也就nagios,cacti,zabbix,还有其他可以推荐的吗?安全方面如何监控?

监控工具各有侧重点,zabbix同时支持snmp和自己的agent,也支持自定义模板,在大部分场景下都是不错的选择。

另外,不要把zabbix视为只能监控服务器信息,通过自定义模板,也可以监控业务层面的指标。安全监控分为主动检测,如TenableNessus,以及IDS、IPS。

2、Linux运维中,服务器版本都用什么版本?CentOS5还是CentOS6、Ubuntu?为什么选择这个版本?有做哪些测试?

目前我们以CentOS6.X为主。不同Linux分支各有特点,比如Ubuntu新版本发布较快,如果追求内核版本升级速度的话,可以考虑。CentOS一直是我们的主要Linux发行版,主要是考虑到它的稳定性以及熟悉程度高。

3、对于使用缓存有什么推荐吗?一般就Redis,Codis。还有那些比较好用的开源软件?

对于类似session-id这样的可以非持久存储的数据,可以考虑memcached,使用一致性哈希算法分布式存储。

4、做自动化发布,除了Jenkins持续集成工具,还有那些好用的工具呢?

目前我所知道的,一般都是Hudson或者Jenkins,后者是前者分支出来的。这些工具都有丰富的插件,灵活使用这些插件是关键所在。

5、问个MySQL问题,三个版本(MySQL(官方版本)、PerconaServer、MariaDB)您建议使用哪个版本,原因是?

我们团队一般使用的是官方版本。南邵北大青鸟认为主要是考虑到支持和生态。

6、服务器日志收集和分析有什么好工具推荐吗?ELK貌似有点复杂,不太会用,有其他的推荐么?

ELK确实是目前使用比较广泛的日志收集和分析的工具。虽然有些学习成本,但还是值得去研究和尝试的。