当前位置:   article > 正文

GitLab+Jenkins 搭建_gitlab社区版15.9.8配什么版本的jenkins

gitlab社区版15.9.8配什么版本的jenkins

文章目录

前言

本案例安装 gitlab、jenkins、并部署springboot应用程序,所以准备了3台服务器。

服务器1:安装gitlab

服务器2:安装jdk、maven、git、jenkins
因为jenkins需要jdk、maven、git

服务器3:安装jdk。
jenkins自动部署的springboot应用程序在服务器3

注意:以上springboot项目中用到的java版本与服务器2,服务器3中安装的一致
我虚拟机模拟搭建时版本如下:

  • jdk : jdk-11.0.16.1
  • maven : 3.8.6
  • jenkins : Jenkins 2.361.4 LTS
  • springboot : 2.7.1

一、安装gitlab

英文官网
中文gitlab官网

1、手动安装gitlab

官网安装

1)查看内存是否符合条件

内存大于4G

[root@VM-16-2-centos ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7725         231        7262           0         231        7260
Swap:            0           0           0
  • 1
  • 2
  • 3
  • 4

2)安装依赖

yum install -y curl policycoreutils-python openssh-server perl
  • 1
systemctl enable sshd
  • 1
systemctl start sshd
  • 1

3)配置镜像

curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
  • 1

4)安装gitlab

EXTERNAL_URL="http://192.168.109.144" yum install -y gitlab-jh
  • 1

在这里插入图片描述
在这里插入图片描述

5)启动 访问

gitlab-ctl start
  • 1

2、docker安装gitlab

1)安装gitlab

restart aways:开机自启动

docker run --detach \
 --hostname 192.168.109.144 \
 --publish 443:443 --publish 80:80 \
 --name gitlab \
 --restart always \
 --volume $GITLAB_HOME/config:/etc/gitlab:z \
 --volume $GITLAB_HOME/logs:/var/log/gitlab:z \
 --volume $GITLAB_HOME/data:/var/opt/gitlab:z \
 --shm-size 256m \
 registry.gitlab.cn/omnibus/gitlab-jh:latest
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

查看镜像

[root@localhost ~]# docker images
REPOSITORY                             TAG       IMAGE ID       CREATED      SIZE
registry.gitlab.cn/omnibus/gitlab-jh   latest    ead385313244   2 days ago   3.03GB
  • 1
  • 2
  • 3

2)启动gitlab

docker start gitlab
  • 1

整体如下:

[root@localhost ~]# docker start gitlab
gitlab
  • 1
  • 2

3)查看容器,进入容器,查看密码

docker ps -a
  • 1
docker exec -it gitlab /bin/bash
  • 1
cat /etc/gitlab/initial_root_password
  • 1

整体如下:

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE                                         COMMAND             CREATED         STATUS                     PORTS                                                                              NAMES
c2c7bd2c196a   registry.gitlab.cn/omnibus/gitlab-jh:latest   "/assets/wrapper"   6 minutes ago   Up 6 minutes (unhealthy)   0.0.0.0:80->80/tcp, :::80->80/tcp, 22/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   gitlab
[root@localhost ~]# docker exec -it gitlab /bin/bash
root@192:/# cd /etc/gitlab/
root@192:/etc/gitlab# ll
total 184
drwxrwxr-x. 3 root root    268 Nov 16 09:28 ./
drwxr-xr-x. 1 root root     66 Nov 16 09:27 ../
-rw-------. 1 root root  19349 Nov 16 09:28 gitlab-secrets.json
-rw-------. 1 root root 138956 Nov 16 09:27 gitlab.rb
-rw-------. 1 root root    749 Nov 16 09:28 initial_root_password
-rw-------. 1 root root    513 Nov 16 09:27 ssh_host_ecdsa_key
-rw-r--r--. 1 root root    182 Nov 16 09:27 ssh_host_ecdsa_key.pub
-rw-------. 1 root root    411 Nov 16 09:27 ssh_host_ed25519_key
-rw-r--r--. 1 root root    102 Nov 16 09:27 ssh_host_ed25519_key.pub
-rw-------. 1 root root   2610 Nov 16 09:27 ssh_host_rsa_key
-rw-r--r--. 1 root root    574 Nov 16 09:27 ssh_host_rsa_key.pub
drwxr-xr-x. 2 root root      6 Nov 16 09:28 trusted-certs/
root@192:/etc/gitlab# cat initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: bvWqJ2Dg+eOhI+E5Lu6695yoPfJoiwoBH+4aLsXnQM4=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
root@192:/etc/gitlab# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

