jekins部署(jenkins部署)

2025-01-13 10:11 - 立有生活网

jenkins用户权限配置

指路【Jenkins系列】如何搭建Jenkins环境。

Role-based Authorization Strategy

jekins部署(jenkins部署)jekins部署(jenkins部署)


jekins部署(jenkins部署)


实现需求

测试工程师需要一个通用用户,需要对测试环境的所有项目拥有只读的权限,并且可以构建

deploy_test:test环境所需用户

这里报错的内容是我配置文件的一处地方,于是查看,定位到时yml配置风格有一个空格导致没有对齐,文件读取错误,修改后正常启动,访问正常,收获的教训就是,改动任何一个地方都要仔细检查,一个小空格也会耽误大量的时间如果你已经安装过该插件,则在已安装一栏中可以看到该插件

点击系统比如你只是使用github代码变化来触发 静态扫描管理,点击Configure Global Security

点击系统管理,点击Ma and Assign Roles,如下图:

admin:超级,它拥有所有的全局权限

test:test环境的用户,它只可以看到全局的Overall面板

添加test的Overall的read权限原因:如果不添加的话,这些普通用户登录到jenkins则会提示:用户没有Overall/read权限(用户无法登陆)

下面我们来将定义好的规则分配给具体的用户,前面我们提到了系统用户: deploy_test(部署测试)

之前我们在test中定义了overall/read权限,现在将用户和roles关联起来,这样test用户就 拥有了改权限

怎样使用 MSBuild 自动编译和发布 NET 网站

2、编写前置脚本

很多.NET 程序员开发的时候,每次都需要涉及到各个环境的部署问题,但是手工作的话又容易出错,而且非常麻烦,我们今来讲解怎样实现自动编译和发布 .NET 网站。废话不多讲,先讲讲我的初步实现方案。

MSBuild 自动编译和发布 NET 网站步骤:

准备工具:GIT版本控制(gitlab),Jenkins, muild

2、安装jenkins开源工具。

3、Je1、安装git版本,提交代码。(svn好像也可以), 并生成ssh public key上传到gitlab的ssh key中(个人配置/SSH KEY)。nkins安装git plugin, Muild插件(Mar Jenkins/Ma Plugins)

5、添加对应.NET framework version MSBuild

Name: .NET4.0

Path to MSBuild:

%%Microsoft.NETFrameworkv4.0.30319MSBuild.exe

6、建立.NET项目文件,并添加MSBuild文件

建立一个解决方案nonsuch.sln,里面包含一个website: nonesuch.web.

在解决方案根目录建立一个xmRole Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目,将不同环境的权限进行区分。该插件可以很灵活的根据需求来进行划分权限,包括正则匹配等l文件,改名为: build.targets

jenkins拉到的代码是的, 可是访问时仍然是旧页面

系统用户

你在海关商品码里面如果查这个商品的终止日期是2011.12.31,说明原来使用的商品代码退税率发生变化了。新的退税率执行时间是从2012.1.1日起。你应该可以在海关商品码里找到新的代码和新的退税率。具体是什么商品代码列出来帮你查查看。 你这种情况可能是因为这笔业务在2011年底报关,在2012年出口。当时使jenkins配置 ftp目的:一般部署完成后都会对文件做下备份用的时旧的商品代码。2012年1月1日海关起用了新的海关商品码,但是这笔业务报关单上的代码仍然是旧的。如果是这种建议向海关要求修改报关单。如果没办法修改报关单,那么在了解这种商品的新代码后,用新代码录入,然后向税务打报告说明情况,请求税务人工挑过疑点。

四、 历史 文章指路

如何用Jenkins实现自动化部署svn更新代码

问题描述:在错误的路径拉取配置,原因是未成功解压压缩包。

Jenkins 配置svn自动部署

4、配置Jenkins中的git(Mar Jenkins/Configure System)在git栏中输入name和Path: git install pathcmdgit.exe

