jenkins 使用 maven 方式部署 shop-boot java 工程

基础配置

jenkins 插件源修改

进入/home/devops/.jenkins/updates目录

[devops@devops updates]$ pwd
/home/devops/.jenkins/updates
[devops@devops updates]$ ls
default.json  hudson.tasks.Maven.MavenInstaller
[devops@devops updates]$ 

执行

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

进入jenkins的插件管理,病设置Update Site,网址为:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

重启tomcat生效

汉化插件

在这里插入图片描述

Role-based Authorization Strategy 插件

此插件暂未启用
在这里插入图片描述

凭据插件

在这里插入图片描述
进入凭据配置页面【有些版本首页没有凭据菜单,可以手动输入地址进入】
在这里插入图片描述

gitee 插件

帮助文档: https://gitee.com/help/articles/4193

git ssh 多用户配置

将来有可能使用gitlab

删除全局git用户信息

多用户情况下,尽量不要设置全局用户信息

# 添加全局用户信息
git config --global user.name "用户名"
git config --global user.email "邮箱"
#删除全局用户信息
git config --global --unset user.name
git config --global --unset user.email

生成 key

$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_github.
Your public key has been saved in id_rsa_github.pub.
The key fingerprint is:
SHA256:K8ZzHA4rrhgHlv7qyP+dAmvpQIq+jPUpbMdjXZncAnE [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|      . E        |
|       o         |
|  .   .          |
|.+    .oS+       |
|*. . . =*o.      |
|++o.=.*.=.       |
|*=**==o+.        |
|=OBO=o.o         |
+----[SHA256]-----+

使用同样的方式生成另一个Key,并将key添加至相应网站

配置 config

文件位置 ~/.ssh/config [注意不可有注释]

Host gitee.com
    User sanren2016
    Hostname gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitee

将密匙加入密匙管理器

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa_github
Enter passphrase for /c/Users/Administrator/.ssh/id_rsa_github:
Identity added: /c/Users/Administrator/.ssh/id_rsa_github (/c/Users/Administrator/.ssh/id_rsa_github)
 
$ ssh-add ~/.ssh/id_rsa_gitlab
Enter passphrase for /c/Users/Administrator/.ssh/id_rsa_gitlab:

Bad owner or permissions on .ssh/config的解决

chmod 600 config

克隆后的操作

git config user.name "xxx"
git config user.email "xxx"

手动部署项目

gitee 新建项目

https://gitee.com/sanren2016/shop-boot

添加一个简单接口,参见:https://gitee.com/sanren2016/shop-boot/commit/ce3771c208b3fbaaa2f577d78ff9669279457dc1

spring boot 脚本启动

启动脚本与配置文件

  • 目录结构
[stest@shopboot shop-boot]$ pwd
/home/stest/shop-boot
[stest@shopboot shop-boot]$ tree
.
├── conf
│   ├── application.yml
│   └── logback-spring.xml
├── logs
├── sbin
│   └── control.sh
└── shop-boot.jar

3 directories, 4 files
[stest@shopboot shop-boot]$ 
  • application.yml
server:
  port: 8091
  servlet:
    context-path: /


logging:
  level:
    org.springframework.web.servlet.DispatcherServlet: DEBUG
    com.laolang.shop: DEBUG
  config: file:/home/stest/shop-boot/conf/logback-spring.xml
  path: /home/stest/shop-boot/logs
  • logback-spring.xml
server:
  port: 8091
  servlet:
    context-path: /


logging:
  level:
    org.springframework.web.servlet.DispatcherServlet: DEBUG
    com.laolang.shop: DEBUG
  config: file:/home/stest/shop-boot/conf/logback-spring.xml
  path: /home/stest/shop-boot/logs
[stest@shopboot shop-boot]$ cat conf/logback-spring.xml 
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds">

    <!--<include resource="org/springframework/boot/logging/logback/base.xml" />-->

    <contextName>logback</contextName>
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
    <!--    <property name="log.path" value="/home/laolang/gitosc/km-boot/km-boot/logs/km-bbs/dev"/>-->

    <springProperty name="LOG_PATH" source="logging.path" defaultValue="../logs/shop-boot" />
    <property name="LOG_FILE" value="shop-boot" />

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>


    <!--输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!--            <level>info</level>-->
            <level>debug</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--日志输出到文件-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>150</maxHistory>
        </rollingPolicy>
    </appender>

    <!--开发环境:打印控制台-->
    <!--<springProfile name="dev">-->
    <!--<logger name="com.laolang" level="debug"/>-->
    <!--</springProfile>-->

    <root level="debug">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>
  • console.sh
#!/bin/bash
# 不添加此行,远程执行脚本环境变量不生效
source /etc/profile
APP_NAME=shop-boot.jar
OPTIONS=-Dspring.config.location=/home/stest/shop-boot/conf/application.yml

#使用说明
usage() {
    
    
	echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
	exit 1
}

# 检查程序是否在运行
is_exist(){
    
    
	pid=$(pgrep -f $APP_NAME)
	# 如果不存在返回1,存在返回0
	if [ -z "${pid}" ]; then
		return 1
	else
		return 0
	fi
}

# 启动方法
start(){
    
    
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is already running. pid=${pid}. "
	else
		nohup java -jar $OPTIONS  ../$APP_NAME > /dev/null 2>&1 &
		echo "${APP_NAME} is running..."
	fi
}

# 停止方法
stop(){
    
    
	is_exist
	if [ $? -eq "0" ]; then
		kill -9 $pid
		echo "${APP_NAME} is stoped"
	else
		echo "${APP_NAME} is not running"
	fi
}

# 输出运行状态
status(){
    
    
	is_exist
	if [ $? -eq "0" ]; then
		echo "${APP_NAME} is running. Pid is ${pid}"
	else
		echo "${APP_NAME} is not running"
	fi
}

# 重启
restart(){
    
    
	stop
	start
}

# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
	"start")
		start
		;;
	"stop")
		stop
		;;
	"status")
		status
		;;
	"restart")
		restart
		;;
	*)
		usage
		;;
