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不会访问成功.

相关推荐
TsengOnce33 分钟前
Docker 安装 禅道-21.2版本-外部数据库模式
运维·docker·容器
永卿0011 小时前
nginx学习总结(不包含安装过程)
运维·nginx·负载均衡
Stark、1 小时前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
人类群星闪耀时1 小时前
大模型技术优化负载均衡:AI驱动的智能化运维
运维·人工智能·负载均衡
新时代农民工--小明2 小时前
前端自动化部署更新,自动化打包部署
运维·前端·自动化
一个不秃头的 程序员3 小时前
服务器上加入SFTP------(小白篇 1)
运维·服务器
fnd_LN3 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
MorleyOlsen3 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
周周的奇妙编程3 小时前
基于鲲鹏服务器的打砖块小游戏部署
运维·服务器
大熊程序猿3 小时前
airflow docker 安装
运维·docker·容器