进入容器查看默认生成的密码密码存在/etc/gitlab/initail_root_password中

4)登录并修改密码

访问网址:http://192.168.109.144
用户名:root
密码:密码存在/etc/gitlab/initail_root_password中,24小时后会过期,所以登陆后需要修改密码。
开始访问可能会出现如下界面显示502,因为gitlab第一次响应时间有点慢,等候几分钟刷新即可
在这里插入图片描述

在这里插入图片描述
开始修改密码:主菜单——》管理员——》用户——》编辑密码——》保存更改
在这里插入图片描述
在这里插入图片描述

5)重新登录验证新密码是否生效

6)问题总结:

第一次登录时默认密码可能会登录失败
解决方案:
①进入容器
②重置密码gitlab-rake “gitlab:password:reset[root]”
输入两次密码即可,然后重新到浏览器页面登录

[root@localhost yum.repos.d]# docker ps -a
CONTAINER ID   IMAGE                                         COMMAND             CREATED          STATUS                             PORTS                                                                              NAMES
66127064ebfa   registry.gitlab.cn/omnibus/gitlab-jh:latest   "/assets/wrapper"   24 seconds ago   Up 23 seconds (health: starting)   0.0.0.0:80->80/tcp, :::80->80/tcp, 22/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   gitlab
[root@localhost yum.repos.d]# docker exec -it gitlab /bin/bash
root@192:/# gitlab-rake "gitlab:password:reset[root]"
Enter password:
Confirm password:
Password successfully updated for user with username root.
root@192:/# 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

二、IDEA新建本地项目关联远程本地仓库和git仓库

1、创建本地项目,配置maven

2、创建本地Git仓库

选择VCS——》Create Git Repository——》跳出弹框选择需要版本控制的项目,ok
在这里插入图片描述
在这里插入图片描述

3、将本地项目提交到本地仓库

在这里插入图片描述

4、连接远程仓库

在这里插入图片描述

5、推送代码push

在这里插入图片描述

总结:遇到的问题

1)关联远程仓库时遇到如下问题:

在这里插入图片描述
原因:
解决:
将当前用户加入到gitlab本项目仓库权限中
进入项目跟目录.git路径下编辑config文件
在这里插入图片描述

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	symlinks = false
	ignorecase = true
[remote "origin"]
	url = http://zhangsan:qwedsa123@192.168.109.145/zhangsan/gitlab-test2.git
                fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

三、安装Jenkins

Jenkins官网

1、安装jdk

1)yum安装

yum search java|grep jdk # yum查看jdk版本
  • 1
yum install -y java-11-openjdk  #安装jre
  • 1
yum install -y java-devel     #安装jdk
  • 1

2)自定义安装

①下载java
②上传解压tar
③配置环境变量(此步骤省略即可)

export JAVA_HOME=/data/jdk-11.0.16.1
export PATH=$JAVA_HOME/bin:$PATH:$KE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 1
  • 2
  • 3

2、安装maven

1)下载maven

maven官方下载地址
二进制压缩包下载:
在这里插入图片描述

2)压缩包上传至服务器

3)解压缩

tar -zxvf apache-maven-3.8.6-bin.tar.gz
  • 1

4)修改maven配置文件镜像地址

cd /root/apache-maven-3.8.6/conf
vim settings.xml
  • 1
  • 2
 <mirror>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5)配置环境变量

export MAVEN_HOME=/root/apache-maven-3.8.6/
export JAVA_HOME=/data/jdk-11.0.16.1
export PATH=$JAVA_HOME/bin:$PATH:$KE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=${PATH}:${MAVEN_HOME}/bin
  • 1
  • 2
  • 3
  • 4
  • 5

5)查看版本

[root@localhost ~]# mvn -v
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /root/apache-maven-3.8.6
Java version: 11.0.16.1, vendor: Oracle Corporation, runtime: /data/jdk-11.0.16.1
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-348.el8.x86_64", arch: "amd64", family: "unix"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、安装Git