输入项目名称

在Ma Roles中有两种角色:Global roles用来分配全局策略,而 Project roles根据项目环境来分配项目权限

点击 OK

输入项目描述

配置构建保留天数和个数

输入svn 项目地址

配置每次 SCM 版本变更,构建

配置每次构建前,删除目录,放置构建产生的文件导致,svn 不能正常更新

添加构建:

cd /home/xxx/.jenkins/workspace/fft-bill-web/ && ant #打开工作目录,项目会被更新到这个目录下, 执行ant 命令进行打包

cd /home/xxx/.jenkins/workspace/fft-bill-web/release/ #打开war 目录,打好的包会被放到这个目录下

mv xxxx-1.0.0.0.war xxx.war #给war包重新命名

scp xxx.war user@192.xxx.xxx.xxx:/opt/tomcat-xxxx/webapps #把war包发送到指定目录

ssh user@192.xxx.xxx.xxx "cd /xxx/xxx/tomcat-xxxx/bin && sh shutdown.sh" #远程关闭 tomcat

ssh user@192.xxx.xxx.xxx "cd /xxx/xxx/tomcat-xxxx/bin && sh startup.sh" #远程命令启动 tomcat

12

34

56

12

34

56

到这里基本就配置完成了,点击立即构建,试一下。

后面还可以添加一些构建后的作步骤,例如发送邮件等等。

「自动化运维」从0到1 CICD自动化部署落地分享

DevOps的基础核心是CICD。

目录

