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

相关推荐
fuyongliang12330 分钟前
linux Nginx服务配置介绍,和配置流程
运维·服务器·网络
UNbuff_02 小时前
Linux bzip2 命令使用说明
linux·运维·服务器
IOT-Power3 小时前
Ubuntu下把 SD 卡格式化为 FAT32
linux·运维·ubuntu
观测云3 小时前
Jenkins 可观测最佳实践
jenkins
衍余未了3 小时前
centos9 docker启动不起来,docker启动发生堵塞问题!
运维·docker·容器
LJC_Superman4 小时前
Web与Nginx网站服务
运维·服务器·前端·网络·数据库·nginx·vim
proware4 小时前
昇腾310i Pro固件说明
linux·运维·服务器
一念一花一世界4 小时前
DevOps实战(2) - 使用Arbess+GitPuk+Docker实现Java项目自动化部署
jenkins·tiklab·arbess·开源cicd工具·docker构建部署
烟雨书信4 小时前
安全运维和系统安全
运维·安全
tianyuanwo6 小时前
Docker Registry 实现原理、适用场景、常用操作及搭建详解
运维·docker·容器·registry