配置git地址时,jenkins会自动使用git命令,所以需要安装git

yum install git
  • 1

4、安装Jenkins

1)war包下载

war包下载
在这里插入图片描述

2)安装运行Jenkins

运行war包

java -jar  jenkins.war
  • 1

在运行的日志里面可以看见提示:运行过程中已经在/root/.jenkins路径下创建了Jenkins相关的文件,其中默认用户admin,密码在/root/.jenkins/secrets/initialAdminPassword文件里面,日志里面也打印了密码如下:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

6394bc3ff49b476f8695b2d0233dd7ef

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3)访问Jenkins控制台

http://192.168.109.141:8080
输入默认密码:这个文件中/root/.jenkins/secrets/initialAdminPassword
在这里插入图片描述

4)推荐插件安装

选择推荐插件安装——》等待插件安装完成——》创建管理员账号——进入Jenkins控制面板

在这里插入图片描述

5)创建管理员账号

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6)安装maven插件

需要使用maven插件构建项目,所以安装maven插件
步骤如下图:
在这里插入图片描述
在这里插入图片描述
点击安装后跳转至安装页面,滑动至最下面,查看安装进度,等待在线安装完成即可
在这里插入图片描述

7)配置当前服务器中安装的maven

在这里插入图片描述
在这里插入图片描述

8)配置当前服务器中安装的git

首先确定下在Jenkins服务器上已经安装了Git。
可以通过

git --version
  • 1

来确定是否已经成功安装。
然后再通过

which git
  • 1

来查看git的目录,并将其复制出来
然后找到Jenkins下的系统管理-全局工具配置-Git
将上面复制的git的路径放在Path to Git executable中
保存
在这里插入图片描述

9)配置当前服务器中安装的java

此处配置的java_home与服务器中/etc/profile中配置的一致
在这里插入图片描述

四、jenkins配置maven+git自动构建jar包

1)新建任务

2)源码管理

① 添加git源码地址

在这里插入图片描述
此步骤如果报错如下,则说明服务器没有安装git
在这里插入图片描述
如果报错如下,则说明该代码仓库为私有,需要修改为公有,或者在Credentials配置凭证
在这里插入图片描述

② 配置分支

在这里插入图片描述

3)Build

配置项目pom文件的路径,以gitlab上的路径为准
在这里插入图片描述

4)构建jar包

在这里插入图片描述
等待一段时间后前面时绿色的√代表成功,红色的×表示失败,具体情况查看控制台日志(可以点击名称进入,查看控制条打印的日志)
在这里插入图片描述

如果遇到如下问题有以下几点原因:
1)则maven仓库镜像配置问题
2)java版本问题
3)jenkins没有配置maven或java
在这里插入图片描述

5)自启动jar查看结果

根据上一步的日志可以查看到打包好的jar在/root/.jenkins/workspace/jenkins-test1/target/jenkins-test1-1.0-SNAPSHOT.jar,所以进入该路径启动jar包,然后访问该工程接口测试。

[root@localhost jdk-11.0.16.1]# cd /root/.jenkins/workspace/jenkins-test1/target
[root@localhost target]# ll
total 4
drwxr-xr-x. 3 root root   40 Nov 18 16:13 classes
drwxr-xr-x. 3 root root   25 Nov 18 16:13 generated-sources
-rw-r--r--. 1 root root 3008 Nov 18 16:13 jenkins-test1-1.0-SNAPSHOT.jar
drwxr-xr-x. 2 root root   28 Nov 18 16:13 maven-archiver
drwxr-xr-x. 3 root root   35 Nov 18 16:13 maven-status
[root@localhost target]# java -jar jenkins-test1-1.0-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.1)

