jenkins CI/CD持续集成/交付/部署

news2024/11/22 14:52:42

文章目录

  • 1.引言
  • 2.CI介绍(持续集成)
  • 3.实现持续集成
    • 3.1.搭建Gitlab服务器
    • 3.2.搭建Gitlab服务器
    • 3.3 整合项目入门测试
      • 编写一个springboot项目test-ci
      • 编写.gitlab-ci.yml文件
    • 3.4 编写.gitlab-ci.yml文件,实现持续集成
    • 3.5 删除名称为none的image
  • 4.CD介绍(持续交付、持续部署)
  • 5.实现持续交付和持续部署
    • 5.1安装jenkins
    • 5.2 配置目标服务器(shh登录方式)
    • 5.3 配置Jenkins免密码登录Gitlab
    • 5.4配置maven和jdk
    • 5.5 手动拉取Gitlab项目
  • 6.新建jenkins任务
    • 6.1配置项目git路径
    • 6.2配置登录git的用户名密码
    • 6.3配置maven及命令
    • 6.4配置远程服务器路劲和脚本
    • 6.5 保存执行构建
    • 访问测试:成功


参考文件:Docker、CICD持续集成部署、Gitlab使用、Jenkins介绍

1.引言

目前的项目部署:
​ 1.将项目进行编译打包,生产发布文件
​ 2.将文件上传到指定的服务器中
​ 3.将发布文件放到tomcat中
​ 4.通过DokcerfIle将其转为一个镜像,由dokcer-compose运行和管理容器

如果项目更新了,则需要将上面的流程化操作再次的从头到尾执行一次。

2.CI介绍(持续集成)

持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新构建并测试。

  • 快速发现错误
  • 防止代码偏离主分支

3.实现持续集成

3.1.搭建Gitlab服务器

1.创建一个全新虚拟机,并且制定至少4GB运行内存
2.安装docker以及docker-compose
3.docker-compose.yml文件去安装Gitlab
在/opt目录下创建docker_gitlab目录,将下面的docker-compose.yml文件放在此目录下。

安装gitlab的yml文件代码如下,注意:ip地址需要改为本机ip地址

version: '3.1'
services:
  gitlab:
    image: 'twang2218/gitlab-ce-zh:11.1.4'
    container_name: 'gitlab'
    restart: always
    privileged: true
    hostname: 'gitlab'
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.229.132'	# 访问地址
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['gitlab_shell_ssh_port'] = 22
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - /opt/docker_gitlab/config:/etc/gitlab
      - /opt/docker_gitlab/data:/var/opt/gitlab
      - /opt/docker_gitlab/logs:/var/log/gitlab
    deploy: 
	  resources:
	    limits:
	      memory: 1024M

上面文件中,Gitlab服务器需要使用22端口号,但是该端口号被我们的ssh终端连接端口占用,因此我们需要修改ssh的22端口号为60022,保证Gitlab服务正常使用。

修改/etc/ssh/sshd_config文件中ssh的端口号配置,默认为22并且注释,我们将其取消注释并且修改为60022即可,然后使用sudo systemctl restart sshd命令重启ssh服务即可。

使用下面命令运行docker-compose,构建Gitlab服务器。

docker-compose up -d

执行结果如下:

Pulling gitlab (twang2218/gitlab-ce-zh:11.1.4)...
11.1.4: Pulling from twang2218/gitlab-ce-zh
8ee29e426c26: Already exists
6e83b260b73b: Already exists
e26b65fd1143: Already exists
40dca07f8222: Already exists
b420ae9e10b3: Pull complete
a218309dd589: Pull complete
5c60fd7ba0ce: Pull complete
659c2144b5a3: Pull complete
8289bbac0d0e: Pull complete
31bbd150e8a7: Pull complete
9114e78243fa: Pull complete
0b97fa2153bc: Pull complete
308c7e15be6a: Pull complete
b7f31b8e487d: Pull complete
cbbb6dec5000: Pull complete
0241c9ad6a16: Pull complete
7fa6f0b53edd: Pull complete
1c2861e152b2: Pull complete
0536f3466f66: Pull complete
Digest: sha256:3c2372e3285e6d6933ddebb5ee3ae0c4bbf7cb235084e54d33d7f0ddf4813c4a
Status: Downloaded newer image for twang2218/gitlab-ce-zh:11.1.4
Creating gitlab ... done # 表示创建成功