esac

ssh 免密远程启动

客户端: 192.168.1.110 的 devops 用户
服务端: 192.168.130 的 stest 用户
偶现服务器重启后jenkins的ssh免密无效的情况,检查 ~/.ssh/config 是否配置了相应的密匙,重新ssh-add 密匙文件即可

  • [devops] 生成ssh key【注意保存路径】
[devops@devops .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/devops/.ssh/id_rsa): /home/devops/.ssh/id_rsa_ssh
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/devops/.ssh/id_rsa_ssh.
Your public key has been saved in /home/devops/.ssh/id_rsa_ssh.pub.
The key fingerprint is:
SHA256:M7h2Zemwk/YraLFl6cEK8CcmljUJja8JKgWUE0/mVz8 devops@devops
The key's randomart image is:
+---[RSA 2048]----+
|.oo=   .         |
|.oB . . .        |
| ..= o   E       |
|. o *  .  ..     |
|.o B ...S.+      |
|o * = o.*X       |
|.. o +oO*..      |
|     .=ooo       |
|     .   .o.     |
+----[SHA256]-----+
[devops@devops .ssh]$ 
  • [devops] 添加至测试服务器 【此时需要输入密码】
[devops@devops .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa_ssh.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/devops/.ssh/id_rsa_ssh.pub"
The authenticity of host '192.168.1.130 (192.168.1.130)' can't be established.
ECDSA key fingerprint is SHA256:628odOWvc8itmu8bxFYK5lY3fN0WZ47TICl3y8TRiz8.
ECDSA key fingerprint is MD5:eb:d7:84:07:d4:e8:7e:8a:82:7d:20:81:2f:e8:35:2c.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

[devops@devops .ssh]$ 
  • [devops] ssh key 添加至密匙管理器
[devops@devops .ssh]$ ssh-agent bash
[devops@devops .ssh]$ ssh-add ~/.ssh/id_rsa_ssh
Identity added: /home/devops/.ssh/id_rsa_ssh (/home/devops/.ssh/id_rsa_ssh)
[devops@devops .ssh]$ 
  • [devops] 配置 .ssh/config

此时 ~/.ssh/config 文件内容如下

Host gitee.com
    User sanren2016
    Hostname gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitee

Host 192.168.1.130
    User stest
    Hostname 192.168.1.130
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_ssh
  • [stest] 修改 .ssh 与 authorized_keys 权限
[stest@shopboot ~]$ chmod -R 700 .ssh/
[stest@shopboot ~]$ chmod 600 .ssh/authorized_keys 
[stest@shopboot ~]$ 
  • [devops] 测试远程启动
[devops@devops ~]$ ssh [email protected] "cd /home/stest/shop-boot/sbin; ./control.sh restart"
shop-boot.jar is not running
shop-boot.jar is running...
[devops@devops ~]$ 

maven 项目

此方式只是简单记录,实际开发过程不会采用这种方式

安装插件

在这里插入图片描述

新建项目

在这里插入图片描述

项目配置如下

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46533764/article/details/109131406