2022-11-18 16:34:09.355  INFO 40190 --- [           main] com.buba.Application                     : Starting Application using Java 11.0.16.1 on localhost.localdomain with PID 40190 (/root/.jenkins/workspace/jenkins-test1/target/jenkins-test1-1.0-SNAPSHOT.jar started by root in /root/.jenkins/workspace/jenkins-test1/target)
2022-11-18 16:34:09.358  INFO 40190 --- [           main] com.buba.Application                     : No active profile set, falling back to 1 default profile: "default"
2022-11-18 16:34:12.217  INFO 40190 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8001 (http)
2022-11-18 16:34:12.258  INFO 40190 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-11-18 16:34:12.258  INFO 40190 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.64]
2022-11-18 16:34:12.447  INFO 40190 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-11-18 16:34:12.447  INFO 40190 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2935 ms
2022-11-18 16:34:14.383  INFO 40190 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8001 (http) with context path ''
2022-11-18 16:34:14.413  INFO 40190 --- [           main] com.buba.Application                     : Started Application in 6.448 seconds (JVM running for 7.687)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

测试接口
在这里插入图片描述


如果遇到如下问题:则需要在工程的pom文件中指定maven插件,如下
no main manifest attribute, in jenkins-test1-1.0-SNAPSHOT.jar

解决方法:

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.buba</groupId>
    <artifactId>gitlab-test3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gitlab-test3</name>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.7.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.7.1</version>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.1</version>
                <configuration>
                    <!--   指定该Main Class为全局的唯一入口   -->
                    <mainClass>com.buba.GitlabTest3Application</mainClass>
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--  可以把依赖的包都打包到生成的Jar包中  -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

6)问题总结:

① springboot应用程序pom有父工程,但是没有搭建私服,找不到父工程

报错:

ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for com.buba:gitlab-test3:0.0.1-SNAPSHOT: Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom:2.7.2-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 13
  • 1
  • 2
  • 3

原本pom如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2-SNAPSHOT</version>
        <relativePath/> 
    </parent>
    <groupId>com.buba</groupId>
    <artifactId>gitlab-test3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <name>gitlab-test3</name>
    <properties>
        <java.version>11</java.version>
    </properties>
    .......................省略
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

解决:将父工程去掉,再以来中添加版本

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.buba</groupId>
    <artifactId>gitlab-test3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gitlab-test3</name>
    <packaging>jar</packaging>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.1</version>
        </dependency>
    </dependencies>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

②maven报错:不再支持源选项 5。请使用 6 或更高版本