安装成功之后可以使用下面地址访问Gitlab,第一次访问时需要输入初始密码,由于我们在创建Gitlab服务器时开启了smtp服务,因此可以使用邮件发送功能。

external_url 'http://192.168.254.129'	# 访问地址

登录的用户名默认为root,密码默认为初始我们自己设置的密码,创建用户,登陆后主页如下所示:
在这里插入图片描述

3.2.搭建Gitlab服务器

我们这里使用Docker镜像的方式安装、运行Gitlab Runner,使用下面命令从仓库中获取Gitlab Runner对应的镜像,镜像获取时时间较长,可能需要多次重试或者等待。

#慢
docker pull gitlab/gitlab-runner:latest

由于镜像速度比较慢,因此采用直接在服务器安装的方式使用,这里以centos7为例介绍Gitlab Runner的安装、与Gitlab服务器中项目的关联。

使用下面的命令添加Gitlab的官方仓库地址。

# 快
sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"

chmod +x /usr/local/bin/gitlab-runner

cd /usr/local/bin/gitlab-runner

useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

gpasswd -a gitlab-runner docker

newgrp docker

#将目录配置为系统环境变量:/usr/local/bin
export PATH=/usr/local/bin:$PATH
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

sudo gitlab-runner start

#查看版本
gitlab-runner --version

安装完成,下面我们进行注册,与Gitlab中的指定项目绑定

在Gitlab中创建一个名为test-ci的项目,参考文档地址https://docs.gitlab.com/runner/register/index.html。
在这里插入图片描述
安装时,最好将Gitlab与Gitlab Runner安装在不同的服务器上面。
使用下面的命令启动Gitlab Runner的注册流程。

#准备上图的url 与 token
url: http://192.168.229.132/
token: zmUVQy5HmgowU1rzMeoB

#如图,需要输入的地方

在这里插入图片描述
此时,Gitlab Runner已经配置完毕,与Gitlab中的项目进行绑定。

刷新Gitlab中项目的设置-CI/CD页面,展开Runner对应的模块,可以查看对应的Runner已经与其绑定。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编辑当前的信息,选中【运行没有标签的作业】属性,然后保存更改,此属性表示此Runner可以运行没有任何标签的作业。
在这里插入图片描述
至此,Gitlab Runner已经安装完成,并且与Gitlab中的一个项目进行绑定。

3.3 整合项目入门测试

编写一个springboot项目test-ci

并且推送至gitlab
git初始化项目并且推送,略

编写.gitlab-ci.yml文件

在项目中添加持续集成使用的yml文件,在项目根节点文件夹右键 New -> File,添加文件名为[.gitlab-ci.yml],一定要注意文件名以[.]开始。

在[.gitlab-ci.yml]文件中添加下面代码:

stages:
  - test

test:
  stage: test
  script:
    - echo First test CI

如图:
在这里插入图片描述
再次提交,推送到git:http://192.168.229.132/biejihao/test-ci.git

此时在Gitlab项目的CI-CD -> [流水线] 功能下将会出现一个流水线执行情况,之后的每一次Git提交将会触发此自动执行命令,执行的脚本为我们之前编写的[.gitlab-ci.yml]文件中的代码,但是我们在执行时发现执行运行中,如下图所示:
在这里插入图片描述
如果是运行失败,可能是没有jdk环境

如下图,没有指定gitlab-runner,原因是最初指定runner后,项目有过删除记录。
在这里插入图片描述
流水线启动失败:需要安装git
在这里插入图片描述

#本机安装:
yum install -y git

3.4 编写.gitlab-ci.yml文件,实现持续集成

使用Gitlab Runner进行自动化编译时,实在Gitlab Runner服务器对应gitlab-runner用户下的builds目录下对应的文件夹内执行的命令,下面为从用户根目录至与Gitlab关联项目执行命令的全部目录:

zgs@zgs:/home/gitlab-runner$ ls
builds
zgs@zgs:/home/gitlab-runner$ cd builds/
zgs@zgs:/home/gitlab-runner/builds$ ls
0269f504
zgs@zgs:/home/gitlab-runner/builds$ cd 0269f504/
zgs@zgs:/home/gitlab-runner/builds/0269f504$ ls
0
zgs@zgs:/home/gitlab-runner/builds/0269f504$ cd 0/
zgs@zgs:/home/gitlab-runner/builds/0269f504/0$ ls
root
zgs@zgs:/home/gitlab-runner/builds/0269f504/0$ cd root/
zgs@zgs:/home/gitlab-runner/builds/0269f504/0/root$ ls
test-ci  test-ci.tmp
zgs@zgs:/home/gitlab-runner/builds/0269f504/0/root$ cd test-ci
zgs@zgs:/home/gitlab-runner/builds/0269f504/0/root/test-ci$ ls
pom.xml  web

在该目录下,我们可以使用 mvn -v 查看对应maven的版本号相关内容,如下所示:

zgs@zgs:/home/gitlab-runner/builds/0269f504/0/root/test-ci$ mvn -v
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.8.0_252, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-42-generic", arch: "amd64", family: "unix"

下载maven并配置环境变量

#通过wget下载有问题,在官网下载后上传到linux。
#官网下载:https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz

# 解压
tar -zxvf apache-maven-3.8.5-bin.tar.gz

#修改目录名
mv apache-maven-3.8.5 /usr/local/maven/

# 配置环境变量
vim /etc/profile

MAVEN_HOME=/usr/local/maven
PATH=${MAVEN_HOME}/bin:${PATH}
export PATH

# 刷新
source /etc/profile

# 查看
mvn -v

# 替换maven源
vim /usr/local/maven/conf/settings.xml

# 找到<mirrors></mirrors>标签对,添加以下内容,中央仓库和指定下载位置
<mirror>
   <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
	<releases>
		<enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </releases>
    <snapshots>
		<enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </snapshots>
</mirror>

# settings.xml中指定下载源位置
<localRepository>/usr/local/maven/repository</localRepository>

但是我们执行命令时实在Gitlab服务器中执行的,因此需要复制maven命令的全路径进行执行,安装maven时的路径如下:

/usr/local/maven/bin

修改.gitlab-ci.yml文件,修改后内容如下:

stages:
  - test

test:
  script:
    - echo first test ci
    - /usr/local/maven/bin/mvn package

注意:如果前后端不分离的项目要打包成war包,需要修改pom.xml文件,添加web.xml项目文件路径,代码如下:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zgs</groupId>
    <artifactId>testci</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <webXml>src/main/web/WEB-INF/web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

如出现如下情况,本机8080端口被占用,停止就可以了。
在这里插入图片描述
将此改动推送至Gitlab仓库,查看CI的流水线执行情况如下:
在这里插入图片描述
修改.gitlab-ci.yml文件中内容,添加将编译后文件复制到docker目录下代码,修改后文件内容如下:

stages:
  - test

test:
  stage: test
  script:
    - echo First test CI
    - /usr/local/maven/bin/mvn package
    - cp target/testci-0.0.1-SNAPSHOT.jar docker/testci.jar

编写Dockerfile文件内容如下

FROM java:8

