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:2a10$LxMm9HqAI/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不会访问成功.

相关推荐
冰封之寂4 小时前
Docker 资源管理终极指南:CPU、内存与 IO 的精细化控制
linux·运维·服务器·docker·云计算
小柯南敲键盘5 小时前
图片翻译API接入与自动化实现指南
运维·python·自动化
952366 小时前
Docker - 基础
运维·后端·docker·容器
Promise微笑6 小时前
智能激光清障仪选型指南:高效运维与安全保障的关键考量
运维·安全
Code_Ignis6 小时前
docker国内可用源(持续维护)
运维·docker·容器
一叶龙洲7 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
酷可达拉斯7 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
我星期八休息10 小时前
网络编程—UDP与TCP
linux·运维·网络·数据库·网络协议·tcp/ip·udp
Jerry小杰13 小时前
运维神器|单端口搞定多台内网SSH!frp端口复用终极教程
运维·ssh
Python私教13 小时前
Blender模型导入Godot完整教程:GLB、BLEND与继承场景怎么选
运维·godot·blender