在这里插入图片描述
问题描述
在构建某个maven项目的时候发生了异常,遇到以下错误,理论上是由于没有指定JAVA版本导致的。
[ERROR] 不再支持源选项 5。请使用 6 或更高版本。
[ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。
解决方案
pom.xml文件中增加maven编译的java.version jdk版本设置,以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.target 资源构建jdk版本设置

For JAVA6~8,一般都是1.6,1.7,1.8的写法。至于1.9用的人少,我也不知道写1.9还是9。

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
</properties> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

For JAVA≥10,例如10以上,都是直接写10,11,12,13,14的。

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
</properties>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

③no main manifest attribute

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.1</version>
                <configuration>
                    <!--   指定该Main Class为全局的唯一入口   -->
                    <mainClass>com.buba.GitlabTest3Application</mainClass>
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--  可以把依赖的包都打包到生成的Jar包中  -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

④Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin

<dependencies>
      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.7.1</version>
      </dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.1</version>
                <configuration>
                    <!--   指定该Main Class为全局的唯一入口   -->
                    <mainClass>com.buba.GitlabTest3Application</mainClass>
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--  可以把依赖的包都打包到生成的Jar包中  -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

⑤Maven install报错To see the full stack trace of the errors, re-run Maven with the -e switch

这个问题的原因尚未理解,但是碰巧我有上传了一部分代码,本地clean了一下。后面Jenkins构建就好了。
maven clean 一下将一下文件上传就好了
在这里插入图片描述

五、Jenkins自动发布

1、安装SSH插件

publish ssh

在这里插入图片描述
等待全部安装完成,如下图所示:
在这里插入图片描述

2、配置服务器地址

在这里插入图片描述
到系统配置页面后一直往下滑找到SSH配置,点击新增
在这里插入图片描述
然后填写必填项
Name:给目标服务器定义名字
hostname:IP地址
username:登陆服务器的用户名
然后点击高级按钮
在这里插入图片描述
勾选使用密码,填写密码
在这里插入图片描述
然后测试是否能够连接成功,连接成功后点击保存,如下图:
在这里插入图片描述

3、Post Steps 构建后(自动发布并运行)

①点击项目进入

在这里插入图片描述

②然后点击配置

在这里插入图片描述

③点击发布步骤配置

在这里插入图片描述

④选择SSH方式连接发送执行

在这里插入图片描述

⑤填写部署步骤配置

SSH Server Name:选择一个已经配置好的服务器
Transfer Set Source files:传输文件(此处**可以模糊匹配任意目录)
remote directory:目标文件夹
exec command:执行的命令(
nohup 在系统后台不挂断地运行命令,退出终端不会影响程序的运行
&:让命令在后台执行,终端退出后命令仍旧执行。)
在这里插入图片描述
点击高级,选中Exec in pty:
在这里插入图片描述

⑥在目标服务器中编写通用启动脚本文件start.sh:

#最后一个执行的脚本放到的位置是/projects/scripts

Project_name=$1
Port_no=$2


#echo $Project_name
#echo $Port_no


. /etc/profile


# 进入到项目
cd /root/gitlab-test3/target

#删除历史日志
#rm -rf /**/**

# 找到原进程,kill
pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')
kill -9 $pid
#命令优化 pid=$(ps -ef | grep 'java -jar' | grep $Project_name | awk '{print $2}')
#空值判断,非空再kill
#if [ -z $pid ];
#	then
#		echo "not started"
# 	else
#		kill -9 $pid
#		echo "stoping...."
#fi

#启动jar
nohup java -jar /root/gitlab-test3/target/$Project_name-0.0.1-SNAPSHOT.jar --server.port=$Port_no -server -Xmx1000m -Xms1000m -Xmn700m -XX:+UseParallelGC &
#命令优化:nohup java -jar /root/target/*.jar &>>log.log &
#或  nohup java -jar /root/target/*.jar >>log.log 2>&1 &
echo "starting service..."
sleep 20


#根据重启后是否有当前应用判断启动是否成功
pid=$(ps -ef | grep java| grep $Project_name|awk -F '[ ]+' '{print $2}')
#echo $pid
if [ -z $pid ];then
  echo "启动失败"
  exit 1
else
  echo $Project_name :  $pid  "SUCCESS"
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

4、Pre Steps 构建前(执行目标服务器脚本)

kill掉原来的进程
清理掉原来传输的文件

六、Jenkins自动化构建

1、触发远程构建(钩子回调自动构建)

远程调用本job的restapi时执行本job,即Jenkins对外提供一个restful风格的地址提供gitlab调用

1)、安装插件

插件名字:Build Authorization Token Root Plugin

默认访问触发自动构建的地址需要token才行,安装插件后允许匿名访问地址。
进插件详情可看到访问的路径格式有两种都可以用:
http://192.168.109.146:8080/job/gitlab-test3/build?token=aass
http://192.168.109.146:8080/buildByToken/build?job=gitlab-test3&token=aass
在这里插入图片描述

2)、配置项目构建触发器

填写验证令牌即可
在这里插入图片描述

3)、配置到gitlab

登入gitlab

①配置允许webhooks

在这里插入图片描述

②配置钩子

在这里插入图片描述

③测试

在这里插入图片描述

2、定时构建Build periodically

1)cron表达式

cron表达式在线工具
cron表达式共5位,从左到右分别是分钟、小时、天、月、一周的第几天

  • *:表示任意
  • num:表示第num执行一次
  • */num :表示每隔num执行一次
  • num1,num2,num3…:表示第num1,第num2第num3…执行
  • num1-num6:表示范围,第num1到num6都执行
 每五分钟执行一次:   */5   *   *  *  *
  • 1
 每小时的第五分钟执行一次:   5   *   *  *  *
  • 1

2)触发测试

3、Poll SCM触发器

定期检查打麻变更,使用cron表达式定时检查代码变更,变更后构建本job

4、快照依赖构建/Build whenever a SNAPSHOT dependency is built

当依赖的快照被构建时执行脚本job

5、job依赖构建/Build after other projects are built

当依赖的job被构建时执行本job

6、向GitHub提交代码时触发Jenkins自动构建/GitHub hook trigger for Gitscm polling

github-webhook触发时构建本job

七、配置邮箱接收构建通知

这里案例使用163邮箱向qq邮箱发送邮件

1、开启163邮箱的POP3

在这里插入图片描述