DevOps(Dlopment和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

一、CICD

二、CICD实践过程

三、含泪踩坑

一、CICD

1、CICD定义

2、DevOps定义

二、CICD实践过程

1、起因

在我之前的团队,因为要切换全新业务线,需要为新业务搭建一套全新的环境,所有东西从0开始。

原先只是用于部署测试环境,后面决定一起部署生产环境,这个过程中我还造成了一个生产环境问题,好在当时的生产环境还未正式使用,未造成影响。

在当时挺害怕也挺有压力的,但是后面项目完整落地,平稳运行,我还是挺有成就感的,接下来我将整个项目过程完整的分享出来。

2、技术栈选型

首先进行技术栈选型,我们选择的是Jenkins,Jenkins当属业内持续集成老大哥,有着非常丰富的插件,也可以选择gitlab集成的CICD,因为我们还有其它的测试脚本需要集成,所以Jenkins对于我们来说是的选择;

其它的就结合团队项目情况进行搭建。

3、Jenkins应用部署实现流程

首先来梳理下整个项目的实现流程,主要分为Jenkins主和应用,是一对多的关系。

Jenkins主的主要负责项目部署前的工作,主要包含拉取代码,前端打包,后端打包,快照版检测,将压缩包和部署脚本发送到目标机器(即应用),远程调用目标机器上的部署脚本进行代码替换。

应用部署脚本执行过程有:解压压缩包,停止服务,覆盖代码,拉取disconf,应用目录分组赋权,重启服务,检查服务是否有进程,查看启动日志,删除/tmp目录下旧压缩包。

4、任务

4.1、搭建环境

Jenkins

Ansible

因为这个我没有实践成功的教程,所以在这里就不贴啦~

Men

3、编写应用部署脚本

4、Jenkins配置

指路【Jenkins系列】如何构建Jenkins Job。

新增Job,主要用于拉取代码,执行Men编译,执行app_build.sh,将压缩包通过ssh发送到目标机器,远程调用目标机器的deploy.sh。

三、含泪踩坑

踩坑1

解决方案:校验压缩包是否解压成功解压成功,并且在cd到正确的路径后添加&&(&&表示上一条命令执行成功再执行下一条命令)才进行拉取配置。

踩坑2

问题描述:项目没有正常停止,导致无法重新启动。

解决方案:虽然执行kill -9,但是未找到根本原因,因此加了一个检测机制,如果检测没有正常停止服务,则退出程序。

踩坑3

问题描述:生产部署脚本拉取了开发环境的的jdbc配置,原因是生产部署脚本写错了开发环境disconf的域名,当时我同时在搞开发生产环境的脚本,开发和生产是两套不同的脚本,一时混乱写错了,吓得一批,好在当时生产环境还没投产使用。

解决方案:为了避免后续这种情况的发生,而且是必须避免的,我们通过环境名称来判断走开发还是生产域名,这样就能保证脚本一致性了。

在这个项目实际遇到的问题远不止上面这几个,在这个实践过程中,我对整个应用部署流程有了更深的理解,平时方方面面的学习终于集中化起来进行实践了。

我习惯将学到的知识和遇到的问题记录起来,在写这篇文章的过程回过头来看,五味杂陈,原来我都经历了这些哈哈哈......

踩过的坑终究使我更加强大,带你见证呱呱本呱成长为参天大呱~

搞测试,不迷路

呱Nginx呱大王本呱带你飞!

jenkins FTP配置

下面如何让jenkins与目标主机实现免交互。

需要插件--> Publish over FTP

需要填写的配置还是比较少的,填写完成后点击下Test Configu如果jenkins部署到windows上 命令行可以用rem来注释ration按钮测试下自己的配置是否正确.

注意:

说明: 这个插件可以将构建的产物(例如:Jar,war)发布到FTP中去

需要插件--> Publish over FTP

在添加构建后作选择ftp插件:

解释下中间的这个 Remove prefix 配置,这个配置用于裁剪路径用的。比如我这里配置的是target,那么文件上传后所在路径就是/test/upload/springboot-test-github-0.0.1-SNAPSHOT.war。还是很好理解的

不过,这样设置,每次构建的产物还是会覆盖之首先,刚才jenkins配置ssh插件,注意填写远程信息的那里的remote directory这个地方指的发送到远程的哪个目录下。前的,没有达到想要效果。

生成的目录结构:/builds/2019/09/25/springboot-test-github-39/springboot-test-github-0.0.1-SNAPSHOT.war

jenkins上使用shell脚本nohup部署jar服务到remote

Node.js

先贴一下,我的jenkins里核心配置

remove_jar.sh脚本:

start_jar.sh脚本内容:

remove_jar.sh 和 start_jar.sh 在jenkins上,需要将这两个shell在0.0.0.0(不能暴露)的远端去执行

没错,客官您一眼就看出来了,觉得简单的不值一提吧,先别着急,点击构建。对搜这个问题的小菜鸡来说这里面也是大有文章,听我一一道来。

1、个问题:ps -ef|grep xxx.jar查到多余的pid

已经解决不方便复现了,因此就描述一下就行了。

原因:shell里的这个命令也是通过bash在远程执行的,所以找到的别的 无关紧要 的pid其实是bash,因此在grep是除了排除grep本身( grep -v grep )外还要排除bash( grep -v bash )

命令是:

2、远程执行脚本,里面有nohup ja -jar,发生错误: nohup: failed to run command ‘ja’: No such file or directory

这是因为nohup时ja环境变量没有读到,处理方式就是在nohup执行前加入

3、其他思路

4、第二条说jdk的路径因为每个服务企业都不一样,所以需要手动传改,这一点已经在脚本上做了修改,启动脚本上携带的个参数就是jdk的安装路径

这两个也都是比较好的思路,以后肯定有机会体验的,本篇到此。

ps现象:在0.0.0.0上行 ps -ef | grep alk-wxapi-test.jar | grep -v grep | awk '{print $2}' 只能查到一个pid,但是把这句话放到shell脚本里,在本地使用命令上远端执行,就会找到3个pid,而且kill 时提示失败的错误。 -ef |grep -v 在shell sh 脚本中貌似无效?

linux下搭建zookeeper集群遇到的坑

nohup: cannot run command异常解决

Zookeeper not starting, nohup error

怎样判断jenkins创建的自动部署测试环境的job是否成功了

Jenkins 环境搭建好之后,就需要配置项目了,这里也介绍一下。

Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满足各式的集成需求。

打开jenkins系统管理,单击管理插件,找到可选插件,输入插件名称,然后点击直接安装即可

因为手里项目所用到的稳定性和性能测试工具每天手动部署到各台windows机器上比较浪费时间,所以这里使用jenkins用于部署测试工具到各个测试机上运行。整套环选择:构建一个自由风格的软件项目境需要一个中心和若干测试机器组成的sle,这就是jenkins的Master/Sle结构,如下所示:

在我们下面的使用中,和sle是通过jnlp协议来通讯的。

Master机器:

我们需要在我们的机器上安装jenkins,没有什么特殊说明,注意的是安装包方式同样可以通过运行安装目录下的jenkins.war来启动jenkins,而默认情况下安装后会安装一个名为Jenkins的自动运行的服务。

jekins 插件安装后 增加构建后作步聚里没有

1.系统管理->管理插件->可选插件->搜索“Deploy to container Plugin”,勾选插件直接安装,等着Jenkins自动安装完成。此时我们打开我们之前新建的项目选择“增加构建后的作”中增加了一项“Deploy war/ear to a container",将我们的war和ear工程部署到容器。

2.我们添加一个depl在该页面中选择授权策略为:Role-Based Strategyoy war/ear to a container选择,Jenkins中构建后作多出一个发布选项

WAR/EAR files:是wa安装完后访问jenkins的根目录,默认情况下端口是8080(如果要使用其他端口启动,可以通过命令行”Ja –jar Jenkins.war –Port=80”的方式修改),通过”系统管理”-”管理”-“新建”r包的相对路径

content path:tomcat的发布路径,即使用localhost/(content path设置的名字)来访问选择用户名&密码 #如果没有就,点击add 自己添加一个项目.

contaners :发布到的容器,主要可发布到tomcat、jboss、GlassFish

deploy on failure:发生错误的时候是否发布到tomcat

3.点击add contaners 添加发布的容器,我们这里要发布到tomcat,所以我这里添加的是tomcat

Docker 容器中部署项目后一直重启原因排查

Jenkins应用部署流程图

docker部署的的项目,在jekins上启动后显示启动成功,但是服务始终发现不了,也无法使用,怀疑项目没有真正启动成功。于是使点击新建用 docker ps 命令 查看,如下图

Ansible是批量运维工具,通过编写yaml脚本,可以方便实现批量管理多台机器,并且Ansible是比较轻量级应用,很容易上手;

容器已经存在,但是在不停的重启之中,怀疑是不是内存不足的原因,使用 docker inspect --formate container-name 命令 查看详情情况:

机械设计与制造审稿费 机械设计与制造期刊审

大家好我是小栢,机械设计与制造审稿费,关于机械设计与制造期刊审稿周期很多人还不知道,那么现在让我们一起来看看吧! 1、恩,还没听过……除非你的级别够,是个知名学者之类的……一个···

阳光明媚的动物打一个生肖_阳光明媚的动物属

阳光明媚一线天,家出美女五福临指什么生肖 这个生肖是蛇。阳光明媚一线天,贵为皇家九天艳。家出美女杨贵妃,妖魔怪蛇在先。 阳光明媚的动物打一个生肖_阳光明媚的动物属什么生肖 阳光明媚···

偏偏喜欢你歌词改编_偏偏喜欢你,歌词

偏偏喜欢你是什么意思? 偏偏喜欢你这首歌表达的意思如下: 偏偏喜欢你歌词改编_偏偏喜欢你,歌词 偏偏喜欢你歌词改编_偏偏喜欢你,歌词 偏偏喜欢你歌词改编_偏偏喜欢你,歌词 歌词的含义是在这···