实现Jenkins自动发包配置

参考抖音:Java不良人 其中的视频演示代码

不推荐把jenkins端口一直开放,推荐使用时候放开(版本不太新,避免漏洞攻击)

bash 复制代码
[root@VM-4-12-centos soft]# docker-compose -v
Docker Compose version v2.19.1

docker-compose.yml 如下

bash 复制代码
version: '3.1'
services:
  jenkins:
    image: jenkins/jenkins:2.403
    volumes:
      - ./data/jenkins/:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
    ports:
    	# 8088为访问端口
      - "8088:8080"
      # 8081为你要启动的jar服务端口
	  - "8081:8081"
    expose:
      - "8080"
      - "50000"
    privileged: true
    user: root
    restart: always
    container_name: jenkins
    environment:
      JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties' 

找到 docker-compose.yml 下面执行

bash 复制代码
[root@VM-4-12-centos soft]# docker-compose up -d
查看启动
[root@VM-4-12-centos soft]# docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED       STATUS       PORTS                                                                                             NAMES
c0cedad006a1   jenkins/jenkins:2.403   "/usr/bin/tini -- /u..."   9 hours ago   Up 9 hours   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp, 50000/tcp, 0.0.0.0:8088->8080/tcp, :::8088->8080/tcp   jenkins

在浏览器打开Jenkins端口

查找密码

bash 复制代码
cat /var/lib/jenkins/secrets/initialAdminPassword

添加自己的用户

选择插件

选择"Install suggested plugins"安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。

参考文章:使用docker-compose部署jenkins

配置Java环境

配置maven环境

bash 复制代码
wget https://mirrors.aliyun.com/apache/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz

#将容器中的文件拷贝出来
sudo docker cp c0cedad006a1:/opt/apache-maven-3.9.4/conf/settings.xml /soft/
#将容器中的文件拷贝回去
sudo docker cp /soft/settings.xml  容器ID:/opt/apache-maven-3.9.4/conf/

修改 maven settings.xml 仓库镜像地址为阿里云镜像(否则下载依赖会很慢)

使用修改maven-settings 阿里云镜像

bash 复制代码
<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 	<mirrorOf>central</mirrorOf>
</mirror>
原文链接:https://blog.csdn.net/u012723183/article/details/129347151

编写自己代码上gitee

遇到 jar运行报错no main manifest attribute

使用下面代码解决

bash 复制代码
 <plugin>
    <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <version>${spring-boot.version}</version>
         <configuration>
             <includeSystemScope>true</includeSystemScope>
             <fork>true</fork>
         </configuration>
         <executions>
             <execution>
                 <goals>
                     <goal>repackage</goal>
                 </goals>
             </execution>
         </executions>
     </plugin>

错误代码如下

bash 复制代码
   <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${spring-boot.version}</version>
        <configuration>
            <mainClass>com.example.demo.DemoApplication</mainClass>
            <skip>true</skip>
        </configuration>
        <executions>
            <execution>
                <id>repackage</id>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

构建后的执行shell命令如下

bash 复制代码
#!/bin/bash

# 获取进程PID
PID=$(ps -ef | grep "demo-0.0.1-SNAPSHOT.jar" |grep -v grep|awk '{print $2}')

# 杀死进程
if [ -n "$PID" ]; then
  kill -9 $PID
  echo "结束进程Process $PID killed" 
else
  echo "没有找到指定进程"
fi
cd /var/jenkins_home/workspace/demoss/target
chmod 755 demo-0.0.1-SNAPSHOT.jar 
BUILD_ID=dotkillme nohup java -jar demo-0.0.1-SNAPSHOT.jar &
echo "启动进程"

Gitee + Jenkins 实现自动触发构建

参考文章

bash 复制代码
https://juejin.cn/post/7003226813904191496


优秀文章推荐

https://blog.csdn.net/u012723183/article/details/129347151

相关推荐
Shepherd06191 小时前
【Jenkins实战】Windows安装服务启动失败
运维·jenkins
Biomamba生信基地2 小时前
Linux也有百度云喔~
linux·运维·服务器·百度云
new_abc2 小时前
Ubuntu 22.04 ftp搭建
linux·运维·ubuntu
U12Euphoria2 小时前
java项目-jenkins任务的创建和执行
java·servlet·jenkins
鹿鸣天涯2 小时前
‌华为交换机在Spine-Leaf架构中的使用场景
运维·服务器·网络
小白也有IT梦2 小时前
域名绑定服务器小白教程
运维·nginx
有梦想的咕噜3 小时前
Secure Shell(SSH) 是一种网络协议
运维·网络协议·ssh
dntktop3 小时前
免费,WPS Office教育考试专用版
运维
苹果醋33 小时前
C语言 strlen 函数 - C语言零基础入门教程
java·运维·spring boot·mysql·nginx
loong_XL4 小时前
automa 浏览器自动化工具插件
运维·自动化