2、qq邮箱

3、Jenkins系统配置邮件

在这里插入图片描述

4、安装插件配置自定义的邮件

请添加图片描述

八、Jenkins容器化构建

1、创建项目,添加Dockerfile

在这里插入图片描述

2、构建前配置

在这里插入图片描述

3、构建后配置

在这里插入图片描述

4、上传镜像到私服

九、Jenkins集群

1、新建节点

在这里插入图片描述

2、job构建节点配置

在这里插入图片描述

十、流水线

1、pipeline

1)pipeline简单使用

流水线既能作为任务的本身,也能作为Jenkinsfile
使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同时参与进来,同时也可以编辑开发|enkinswebui不能完成的更复杂的构建逻辑,作为开发者可读性也更好。

2)pipeline自动打包Docker镜像

2、插件Blue Ocean

3、多分支流水线

1、完整语法

5个必备的组成部分
pipeline:整条流水线 agent:指定执行器 stages:所有阶段
stage:某一阶段,可有多个
steps:阶段内的每一步,可执行命令

十、Nexus3搭建maven私服

Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问,也就是我们常说的私服

1、下载nexus3.x:

Nexus官方下载地址
在这里插入图片描述
官方下载极其慢,这里提供网盘下载:
链接:https://pan.baidu.com/s/1nu7HYjqanv68HE7fHlZFIA?pwd=zdhw
提取码:zdhw

2、上传nexus压缩包并解压

cd /data
tar -zxvf nexus-3.25.1-04-unix.tar.gz
  • 1
  • 2

3、启动

cd /data/nexus-3.25.1-04/bin/
ls
./nexus run &
  • 1
  • 2
  • 3

启动成功需要等待几分钟

4、开启端口号

firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload
  • 1
  • 2

5、浏览器访问

默认8081端口
在这里插入图片描述

6、设置开机自启动

1.创建服务

vim /usr/lib/systemd/system/nexus.service
  • 1

2.按i将下面复制进去

[Unit] 
Description=nexus service

[Service] 
Type=forking LimitNOFILE=65536 #警告处理
ExecStart=/data/nexus-3.25.1-04/bin/nexus start
ExecReload=/data/nexus-3.25.1-04/bin/nexus restart
ExecStop=/data/nexus-3.25.1-04/bin/nexus stop
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.将服务加入开机启动

systemctl enable nexus.service
  • 1

4.重新加载配置文件

systemctl daemon-reload
  • 1

7、运行用户为root (编辑nexus bin下的nexus.rc)

cd /data/nexus-3.25.1-04/bin/
vim nexus.rc
  • 1
  • 2

内容改为:

run_as_user="root"
  • 1

8、修改nexus3启动时要使用的jdk版本

cd /data/nexus-3.25.1-04/bin/
vim nexus
  • 1
  • 2

按i将下面添加进去

INSTALL4J_JAVA_HOME_OVERRIDE=/data/jdk-11.0.16/
  • 1

java_home地址可以用echo $JAVA_HOME 输出 (前提是/etc/profile有export)
在这里插入图片描述

9、修改nexus3默认端口

文件在/data/nexus-3.25.1-04/etc/nexus-default.properties

vim /data/nexus-3.25.1-04/etc/nexus-default.properties
  • 1

在这里插入图片描述

10、登录

默认用户名:admin
密码:admin123,如果默认密码不正确就去服务器中查找admin.password文件,密码在里面就是一串字符串。

[root@localhost data]# find -name admin.password
./sonatype-work/nexus3/admin.password
[root@localhost data]# cat ./sonatype-work/nexus3/admin.password
a3dffe94-17b2-4aea-bcc3-95d1ba126442
[root@localhost data]#
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
登录成功后按提示完成密码修改
在这里插入图片描述
是否允许匿名访问:
在这里插入图片描述

十一、私服新建自定义的仓库

步骤1:
点击Create repository,然后选择类型为 maven2(hosted)
在这里插入图片描述
在这里插入图片描述

步骤2:
输入仓库名称 private-release(自定义),并在 Version policy 一栏中选择 Release,表示这个仓库的存储依赖为正式发布的组件,然后在 Deployment policy 一栏中选择 Allow redeploy,允许部署和更新私服上的组件。
点击Create repository 之后,就可以在仓库列表看到自定义的仓库了,我们再按照同样方式操作添加一个 snapshot 仓库,只需在 Version policy 一栏调整为 Snapshot 即可。
在这里插入图片描述