COPY target/*.jar /app.jar

CMD ["--server.port=8099"]

EXPOSE 8099

ENTRYPOINT ["java","-jar","/app.jar"]

在项目根目录下创建docker-compose.yml文件,用于管理Docker镜像和容器,代码如下:

version: '3.8'
services:
  testci:
    build:
      dockerfile: Dockerfile
    image: testci
    restart: always
    container_name: testci
    ports:
      - "8099:8099"
#  redis:
#    image: "redis:alpine"

再次修改.gitlab-ci.yml文件,添加docker-compose相关命令,用于使用docker-compose命令管理容器,修改后代码如下:

stages:
  - test

test:
  stage: test
  script:
    - echo First test CI
    - /usr/local/maven/bin/mvn package
    #- cp target/testci-0.0.1-SNAPSHOT.jar /testci.jar
    - docker-compose down
    - docker-compose up -d --build

提交至代码仓库,在Gitlab中查看流水线作业已经执行成功。
测试访问。如果访问不到,确认镜像是否成功,容器是否启动成功,端口是否映射成功。
在这里插入图片描述

3.5 删除名称为none的image

使用docker images 命令查看宿主机的所有镜像发现有很多名称为none的镜像,是因为我们在执行docker-compose命令时,会将旧的镜像置为none,然后生成新的镜像。

在我们之后越来越多的提交就会进行多次构建,也就会产生多个名称为none的镜像,这样将会产生硬盘空间的极大浪费,我们可以使用下面的命令将这些名称为none的镜像删除,命令如下:

我们可以将该命令写入.gitlab-ci.yml文件中,每次将会把之前名称为none的镜像删除,完善后的.gitlab-ci.yml文件如下:

stages:
  - test

test:
  script:
    - echo first test ci
    - /usr/share/maven/bin/mvn package
    - cp target/testci-1.0-SNAPSHOT.war docker/testci.war
    - docker-compose down
    - docker-compose up -d --build
    - docker rmi -f $(docker images -qf dangling=true)

4.CD介绍(持续交付、持续部署)

持续交付:将代码交付给专业的测试团队进行测试。

持续部署:将测试通过的代码,发布到生产环境。

在这里插入图片描述

5.实现持续交付和持续部署

5.1安装jenkins

官网:https://www.jenkins.io/

docker安装jenkins:https://www.jenkins.io/zh/blog/2018/12/10/the-official-Docker-image/

使用docker-compose进行安装:

version: '3.1'
services:
  jenkins:
    image: jenkins/jenkins
    restart: always
    container_name: jenkins
    ports:
      - 8888:8080 # Web管理使用
      - 50000:50000 # Jenkins内部通讯使用端口
    volumes:
      - ./data:/var/jenkins_home

在/opt目录下创建docker_jenkins目录,并将上面的yml文件放在该目录下。/opt/docker_jenkins

执行下面命令使用docker-compose获取Jenkins镜像。

docker-compose up -d

执行完毕后,可以使用docker ps命令查看当前运行的容器,Jenkins容器已经正常运行。

zgs@zgs:/opt/docker_jenkins$ docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                          PORTS                                                          NAMES
8e1d33e74317        jenkins/jenkins                 "/sbin/tini -- /usr/…"   51 seconds ago      Restarting (1) 15 seconds ago                                                                  jenkins
027f38b36a87        test-ci_testci                  "catalina.sh run"        16 hours ago        Up 3 hours                      0.0.0.0:8080->8080/tcp                                         testci
f174354636b5        twang2218/gitlab-ce-zh:11.1.4   "/assets/wrapper"        3 days ago          Up 3 hours (healthy)            0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   gitlab

但是我们使用docker-compose的日志查看命令查看Jenkins的启动情况时,发现存在权限问题,具体日志如下:

zgs@zgs:/opt/docker_jenkins$ docker-compose logs -f
Attaching to jenkins
jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

这是因为/opt/docker_jenkins/data目录Jenkins是没有操作权限的,那么我们要给Jenkins赋予对应的操作权限,对应代码如下:

zgs@zgs:/opt/docker_jenkins$ pwd
/opt/docker_jenkins
zgs@zgs:/opt/docker_jenkins$ ls
data  docker-compose.yml
zgs@zgs:/opt/docker_jenkins$ sudo chmod 777 data/
[sudo] password for zgs: 
zgs@zgs:/opt/docker_jenkins$ ll
total 16
drwxr-xr-x 3 root root 4096 Jul 25 02:00 ./
drwxr-xr-x 5 root root 4096 Jul 25 01:51 ../
drwxrwxrwx 2 root root 4096 Jul 25 02:00 data/
-rw-r--r-- 1 root root  267 Jul 25 01:53 docker-compose.yml
zgs@zgs:/opt/docker_jenkins$ docker-compose restart
Restarting jenkins ... done

查看对应的日志,如果出现下面的内容则说明启动成功:

jenkins    | *************************************************************
jenkins    | *************************************************************
jenkins    | *************************************************************
jenkins    | 
jenkins    | Jenkins initial setup is required. An admin user has been created and a password generated.
jenkins    | Please use the following password to proceed to installation:
jenkins    | 
jenkins    | 891836a4b38447219f937e599dd415b9
jenkins    | 
jenkins    | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
jenkins    | 
jenkins    | *************************************************************
jenkins    | *************************************************************
jenkins    | *************************************************************
jenkins    | 
jenkins    | 2020-07-25 12:22:53.442+0000 [id=25]	INFO	jenkins.InitReactorRunner$1#onAttained: Completed initialization
jenkins    | 2020-07-25 12:22:53.486+0000 [id=19]	INFO	hudson.WebAppMain$3#run: Jenkins is fully up and running
jenkins    | 2020-07-25 12:22:54.241+0000 [id=39]	INFO	h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
jenkins    | 2020-07-25 12:22:54.246+0000 [id=39]	INFO	hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
jenkins    | 2020-07-25 12:22:54.282+0000 [id=39]	INFO	hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Download metadata. 51,356 ms

访问下面地址可以访问Jenkins站点:

http://192.168.229.132:8888/login?from=%2F

按照页面提示,将下面的位置的文件中获取初始密码填入页面中。

/var/jenkins_home/secrets/initialAdminPassword

上面的目录为docker容器内的路径,这里我们映射到了宿主机的data文件夹中,具体路径如下:

/opt/docker_jenkins/data/secrets/initialAdminPassword

其实,在刚在查看Jenkins启动日志时已经将对应的密钥显示在了日志中。

输入完密码后,需要等待一段时间,Jenkins进行初始化启动。

#删除docker安装的jenkins:
1.停止容器 :docker stop 容器id
2.删除容器 :docker rm 容器id
3.删除卷挂载目录

点击【选择插件来安装】,除默认选择的插件外需选择自定义的插件安装,选择安装的插件如下列表:

Git Parameter
Publish Over SSH

然后点击安装按钮
在这里插入图片描述
等待安装完成
在这里插入图片描述
然后系统执行安装操作,需要等待一段时间,快则1-2个小时,慢则1-2天,安装期间可以使用docker-compose logs -f查看安装日志,前提为进入到Jenkins对应的docker compose文件夹内执行。

插件安装完成后,创建第一个管理员用户。
在这里插入图片描述
用户名:biejh1497@3irobotics.com
密码:Aa729941382
全名:biejiahao
邮箱:729941382@qq.com

默认用户:admin
用户密码:7b796a87e6f444d9bebb1eeb8be81e91

配置实例,可以使用默认的URL地址。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看到上面的界面则证明Jenkins已安装成功。

5.2 配置目标服务器(shh登录方式)

程序代码 -> Gitlab -> Jenkins -> 目标部署服务器

Jenkins连接目标部署服务器
在这里我们配置将生成的目标文件部署至对应服务器中,配置步骤如下。

安装publish over ssh插件,用来连接jenkins客户端

在这里插入图片描述
在Jenkins页面中选在 系统管理 -> 系统配置,如下图所示:

在【系统配置】功能页面向下查找到【Publish over SSH】部分,如下图所示:
在这里插入图片描述
填写如下信息,注意remote Directory路径本机需要创建。
在这里插入图片描述
在这里插入图片描述
在【SSH Servers】点击【新增】按钮,【添加Gitlab服务器的SSH登录信息】,点击【高级】按钮可以配置更多的登录信息,我们这里配置的是密码和端口号,配置完成后可以点击【Test Configuration】按钮对配置的登录信息进行测试。
在这里插入图片描述
其中:remote Directory:/usr/local/jenkins(如果不存在则需要创建)

测试失败:多数连接不上的问题是:登录centos的账号密码错误
在这里插入图片描述

5.3 配置Jenkins免密码登录Gitlab

原理是将Jenkins容器内部的SSH密码配置到Gitlab服务器的SSH中,这样就可以实现免登录功能。

首先,通过下面命令进入到Jenkins容器内部。

#查看容器id
docker ps;
#进入容器
docker exec -it 容器id /bin/bash
#生成秘钥
ssh-keygen -t rsa -C "729941382@qq.com" #空回车3下 
----------------------------------------
jenkins@e4e438826333:/usr$ ssh-keygen -t rsa -C "729941382@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa): 
Created directory '/var/jenkins_home/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/jenkins_home/.ssh/id_rsa
Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:pa3UwVOnLc/NA0rMbVOB+QdZqxeyP3mawX+8ZgL4AUA 729941382@qq.com
The key's randomart image is:
+---[RSA 3072]----+
|      .E    . +=o|
|       . .o..*+ .|
|        . =+o*o+ |
|         *.oo+*+o|
|        S =. ooo+|
|       . o o .o o|
|        . . o o=.|
|           . . B=|
|              *.+|
+----[SHA256]-----+
----------------------------------------

通过上面命令可以发现,生成的SSH密钥文件路径为:/var/jenkins_home/.ssh/id_rsa.pub.我们在配置Jenkins容器时,已经将该目录在我们的宿主机上面进行了映射,可以在宿主机上查看此文件。

由于.ssh目录为隐藏目录,需要使用ls -a命令才能查看此目录。

[root@localhost data]# ls -a;
.
..
.cache
com.cloudbees.hudson.plugins.folder.config.AbstractFolderConfiguration.xml
config.xml
copy_reference_file.log
github-plugin-configuration.xml
.groovy
hudson.model.UpdateCenter.xml
hudson.plugins.build_timeout.global.GlobalTimeOutConfiguration.xml
hudson.plugins.build_timeout.operations.BuildStepOperation.xml
hudson.plugins.emailext.ExtendedEmailPublisher.xml
hudson.plugins.git.GitSCM.xml
hudson.plugins.git.GitTool.xml
hudson.plugins.timestamper.TimestamperConfig.xml
hudson.tasks.Mailer.xml
hudson.tasks.Shell.xml
hudson.triggers.SCMTrigger.xml
identity.key.enc
io.jenkins.plugins.junit.storage.JunitTestResultStorageConfiguration.xml
.java
jenkins.fingerprints.GlobalFingerprintConfiguration.xml
jenkins.install.InstallUtil.lastExecVersion
jenkins.install.UpgradeWizard.state
jenkins.model.ArtifactManagerConfiguration.xml
jenkins.model.GlobalBuildDiscarderConfiguration.xml
jenkins.model.JenkinsLocationConfiguration.xml
jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
jenkins.security.ResourceDomainConfiguration.xml
jenkins.tasks.filters.EnvVarsFilterGlobalConfiguration.xml
jenkins.telemetry.Correlator.xml
jobs
.lastStarted
net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition.xml
nodeMonitors.xml
nodes
org.jenkinsci.plugins.github_branch_source.GitHubConfiguration.xml
org.jenkinsci.plugins.workflow.flow.GlobalDefaultFlowDurabilityLevel.xml
org.jenkinsci.plugins.workflow.libs.GlobalLibraries.xml
org.jvnet.hudson.plugins.SSHBuildWrapper.xml
.owner
plugins
queue.xml.bak
scriptApproval.xml
secret.key
secret.key.not-so-secret
secrets
.ssh		# 这里
updates
userContent
users
war

跳转至.ssh目录下即可查看生成的SSH公钥信息,具体命令如下:

[root@localhost .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDqCnWl2QkQdan5K9qkhOrFXULeEAnxL2iKAGmULbv7r5+tWeHBYfWaW8KjIkNSaEcCQUBpodxl9y5YrCxfn1d9wyWDaaC2TgIfXSV+oQStlFj17wibk/VTs12T+j+A0rQ4x/EXvBIKCsC32neR4ucUVKp1WNGUtARj9aTWAu7jweUeNCh2mCVUWSWFp52OHoEcdVlqRTrT/kFTg3yXr8CcR1ucUReco6x6cPgKD4EQ1kLigb5gtEbo7DIE6zLtDtI7BPqtRWQ+XH4oEe1FIPVwDiOXpRdARvJRmeGcDNBcP7sRT5Zc2ne5xMG/dqse8S1m8M04gaOby36HVyXc6h5dq035rQqX1KAobzBW3xS6fSHI21QhFOWcZp6LurYwdL1WPINXJn3itOocQWan/fWU5gymazRLlhw8uE5UKsT+VV3J0Pn9eoSrJjIb6OkpHJwYWv9OsC0G8zEbu0DUZqpeRIjqDcg4OnZTtg5fJ3m71iHrqQ7v/O9otc67nfQiU7k= 729941382@qq.com

把上面的公钥文件中的内容在Gitlab中进行配置,在Gitlab页面右上角的下拉菜单中点击【设置】。
在这里插入图片描述
在这里插入图片描述

5.4配置maven和jdk

复制本地的JDK和Maven的tar.gz压缩包到data目录下

/opt/docker_jenkins/data

手动解压,使用下面命令将JDK和Maven解压至当前目录。

tar -zxvf jdk-8u301-linux-x64.tar.gz
tar -zxvf apache-maven-3.8.6-bin.tar.gz

在Jenkins配置页面配置JDK和Maven。

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

5.5 手动拉取Gitlab项目

使用SSH无密码连接时,第一次连接需要手动拉取一次代码,用于确定连接正常。

使用命令进入Jenkins的Docker容器内

登录Gitlab站点的项目主页,复制项目对应的SSH项目代码,然后在Jenkins对应的Docker容器内执行Git clone命令将对应的项目代码从Gitlab中拉取到Jenkins服务器内。

jenkins@e4e438826333:~$ cd /var/jenkins_home
jenkins@e4e438826333:~$ git clone git@192.168.229.132:biejihao/test-ci.git
Cloning into 'test-ci'...
The authenticity of host '192.168.229.132 (192.168.229.132)' can't be established.
ECDSA key fingerprint is SHA256:oaWR3fn541uaitlzbciIFD+E6eiGTNx2wMA3agoftIo.
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '192.168.229.132' (ECDSA) to the list of known hosts.
remote: Counting objects: 72, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 72 (delta 21), reused 63 (delta 17)
Receiving objects: 100% (72/72), 12.28 KiB | 12.28 MiB/s, done.
Resolving deltas: 100% (21/21), done.
jenkins@e4e438826333:~$ 

查看代码是否拉取成功:说明测试成功

删除拉取的代码文件夹

jenkins@e4e438826333:~$ rm -rf test-ci

6.新建jenkins任务

在这里插入图片描述

6.1配置项目git路径

在这里插入图片描述

6.2配置登录git的用户名密码

在这里插入图片描述

6.3配置maven及命令

在这里插入图片描述

6.4配置远程服务器路劲和脚本

在这里插入图片描述

注意Source files 这个一定要写jks 默认打包项目的路劲
部署项目shell脚本或命令,exec command:

ps -ef|grep "port=8099"|awk {'print $2'}|xargs kill -9
nohup java  -Dspring.application.name=test-ci -jar -Xms1024m -Xmx1536m -XX:PermSize=1024M -XX:MaxPermSize=1536M  testci-0.0.1-SNAPSHOT.jar &
tail -f nohup.out 

6.5 保存执行构建

在这里插入图片描述

访问测试:成功

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之SSH、rsync

目录 Linux下的SSH服务 SSH服务简介和原理 SSH结构 SSH服务附带的SCP命令 使用ssh服务 ssh基本用法 ssh服务的两种认证类型 基于口令认证 基于密钥认证 ssh服务常见配置 1.修改ssh端口 2.禁止root用户登录 3.限制ssh监听的IP 4.禁止使用密码登录 ​​Rsync远程同步…

CDGP与CDMP考哪个合适?

在数字经济转型的时代&#xff0c;数据治理已经成为大数据人才提升自身职业素养不可或缺的培训课程&#xff0c;提升大数据治理能力&#xff0c;做数据治理专业化人才。 那么从事数据管理岗位&#xff0c;要不要学习DAMA认证&#xff1f;该怎么选择 答案一定是要看哪个认证的…

希望计算机专业同学都知道这些宝藏博主

湖科大教书匠——计算机网络 “宝藏老师”、“干货满满”、“羡慕湖科大”…这些都是网友对这门网课的评价&#xff0c;可见网课质量之高&#xff01; 湖南科技大学《计算机网络》微课堂是该校高军老师精心制作的视频课程&#xff0c;用简单的语言描述复杂的问题&#xff0c;…

zabbix自动发现

目录 一、环境准备 1、搭建zabbix基础环境 2、创建被监控主机 二、创建自动发现规则 1、自动发现概述 2、自动发现流程 3、部署监控端主机web2 4、创建自动发现规则 三、创建自动发现后的动作 四、测试自动发现 一、环境准备 1、搭建zabbix基础环境 zabbix基础环境部…

SpringCloud:Nacos注册中心和服务消费方式

目录 一、nacos环境搭建 nacos简介 步骤1&#xff1a;安装nacos 步骤2&#xff1a;启动nacos 启动 步骤3&#xff1a;访问nacos 二、nacos的微服务注册 ①导入pom依赖 shop-common的pom.xml 父工程的pom ②加注解 ③在application.yml中添加nacos服务的地址 ④启动服务…

[附源码]Python计算机毕业设计Django病人跟踪治疗信息管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

python+django大学生心理素质测评及咨询平台

1.系统包括登录模块、消费模块、收入模块和统计模块。 2.登录模块:对用户的管理权限进行验证&#xff0c;确保用户账号的安全。 3.消费模块:包括食品消费、着装消费、家具消费和行车消费&#xff0c;将日常生活中的主要消费进行详细汇总&#xff0c;具体包含购买日期、购买物品…

全国心力衰竭日| 仿生“人工心脏”——心衰患者的“心”希望

积羽沉舟——感冒竟酿心衰 龚先生今年四十多岁&#xff0c;有贤惠的妻子、聪明可爱的儿子&#xff0c;过着平凡却幸福的日子。没想到2017年一次小感冒&#xff0c;竟差点毁掉这个幸福的家庭。2017年的一天&#xff0c;龚先生突然得了一场重感冒&#xff0c;伴随胃痛、浑身无力等…

C++11(二)右值引用移动语义

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录左值引用和右值引用1.左值与左值引用2.右值与右值引用3.左值引用和右值引用比较左值引用引用右值右值引用引用左值4.右值引用之后的变化5.左…

运动的人需要什么装备?运动健身装备推荐分享

平时健身运动得比较多&#xff0c;对这些健身运动装备也有一定的了解。看今天有点时间&#xff0c;就在这里给大家说说我平时在用的健身装备好了&#xff0c;既可以当成是我自己这些时间健身运动的阶段性总结&#xff0c;也看看能不能对大家有些帮助。不多说别的&#xff0c;直…

【Mybatis编程:查询相册数据列表】

目录 1. 书写执行的SQL语句 2. 在项目的根包下创建pojo.vo.AlbumListItemVO类 3. 在AlbumMapper.java中添加抽象方法 4. 在AlbumMapper.xml中配置SQL语句 5. 在AlbumMapperTests.java中编写并执行测试 1. 书写执行的SQL语句 需要执行的SQL语句大致是&#xff1a; SELECT …

AnalysisView

元数据分析&#xff1a;血统分析、血液分析

[Power BI] 认识Power Query和M语言

数据清洗&#xff0c;可理解为数据整理&#xff0c;对从各类数据源导入的数据&#xff0c;通过一定的方法(如数据的增删改、转换、逆透视、合并等)进行处理&#xff0c;整理成符合要求的数据&#xff0c;然后加载到数据模型中&#xff0c;进行数据可视化 在Power BI中&#xf…

【Java八股文总结】之面试题(三)

文章目录面试线程相关1、线程有哪些状态?2、线程池的核心参数3、sleep VS wait4、lack VS synchronized5、volatile能否保证线程安全?6、悲观锁VS乐观锁7、HashTable Vs CurrentHashMap8、ThreadLocal的理解虚拟机相关1、JVM 内存结构1、程序计数器&#xff08;线程私有&…

Linux安装CUDA 添加环境变量 多版本CUDA切换 (软链接)

一、 Linux安装CUDA 步骤1. 去官网找到你想安装的CUDA版本&#xff1a; CUDA Toolkit Archive | NVIDIA Developer 步骤 2. 根据你的系统选择合适的系统版本 其中注意上图标红框的 Distribution 和Version 可用指令 cat /proc/version查看&#xff0c;如下&#xff1a; 选择…

居舍杂志居舍杂志社居舍编辑部2022年第27期目录

行业聚焦《居舍》投稿&#xff1a;cnqikantg126.com 走进企业|共推区域合作交流 共助行业转型升级——走进广州百利文仪北京分公司 1-2 CIFF|办好家居产业的连锁展会平台&#xff0c;助推家居产业高质量发展 3-5 CIFF上海虹桥|观展必看&#xff1a;这份史上最全品牌…

【CNN】搭建AlexNet网络——并处理自定义的数据集(猫狗分类)

前言 2012年&#xff0c;AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用了8层卷积神经网络&#xff0c;并以很大的优势赢得了2012年ImageNet图像识别挑战赛。 论文地址&#xff1a;http://papers.nips.c…

Windows OpenGL ES 图像色彩替换

目录 一.OpenGL ES 图像色彩替换 1.原始图片2.效果演示 二.OpenGL ES 图像色彩替换源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 …

MongoDB的使用

MongoDB 是一个跨平台的&#xff0c;以 JSON 为数据模型的文档数据库&#xff0c;是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的产品。 1、 MongoDB 与 MySQL 数据库 数据…

openGauss 高效数据压缩算法

openGauss 高效数据压缩算法 2.1 主要创新技术点 openGauss 的主要创新技术点总结如下&#xff1a; &#xff08;一&#xff09;改进压缩算法&#xff0c;压缩数据单位依然是选择页级别&#xff0c;进一步结合 Page 结构以及本身数据的特征&#xff0c;将 page 交给通用压缩算…