jenkins实战(1)

一, Jenkins官网介绍: Jenkins

持续集成、持续部署

下载地址:Jenkins download and deployment

提供两种类型: LTS(长期版)和Weekly(最近一周的版本)

注: 必须是Java8及以上版本(官网针对这一点有做说明)

二, 安装

下载war包,java -jar XXX --httpPort=8081 或

下载war包放在tomcat下的web-app目录下运行tomcat 或

docker安装部署: docker pull jenkins/jenkins

1, 创建本地目录: sudo mkdir -p /Users/devops/jenkins

2, 对目录开放docker进程操作的完全读写的权限: sudo chmod 777 /Users/devops/jenkins

3, docker启动部署: docker run -itd -p 9003:8080 --restart always -v /Users/devops/jenkins:/var/jenkins_home --name jenkins jenkins/jenkins:latest

执行完后,打开地址: http://localhost:9003访问页面

在指定路径上寻找管理员密码输入,然后进行登录

三,Jenkins的工作流程

四, 系统管理设置

1, 设置时区: 系统管理-》脚本命令行-》System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

2, 安装插件: 系统管理-》插件管理-》

【Maven Integration】、【Pipeline Maven Integration】、【Gitlab】、【Gitlab hook】、【SSH】、【Publish Over SSH】进行安装,安装完后重启

说明: 安装Publish Over SSH插件的原因:因为本方式是使用docker启动jenkin服务,所以在jenkins后续执行构建任务时候,需要在build成功后,将服务的jar包[以spring boot]服务为例,需要将jar包拷贝到Dockerfile所在服务器的指定目录,进行微服务的启动;所以,此处需要配置SSH服务器的连接,意思就是在jenkins的任务结束后,去执行指定的服务器上的shell命令,做spring boot或cloud服务的镜像的构建,容器的运行,等一系列的事情

3, 如果忘记了账号密码,在docker里面可通过这个目录查找:cd /var/jenkins_home/users,然后找到lizhihao_XXX的目录进入,里面有个config.xml文件进入:cat config.xml,然后有个标签passwordHash即为加密后的密码,初始密码为:123456,加密后为#jbcrypt:$2a10LxMm9HqAI/R4z7gL57qTouW/Mrz8uSaBpCGKvKc7K6dK.g/0yk/uq,可修改密码后,重启容器即可.

重启Jenkins容器:docker ps 找到容器id,docker restart 容器id

五, 创建任务和功能介绍

5.1 源码管理设置:

注: 下面还可以指定一个分支.

创建一个maven项目,这里使用git进行源码进行管理,需要注意的是,如果使用docker进行jenkins安装,需要进入jenkins中,然后生成ssh key,即 进入容器后,执行:ssh-keygen -t rsa,一路回车直到生成公私钥完毕.

将生成的公钥添加到github上后,jenkins就能够访问到代码了.

然后在jenkins设置中,添加git的凭证,这里我们使用账号密码(公钥或者私钥不行),

参照:jenkins配置git报错returned status code 128_以root用户运行jenkins容器 报 git config remote.origin.url -CSDN博客

5.2 构建环境

在post Steps中执行shell脚本:

#!/bin/bash #输入Maven打包后的项目名称 app=magic-api-demo-0.0.1-SNAPSHOT #项目移动的目的地址 path=/user/local echo this is app : app #若项目已启动,杀死旧进程 api_pid=\`ps -ef \| grep "app.jar" | grep -v grep | awk '{print $2}'` echo api_pid = api_pid if \[ "api_pid" != "" ]; then echo kill api kill -9 api_pid echo sleep 3s sleep 1 echo sleep 2s sleep 1 echo sleep 1s sleep 1 fi #将jar包从jenkins工作空间中移动到指定路径下 #mv /var/jenkins_home/workspace/magic-api-demo/target/app.jar $path #cd $path cd /Users/lizhihao/.jenkins/workspace/magic-api-demo/target #防止进程被杀死 BUILD_ID=dontKillMe #后台进程形式启动项目,日志文件为out.log nohup java -jar $app.jar >> out.log 2>&1 & echo $app start success exit 0

注: 在使用docker部署jenkins时,jenkins的工作空间目录要填写宿主机的目录,对应的实际jar包的位置也填宿主机的,最后out.log文件存放在target目录中与jar包平级.

5.3 配置Webhook,

将该url配置到项目settings中的webhook中:

需要注意的是,该ip应该为公网的ip,内网的ip或者localhost不会访问成功.

相关推荐
Elastic 中国社区官方博客35 分钟前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
DC_BLOG1 小时前
Linux-Nginx虚拟主机
linux·运维·nginx
坐公交也用券1 小时前
使用Python3实现Gitee码云自动化发布
运维·gitee·自动化
1900431 小时前
linux复习5:C prog
linux·运维·服务器
朝九晚五ฺ2 小时前
【Linux探索学习】第十五弹——环境变量:深入解析操作系统中的进程环境变量
linux·运维·学习
ernesto_ji3 小时前
Jenkins下载安装、构建部署到linux远程启动运行
linux·servlet·jenkins
施努卡机器视觉3 小时前
电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现
运维·机器人·自动化
徐浪老师3 小时前
深入实践 Shell 脚本编程:高效自动化操作指南
运维·chrome·自动化
King's King3 小时前
自动化立体仓库:详解
运维·自动化
东隆科技3 小时前
晶圆测试中自动化上下料的重要性与应用
运维·自动化