快照仓库的创建
在这里插入图片描述

在这里插入图片描述

十二、添加角色和用户

1、添加角色

Nexus 默认只有两种角色:nx-anonymous 和 nx-admin,前者只有浏览的权限,后者为管理员权限,一般情况下,我们还需要正对开发人员创建个角色。
点击 Create Role,
Role ID:developer
Role name:developer
Privlieges:选择当前角色可以访问的仓库增|删|改|查|权限
最好只添加自定义仓库的使用权限,删除操作不添加
在这里插入图片描述
注意:这里添加的角色 Privlieges选择当前角色可以访问的仓库增|删|改|查|权限
在这里插入图片描述
显示角色代表添加成功
在这里插入图片描述

2、添加用户

点击 Create local user,填入用户名,密码等必填信息之后,关联我们先前的创建的角色developer即可,点击Create local user保存,创建成功。
在这里插入图片描述
在这里插入图片描述

十三、使用 Maven 私服

搭建好了私服,创建完用户和角色之后,我们怎么使用呢?接着往下看。

1、修改服务端配置文件

在服务器上,打开 /data/nexus-3.25.1-04/system/setting.xml (vim setting.xml)

cd /data/nexus-3.25.1-04/system
vim settings.xml
  • 1
  • 2

注意:这里添加 true 可以上传带SHAPSHOT的版本,也就是说可以上传到snapshot类型的库中,不加的话在idea中只能把SHAPSHOT后缀去掉,否则会报错。

<settings>
  <servers>
                <server>
                        <id>buba-release</id>
                        <username>qlx</username>
                        <password>123456</password>
                </server>
                <server>
                        <id>buba-snapshot</id>
                        <username>qlx</username>
                        <password>123456</password>
                </server>
  </servers>

  <profiles>
        <profile>
                <id>development</id>
                <repositories>
                        <repository>
                                <id>buba-release</id>
                                <url>http://192.168.109.146:8081/repository/buba-release/</url>
                                <releases><enabled>true</enabled></releases>
                                <snapshots>false</snapshots>
                        </repository>
                        <repository>
                                <id>buba-snapshot</id>
                                <url>http://192.168.109.146:8081/repository/buba-snapshot/</url>
                                <releases><enabled>false</enabled></releases>
                                <snapshots><enabled>true</enabled></snapshots>
                        </repository>
                </repositories>
        </profile>
  </profiles>

  <activeProfiles>
          <activeProfile>development</activeProfile>
  </activeProfiles>
</settings>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

2、修改本地maven配置文件

在本地maven的配置文件中的标签下 ,添加连接私服的账号密码和ID配置如下

<server>
        <id>buba-release</id>
        <username>qlx</username>
        <password>123456</password>
    </server>
    <server>
        <id>buba-snapshot</id>
        <username>qlx</username>
        <password>123456</password>
    </server>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、修改idea中的POM文件

在Idea中POM文件中添加如下配置(这里的url,可以通过 Nexus 后台上仓库页面的 cpoy 按钮自动复制得到):

<--
<version>0.0.1-SNAPSHOT</version> 
或者
<version>0.0.1-release</version> 
-->
<distributionManagement>
        <repository>
            <id>buba-release</id>
            <name>buba-release</name>
            <url>http://192.168.109.146:8081/repository/buba-release/</url>
        </repository>

        <snapshotRepository>
            <id>buba-snapshot</id>
            <name>buba-snapshot</name>
            <url>http://192.168.109.146:8081/repository/buba-snapshot/</url>
        </snapshotRepository>
</distributionManagement>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

到现在我们基本都配置完成了,执行部署命令 mvn clean deploy 或者利用 IDE 的 部署插件进行发布,当控制台出现 BUILD SUCCESS ,说明发布成功。
在这里插入图片描述

此时,可以在 Nexus 后台上仓库页面中查看我们发布的jar包。
在这里插入图片描述
在这里插入图片描述
至此,我们全部操作成功!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/130524
推荐阅读
相关标签
  

闽ICP备14008679号