实现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

相关推荐
小徐Chao努力44 分钟前
【centos】经常使用的脚本
linux·运维·centos
rainFFrain3 小时前
日志与策略模式
linux·运维·vscode·策略模式
无情白6 小时前
k8s运维面试总结(持续更新)
运维·面试·kubernetes
H1346948907 小时前
企业服务器备份软件,企业服务器备份的方法有哪些?
运维·服务器·负载均衡
2401_897930068 小时前
Kibana 连接 Elasticsearch(8.11.3)教程
大数据·elasticsearch·jenkins
塔能物联运维8 小时前
塔能科技:精准节能,擎动工厂可持续发展巨轮
大数据·运维
小王努力学编程9 小时前
【Linux系统编程】进程概念,进程状态
linux·运维·服务器·c++
liuliu032310 小时前
戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
linux·运维·ubuntu
DADIAN_GONG11 小时前
incomplete command on Huawei switch
linux·运维·华为
水星灭绝11 小时前
orangepi zero烧录及SSH联网
运维·ssh