Jenkins发布微服务至Kubernetes(非流水线)

一、部署环境

系统环境

主机 IP

主机名

软件版本

Rocky8.7

192.168.15.101

JK1

Java-17

Jenkins-2.414.2

git-2.39.3-1

maven-3.9.6

PostgreSQL-16

SonarQube-10.3.0

Rocky8.7

192.168.15.102

GIT

gitlab-ce-12.10.14

git-2.39.3

Rocky8.7

192.168.15.103

Tom

Java-17

tomcat-9.0.22

Rocky8.7

192.168.15.104

JIRA

Java-17

Jira-7.2.2

MySQL-5.7.18

Rocky8.7

192.168.15.11

k8s-master01

Kubernetes v1.28.2

Rocky8.7

192.168.15.13

k8s-node01

Kubernetes v1.28.2

Rocky8.7

192.168.15.14

k8s-node02

Kubernetes v1.28.2

二、安装 Jenkins

JK1 主机安装 Jenkins

1. 安装 JDK

[root@JK1 ~]# yum install -y java-17*
[root@JK1 ~]# java -version 
openjdk version "17.0.10" 2024-01-16 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.10.0.7-1) (build 17.0.10+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.10.0.7-1) (build 17.0.10+7-LTS, mixed mode, sharing)

2. 安装 Jenkins 的 yum 源

[root@JK1 ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# wget下载Jenkins的yum源,使其保存到/etc/yum.repos.d/下

[root@JK1 ~]# cd /etc/yum.repos.d/
[root@JK1 ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 使用rpm导入Jenkins 软件包的GPG密钥,以确保安装的软件包是经过验证的,并且没有被篡改过

[root@JK1 yum.repos.d]# yum install -y epel-release
# 安装EPEL的发行包,通过安装EPEL发行包,可以访问一些常用的第三方软件包

[root@JK1 yum.repos.d]# yum install jenkins-2.414.2
# 安装2.414.2版本的Jenkins

[root@JK1 ~]# systemctl start jenkins.service 
# 安装完成后启动Jenkins
[root@JK1 ~]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      35146/java          

3. 初始化 Jenkins

使用 IP+Port 登录 Jenkins

找到解决 Jenkins 的密码,复制到网页上进行 Jenkins 初始化

[root@JK1 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword		# war包安装的在root目录下的.jenkins/secrets/initialAdminPassword
34d4c9c8478546429a79991121a3f7c1

配置国内插件源地址

[root@JK1 ~]# sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json
[root@JK1 ~]# systemctl restart jenkins.service 

选择“安装推荐的插件”,等待系统自行安装即可,后续注册自行注册,也可以直接选择 admin 身份登录

三、安装 Gitlab

1. 安装 Gitlab

GIT 主机安装 Gitlab

安装前确保主机内存 ≥ 2G,等待 Gitlab 初始化完成即可

[root@GIT ~]# yum -y install git
[root@GIT ~]# yum -y install curl openssh-server postfix cronie policycoreutils-python
[root@GIT ~]# wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-12.10.14-ce.0.el8.x86_64.rpm/download.rpm
[root@GIT ~]# rpm -ivh gitlab-ce-12.10.14-ce.0.el8.x86_64.rpm
[root@GIT ~]# gitlab-ctl reconfigure
[root@GIT ~]# cd /var/opt/gitlab/gitlab-rails/etc
[root@GIT etc]# vim gitlab.yml		# 修改gitlab配置
# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.

production: &base
  #
  # 1. GitLab app settings
  # ==========================

  ## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: 192.168.15.102		# 修改IP
    port: 82		# 修改端口
    https: false
[root@GIT etc]# vim /etc/gitlab/gitlab.rb 
1197 nginx['listen_port'] = 82		# 取消注释,修改端口
[root@GIT ~]# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
 34 server {
 35   listen *:82;		# 修改端口
[root@GIT etc]# gitlab-ctl restart
[root@GIT ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bgXRB7i7FuKjxWUeVPf9L9sKB3aSDPqWFGOaACCCrw4 root@GIT
The keys randomart image is:
+---[RSA 3072]----+
|+ ...   .oo..    |
|o.   .  .o.... . |
| .    . o.=.  . .|
|  .    o.* = .  .|
| .      S.o * . .|
|E    ..=o= o +  .|
|o    .o.+o+ . o .|
| .   .o.o.   o + |
|    .. o      o..|
+----[SHA256]-----+
[root@GIT ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtGCxLECJavppDQAOAHA65GQzpJAipy73qDo7Eh1h8X99wG9bZn/NnQ+jn0W8j/ABWkUkWGQ48PFp0S//94mnUHAC2O/Po4MAGANkFHAqSiv3prPbtBDrwXRJjdN7DwEVCHOhdqSQp6C0v3+0RJ6VmvXCF6isi6pDGGLHgLKHl0yLrG7Off0nTmfKx3reH1x5M9/tQITzQqItzpiOgdPsrs7rT2NFzBoKEIFqhxwIT5K7lQYUlgUDIMEI24wfVny7L5VMKDs0I1aY22YE+zLp8RqfNhSpM92odK0TOLxQ3cQ0QF3JwF20tRjQ0gEfzjcEOsVr37bsDxdP1R/8RXdAO9KR9elIbsbk+njq9M4EO0cwRZFYf3dMK7e9dvSHaZJQM7dPHRY9o/E78+6QjkcDR0Q8TJaYSjV9EWpbHzoa6K9Eiiv+WVPNjjxylpCiU2OuheguylFNpZQ8r/2kkMttYZs2ZG1Bx9CFAir2Ob2Zw0JKlecpSL2CRGvrXcnPW4xk= root@GIT
# 将上行公钥复制下来

输入 IP+端口,192.168.15.102:82 进入 gitlab 页面,首次登录请设置密码,然后按照如下步骤点击

2. 安装 Git

JK1 主机安装

[root@JK1 ~]# yum -y install git

安装 git 后,在 Jenkins 页面上安装 git 插件,已安装可忽略

3. Jenkins 配置凭证

3.1. 创建 Gitlab 的凭证

按照红线提示找到 Global credentials (unrestricted),点击进去

3.2. 创建凭证用户

类型:Username with password(密码凭证)

范围:Global(全局凭证)

用户名:root(gitlab 的用户名,如果有子项目用户也可以写)

密码:(该用户登录 gitlab 的密码)

描述:(随意)

4. 测试项目

4.1. Gitlab 创建项目

登录 Gitlab 页面:192.168.15.102

4.2. 创建测试文件

4.3. Jenkins 创建项目

4.4. Jenkins 项目配置

回到 Gitlab 页面,将 clone 地址复制下来,密码凭证复制 HTTP 的,密钥对凭证复制 SSH 的

回到 jenkins 页面选择源码管理——>Git,Credentials 选择之前创建的 root 凭证,点击保存

4.5. 测试拉取代码

点击 Build Now,等待代码拉取完成

点击#1 进入项目构建记录,点击控制台输出

测试成功,Jenkins 可以通过凭证正常拉取 Gitlab 代码!

四、项目打包

1. 安装 maven

JK1 主机安装 maven

1.1. 下载解压 maven

maven 官方网站:Maven – Welcome to Apache Maven

自行下载(看不懂英文找翻译)

本次使用 maven-3.9.6 版本,下载后导入到终端

[root@JK1 ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg                hostname.sh           ip.sh
模板  图片  下载  桌面  apache-maven-3.9.6-bin.tar.gz  initial-setup-ks.cfg  overlay
[root@JK1 ~]# tar xf apache-maven-3.9.6-bin.tar.gz
[root@JK1 ~]# mv apache-maven-3.9.6 /opt/maven

1.2. 配置环境变量

[root@JK1 ~]# vim /etc/profile
......最后一行追加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

1.3. 编辑 maven 配置文件

使用 vim 搜索功能找到<localRepository>模块和<mirrors>模块,分别修改为如下内容

[root@JK1 ~]# vim /opt/maven/conf/settings.xml
  -->		# 该行添加这个符号
  <localRepository>/opt/maven/repo</localRepository>
# 删除该行-->符号
......
<mirrors>
......
    <mirror>		# 如下是阿里云maven源
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/nexus/content/groups/public</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
[root@JK1 ~]# mkdir /opt/maven/repo
[root@JK1 ~]# chmod 777 /opt/maven/repo

2. Jenkins 集成 maven

2.1. 配置 maven

Dashboard ——> Manage Jenkins ——> Tools,下滑找到 JDK 安装模块,按下图配置即可

再下滑找到 maven 安装模块,按照下图配置

2.2. 配置 Jenkins 全局变量

Dashboard ——> Manage Jenkins ——> System,下滑找到全局属性,按照下图配置,保存

2.3. 下载 maven 插件

Dashboard ——> Manage Jenkins ——> Plugins ——> Available plugins,搜索 maven,选择 maven intergration 插件下载安装(已下载可忽略该步)

3. 下载项目模板

地址:https://start.spring.io

Project:Maven

Language:Java

SpringBoot:只选 3.2.2,SNAPSHOT(快照类型的不要选,会报错)

Project Metadata:无需修改

Packaging:War

Java:17(按照自己安装的 Java 版本选择)

右侧 Dependencies:添加依赖,添加 Spring Web 依赖,使 demo 项目拥有可定制的 web 功能。

最后点击下方的 GENERATE 把前端项目下载出来!

4. 推送项目到 Gitlab

4.1. 解压项目

将下载的项目压缩包导入到 GIT 主机

[root@GIT ~]# ls
 公共   文档   anaconda-ks.cfg                          initial-setup-ks.cfg
 模板   下载  'demo_(1).zip'                            ip.sh
 视频   音乐   gitlab-ce-12.10.14-ce.0.el8.x86_64.rpm
 图片   桌面   hostname.sh
[root@GIT ~]# unzip 'demo_(1).zip' 
Archive:  demo_(1).zip
   creating: demo/
  inflating: demo/HELP.md            
  inflating: demo/.gitignore         
   creating: demo/src/
   creating: demo/src/main/
   creating: demo/src/main/java/
   creating: demo/src/main/java/com/
   creating: demo/src/main/java/com/example/
   creating: demo/src/main/java/com/example/demo/
  inflating: demo/src/main/java/com/example/demo/DemoApplication.java  
   creating: demo/src/main/resources/
  inflating: demo/src/main/resources/application.properties  
   creating: demo/src/test/
   creating: demo/src/test/java/
   creating: demo/src/test/java/com/
   creating: demo/src/test/java/com/example/
   creating: demo/src/test/java/com/example/demo/
  inflating: demo/src/test/java/com/example/demo/DemoApplicationTests.java  
  inflating: demo/pom.xml            
  inflating: demo/mvnw               
  inflating: demo/mvnw.cmd           
   creating: demo/.mvn/
   creating: demo/.mvn/wrapper/
  inflating: demo/.mvn/wrapper/maven-wrapper.properties  
  inflating: demo/.mvn/wrapper/maven-wrapper.jar  

4.2. 创建 Gitlab 项目

Gitlab 首页点击 New Project,创建名为“maven-demo”的项目

4.3. 推送项目到 Gitlab 新建的项目

[root@GIT ~]# cd demo/
[root@GIT demo]# ls
HELP.md  mvnw  mvnw.cmd  pom.xml  src
[root@GIT demo]# cd src/main/java/com/example/demo/
[root@GIT demo]# ls
DemoApplication.java  ServletInitializer.java
[root@GIT demo]# cp DemoApplication.java HelloController.java
[root@GIT demo]# vim HelloController.java 		# 修改代码

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

        @GetMapping("/")
        public String hello() {
                return "Hello World!";
        }
}
[root@GIT resources]# cd /root/demo/src/main/resources
[root@GIT resources]# vim application.properties
server.port=9090
[root@GIT demo]# cd /root/demo/
[root@GIT demo]# git init
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示:	git config --global init.defaultBranch <名称>
提示:
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示:	git branch -m <name>
已初始化空的 Git 仓库于 /root/demo/.git/
[root@GIT demo]# git add .
[root@GIT demo]# git remote add origin "git@192.168.15.102:root/maven-demo.git"		# 这个地址是Gitlab项目的clone地址
[root@GIT demo]# git commit -m "maven"
[master(根提交) e02c5a4] maven
 9 files changed, 616 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .mvn/wrapper/maven-wrapper.jar
 create mode 100644 .mvn/wrapper/maven-wrapper.properties
 create mode 100755 mvnw
 create mode 100644 mvnw.cmd
 create mode 100644 pom.xml
 create mode 100644 src/main/java/com/example/demo/DemoApplication.java
 create mode 100644 src/main/resources/application.properties
 create mode 100644 src/test/java/com/example/demo/DemoApplicationTests.java
[root@GIT demo]# git push -u origin master 
枚举对象中: 25, 完成.
对象计数中: 100% (25/25), 完成.
使用 2 个线程进行压缩
压缩对象中: 100% (15/15), 完成.
写入对象中: 100% (25/25), 62.83 KiB | 15.71 MiB/s, 完成.
总共 25(差异 0),复用 0(差异 0),包复用 0
To 192.168.15.102:root/maven-demo.git
 * [new branch]      master -> master
分支 'master' 设置为跟踪 'origin/master'。

5. Jenkins 创建 maven 项目

回到 Jenkins 首页,新建 Item,构建一个 maven 项目

6. maven 项目配置

6.1. 复制 Gitlab 项目地址

先回到 Gitlab 页面点击刚才创建的 maven-demo 项目,将 clone 地址复制,因为之前创建的密码凭证,所以需要复制 HTTP 的地址

6.2. 源码管理

回到 Jenkins 页面,找到刚才创建的 maven 项目的 configure 中的源码管理,选择 Git

Repository URL:Gitlab 的项目地址

Credentials:为 Gitlab 用户新建的 Jenkins 凭证

6.3. Build

下滑找到 Build 模块,按如下内容填写即可,最后保存

7. 构建测试

7.1. 开始构建

点击 Build Now,等待项目构建完成

7.2. 查看输出结果

点击 #1 ——> 控制台输出

7.3. maven 打包成功

回到终端验证 jar 包是否打包完成

[root@JK1 ~]# cd /var/lib/jenkins/workspace/mvn-project
[root@JK1 mvn-project]# ls
mvnw  mvnw.cmd  pom.xml  src  target
[root@JK1 mvn-project]# cd target/
[root@JK1 target]# ls
classes                           generated-sources       maven-status
demo-0.0.1-SNAPSHOT.war           generated-test-sources  surefire-reports
demo-0.0.1-SNAPSHOT.war.original  maven-archiver          test-classes
[root@JK1 target]# java -jar demo-0.0.1-SNAPSHOT.war 		# 测试jar包是否可执行

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

2024-02-06T10:01:21.299Z  INFO 1 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication v0.0.1-SNAPSHOT using Java 17-ea with PID 1 (/app.war started by root in /)
2024-02-06T10:01:21.302Z  INFO 1 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2024-02-06T10:01:22.411Z  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-02-06T10:01:22.424Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-02-06T10:01:22.424Z  INFO 1 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.18]
2024-02-06T10:01:22.501Z  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-02-06T10:01:22.502Z  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1094 ms
2024-02-06T10:01:22.884Z  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 9090 (http) with context path ''
2024-02-06T10:01:22.904Z  INFO 1 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 2.203 seconds (process running for 2.706)

7.4. 访问测试页面

五、SonarQube 代码审查

1. 安装 Postgre SQL

JK1 主机安装 Postgre SQL

sonarqube 在 7.9 版本后不再支持 MySQL 数据库,此时需要安装 Postgre SQL,下载过程稍微会有些慢

[root@JK1 ~]# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm		# 下载pgsql的yum源
[root@JK1 ~]# dnf -qy module disable postgresql		# 密钥对验证
[root@JK1 ~]# dnf install -y postgresql16-server		# 安装pgsql-16服务端
[root@JK1 ~]# /usr/pgsql-16/bin/postgresql-16-setup initdb	# pgsql数据库初始化
[root@JK1 ~]# vim /var/lib/pgsql/16/data/pg_hba.conf
......下方修改为如下内容......
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     all                                     peer
#host    replication     all             127.0.0.1/32            scram-sha-256
#host    replication     all             ::1/128                 scram-sha-256
[root@JK1 ~]# systemctl start postgresql-16.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
启动“postgresql-16.service”需要认证。
Authenticating as: root
Password: 
==== AUTHENTICATION COMPLETE ====

2. 配置数据库

[root@JK1 ~]# sudo passwd postgres
[root@JK1 ~]# su - postgres 	# 使用postgres用户身份登录
[postgres@JK1 ~]$ createuser sonar
[postgres@JK1 ~]$ psql 	# 进入pgsql命令行
psql (16.1)
输入 "help" 来获取帮助信息.

postgres=# alter user sonar with encrypted password 'sonar';		# 为sonar用户设置密码
ALTER ROLE
postgres=# create database sonar with encoding 'UTF8' owner sonar template=template0;		# 创建数据库
CREATE DATABASE

3. 下载 SonarQube

官方网站:Download | SonarQube | Sonar

下载社区版即可,下载完成后导入到 JK1 主机内

[root@JK1 ~]# yum -y install unzip
[root@JK1 ~]# unzip sonarqube-10.3.0.82913.zip
[root@JK1 ~]# ls
公共  下载                apache-maven-3.9.6-bin.tar.gz  sonarqube-10.3.0.82913
模板  音乐                hostname.sh                    sonarqube-10.3.0.82913.zip
视频  桌面                initial-setup-ks.cfg
图片  anaconda-ks.cfg     ip.sh
文档  apache-maven-3.9.6  overlay
[root@JK1 ~]# mkdir /opt/sonar
[root@JK1 ~]# mv sonarqube-10.3.0.82913/* /opt/sonar/
[root@JK1 ~]# useradd sonar
[root@JK1 ~]# chown -R sonar. /opt/sonar/
[root@JK1 ~]# cat >> /etc/sysctl.conf << END
> vm.max_map_count=262144		# 开启最大虚拟内存为262144,否则sonarqube启动不了
> END
[root@JK1 ~]# sysctl -p
vm.max_map_count = 262144
[root@JK1 ~]# vim /opt/sonar/conf/sonar.properties
 26 sonar.jdbc.username=sonar		# pgsql数据库的账号
 27 sonar.jdbc.password=sonar		# pgsql数据库的密码
 44 sonar.jdbc.url=jdbc:postgresql://localhost/sonar
[root@JK1 ~]# su sonar /opt/sonar/bin/linux-x86-64/sonar.sh start
/usr/bin/java
Starting SonarQube...
Started SonarQube.

4. 访问 SonarQube 页面

SonarQube 地址:http://192.168.15.101:9000,默认用户名为 admin,密码为 admin

5. 创建 Token 凭证

Sonar 页面,点击右上角头像,点击 My Account,按红线提示依次点击,输入完信息后点击 Generate 生成即可

token 凭证必须要复制!!!否则 Jenkins 无法登录到 Sonar

6. 安装 Jenkins 插件

回到 Jenkins 页面,搜索插件 SonarQube Scanner 插件,安装

7. 安装 SonarQube-Scanner

回到 Jenkins 管理,点击 Tools,找到 SonarQube-Scanner 安装,点击新增安装,写个名称,保存即可

8. 连接 SonarQube 服务

回到 Manage Jenkins,点击 System,下滑找到 SonarQube Servers,点击 Add SonarQube,先按照如下模板填写信息,再点击添加

弹出窗口,类型选择 Secret Text,然后在 Secret 框内粘贴之前生成的 Sonar 的 token 认证,描述写成该凭证名即可(随意)

添加完成后,选择刚才创建的凭证,点击保存

9. SonarQube 关闭 SCM

回到 Sonar 页面,依次按提示点击,关闭审查结果上传到 SCM 功能

10. 构建前操作

回到 Jenkins,点击之前创建的 maven 项目,点击 Configure,找到 Pre steps,点击 Add pre-build step,选择 Execute SonarQube Scanner,按下图内容填写:

Analysis properties 的模板:

# must be unique in a given SonarQube instance
sonar.projectKey=mvn-project		# 可以写自己的项目名称
# this is the name and version displayed in the SonarQube UI. Was mandatoryprior to SonarQube 6.1.
sonar.projectName=mvn-project		# 项目名
sonar.projectVersion=1.0				# 该项目的版本

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.			# 项目的目录
sonar.exclusions=**/test/**,**/target/**,**/java/**		# 在项目目录下不检测的某些目录。注意:后缀有Java的文件要去除!

sonar.java.source=17		# 该项目使用的jdk版本
sonar.java.target=17

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

11. 开始构建

点击 Build Now,然后查看控制台输出

12. 查看代码检查结果

回到 Sonar 首页,找到生成的已检查的项目,点击 Code,自行翻译

六、项目部署到容器

1. 部署 Tomcat 服务器

1.1. 安装 Tomcat

Tomcat 官网下载软件包:Apache Tomcat® - Welcome!

[root@Tom tomcat]# yum -y install java-17*
[root@Tom ~]# java -version
openjdk version "17.0.10" 2024-01-16 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.10.0.7-1) (build 17.0.10+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.10.0.7-1) (build 17.0.10+7-LTS, mixed mode, sharing)
[root@Tom ~]# tar xf apache-tomcat-9.0.22.tar.gz 
[root@Tom ~]# mv apache-tomcat-9.0.22 /usr/local/tomcat
[root@server ~]# cat >> /etc/profile << END
> JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.10.0.7-2.el8.x86_64					 # Java的家目录
> CLASSPATH=$JAVA_HOME/lib/					 # Java的lib库
> PATH=$PATH:$JAVA_HOME/bin					 # Java的命令变量
> export PATH JAVA_HOME CLASSPATH		 # 使Java环境变量生效
> END
[root@Tom ~]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-17-openjdk-17.0.10.0.7-2.el8.x86_64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

访问 http://192.168.15.103:8080

1.2. 配置 Tomcat 角色用户

[root@Tom ~]# vim /usr/local/tomcat/conf/tomcat-users.xml		# tomcat存储角色和用户的配置文件
......省略部分内容......
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
# 添加以上内容,username和password是一会登录tomcat项目管理页面的凭证,需记住
</tomcat-users>
[root@Tom ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
# 将以上两行内容注释掉,使用<!--和-->将需要注释的内容扩起来即可
[root@Tom ~]# /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-17-openjdk-17.0.10.0.7-2.el8.x86_64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@Tom ~]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-17-openjdk-17.0.10.0.7-2.el8.x86_64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
# 重启tomcat

1.3. 访问测试

访问页面,点击红线处

提示登录时,用户名为:tomcat,密码为:tomcat

最终登录页面展示

2. 项目部署

2.1. 下载插件

回到 Jenkins 页面,找到 Jenkins 的插件管理模块,搜索 deploy to container 插件,安装

2.2. 构建后操作

下载插件完成后,回到项目页面,进入项目配置,找到构建后操作,下拉选择框选中红线部分

WAR/EAR files:target/*.war(通用路径)

Containers:Tomcat 9.x Remote(选择您部署的对应版本 tomcat)

Credentials:点击添加,设置之前的 Tomcat 账户名和密码为凭证,设置后选用

Tomcat URL:您的 Tomcat 服务器地址

2.3. 开始构建

点击 Build Now,等待项目构建完毕查看控制台输出,查看提示信息,可以看到项目已成功打包并发布到 tomcat 服务器

回到 tomcat 服务器终端,也可以看到 tomcat 已由 Jenkins 自动化构建/部署/发布了项目

[root@Tom ~]# cd /usr/local/tomcat/webapps/
[root@Tom webapps]# ls
demo-0.0.1-SNAPSHOT      docs      host-manager  ROOT
demo-0.0.1-SNAPSHOT.war  examples  manager
[root@Tom webapps]# cd demo-0.0.1-SNAPSHOT/
[root@Tom demo-0.0.1-SNAPSHOT]# ls
META-INF  org  WEB-INF

七、部署 Harbor 镜像仓库

1. 安装 Compose

链接:百度网盘 请输入提取码

提取码:4k71

2. 安装 Harbor

将下载好的 Docker-compose 文件导入到终端

[root@JK1 ~]# mv docker-compose /usr/local/bin/
[root@JK1 ~]# chmod +x /usr/local/bin/docker-compose
[root@JK1 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
......等待下载完成
[root@JK1 ~]# tar -xf harbor-offline-installer-v2.5.3.tgz -C /usr/local
[root@JK1 ~]# cd /usr/local/harbor/
[root@JK1 harbor]# ls
common.sh  harbor.v2.5.3.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@JK1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@JK1 harbor]# vim harbor.yml
  1 # Configuration file of Harbor
  2 
  3 # The IP address or hostname to access admin UI and registry service.
  4 # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external cl    ients.
  5 hostname: 192.168.15.101
  6 
  7 # http related config
  8 http:
  9   # port for http, default is 80. If https enabled, this port will redirect to https po    rt
 10   port: 90		# 修改端口,以免端口冲突
 11 
 12 # https related config
 13 #https:			# 此行注释,暂时不用tls安全
 14   # https port for harbor, default is 443
 15   #port: 443
 16   # The path of cert and key files for nginx
 17   #certificate: /usr/local/harbor/ssl/harbor.crt		# 注释此行
 18   #private_key: /usr/local/harbor/ssl/harbor.key		# 注释此行
 .....省略部分内容......
 34 harbor_admin_password: Harbor12345		# harbor仓库的登录密码,用户名为admin
:wq
[root@JK1 harbor]# docker load --input harbor.v2.5.3.tar.gz
[root@JK1 harbor]# mkdir -p common/config
[root@JK1 harbor]# ./prepare
[root@JK1 harbor]# ./install.sh
[root@JK1 harbor]# vim /usr/lib/systemd/system/harbor.service

[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
#注意docker-compose和harbor的安装位置
ExecStart=/usr/local/bin/docker-compose -f  /usr/local/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /usr/local/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
[root@JK1 harbor]# systemctl enable harbor.service

3. 登录 Harbor

3.1. 终端登录

[root@JK1 harbor]# vim /etc/docker/daemon.json
{
        "insecure-registries": ["192.168.15.101:90"]
# 这里存放阿里云的镜像加速器地址
# 因为json文件不允许注释,所以镜像加速器要先复制保存好再替换成上面的地址
}
[root@JK1 harbor]# systemctl daemon-reload
[root@JK1 harbor]# systemctl restart docker.service
[root@JK1 harbor]# docker login 192.168.15.101:90 -uadmin
# 登录前需要在hosts文件内做好主机域名映射!!!
Password: 		# 密码是配置单里的密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

3.2. 登录 web 页面

访问 IP+修改后的端口,出现提示页面,点高级,点继续访问或信任访问

八、Dockerfile 构建镜像

1. Dockerfile 配置

[root@JK1 ~]# cd /var/lib/jenkins/workspace/mvn-project/target
[root@JK1 target]# vim Dockerfile 
FROM openjdk:17-jdk-alpine
ARG WAR_FILE
COPY ${WAR_FILE} app.war
ENTRYPOINT ["java","-jar","/app.war"]

2. Jenkins 构建镜像

2.1. 安装 SSH 插件

去 Jenkins 插件商城找到 SSH 插件安装,已安装可忽略

2.2. 添加凭证

在 Manage Jenkins 内找到 Credentials,点击 System ——> Global credentials (unrestricted)

撰写凭证时记得添加凭证描述

2.3. 配置 SSH 主机

回到 Jenkins 首页,点 Manage Jenkins ——> System,下滑找到 SSH remote hosts,编辑完后保存即可

2.4. 配置项目

回到 Jenkins 首页找到自己的 maven 项目,进入配置页面,找到 Post Steps,按如下内容修改编写

cp /var/lib/jenkins/workspace/mvn-project/target/*.war /docker
docker build --build-arg WAR_FILE=demo-0.0.1-SNAPSHOT.war -t mvn-demo:v1 /docker
docker login -u admin -p Harbor12345 http://192.168.15.101:90
docker tag mvn-demo:v1 192.168.15.101:90/library/mvn-demo:latest
docker push 192.168.15.101:90/library/mvn-demo:latest

2.5. 开始构建

所有保存好后点击构建即可,然后再查看本次构建的控制台输出

3. 测试运行容器

[root@JK1 target]# docker run -id --name spring -p 8090:8080  192.168.15.101:90/library/mvn-demo:v1
1ea6e856e6277abb66200c6733b6735d8d7f2d6a712c4351ee62f83d8ccafdbf
[root@JK1 target]# docker ps
CONTAINER ID   IMAGE     		 														COMMAND                CREATED         STATUS         PORTS                                       NAMES
1ea6e856e627   192.168.15.101:90/library/mvn-demo:v1   "java -jar /app.war"   3 seconds ago   Up 2 seconds   0.0.0.0:8090->8080/tcp, :::8090->8080/tcp   spring

4. 访问测试页面

访问容器映射的端口 8090,IP 地址为 192.168.15.101

九、K8S 集群部署容器集群

1. 修改 Containerd 配置

在 k8s-master 终端内操作

[root@k8s-master01 ~]# vim /etc/containerd/config.toml
......省略部分内容......
149       [plugins."io.containerd.grpc.v1.cri".registry.configs]		# 添加如下内容,引号内地址为私有的harbor仓库地址
150         [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.15.101:90".    tls]  151           insecure_skip_verify = true152         [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.15.101:90".    auth] 
153           username = "admin"
154           password = "Harbor12345"
155   
156       [plugins."io.containerd.grpc.v1.cri".registry.headers]
157   
158       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]		# 添加如下内容
159         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.15.101:90"]
160           endpoint = ["http://192.168.15.101:90"]
:wq		# 保存并退出
[root@k8s-master01 ~]# systemctl daemon-reload
[root@k8s-master01 ~]# systemctl restart containerd.service

2. Containerd 配置导入到 Node

[root@k8s-master01 ~]# for i in k8s-node01 k8s-node02;do scp /etc/containerd/config.toml $i:/etc/containerd/;done
# 去node01和02重启containerd服务
[root@k8s-node01 ~]# systemctl restart containerd
[root@k8s-node02 ~]# systemctl restart containerd

3. 配置 K8S 凭证

回到 Jenkins 按照上面配置凭证步骤操作

找到 Dashboard > Manage Jenkins > Credentials > System > Global credentials (unrestricted) > Add Credentials

4. 添加 remote host

回到 Jenkins 首页,找到 Dashboard > Manage Jenkins > System > SSH remote hosts,点击新增

5. 部署 Deployment

[root@k8s-master01 ~]# vim /root/pod/spring-demo.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-web
  labels:
    app: spring
spec:
  replicas: 3
  selector:
    matchLabels:
      app: spring
  template:
    metadata:
      labels:
        app: spring
    spec:
      containers:
      - image: 192.168.15.101:90/library/mvn-demo:v1		# 使用harbor私有仓库的镜像
        name: spring
        ports:
        - containerPort: 8080		# 容器的端口
      imagePullSecrets:		# secret资源,目的:身份认证
      - name: harbor-auth		# 引用harbor认证
---
apiVersion: v1
kind: Service
metadata:
  name: spring-svc
spec:
  selector:
    app: spring
  ports:
  - name: http8080
    protocol: TCP
    port: 8080
    targetPort: 8080
  type: NodePort # 添加此行

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress		# 这个不要改
spec:
  ingressClassName: nginx		# 这个不要改
  rules:
  - host: myapp.test.com
    http:
      paths:
      - backend:
          service:
            name: spring-svc
            port:
              number: 8080
        path: /
        pathType: ImplementationSpecific

6. 安装 Ingress Controller

ingress.yaml

将 ingress.yaml 导入到 k8s 集群的 master 主机的 /root/pod 下

7. Jenkins 远程命令

进入 Jenkins 项目配置,找到构建环境,按下图部署

kubectl get ingressclass -n ingress-nginx &> /dev/null
if [ $? -eq 0 ];then echo "ingress controller已安装";else kubectl create -f /root/pod/ingress.yaml;fi
kubectl get pod | grep "spring" &> /dev/null
if [ $? -eq 0 ];then echo "k8s资源发布成功";else kubectl create -f /root/pod/spring-demo.yaml;fi

8. 修改 Hosts

修改域名映射文件:

C:\Windows\System32\drivers\etc

找到 hosts 文件,使用记事本打开,编辑最后的内容

9. 测试访问

访问 Ingress 定义的域名 myapp.test.com:30890

如果出现 Whitelabel Error Page 提示语不用管,那是负责管理代码编写工作部的事,与运维部署无关!

也可以使用 https 访问,使用之前定义的 https 的端口

十、Jira 整合

1. 安装 Jira

1.1. 安装 MySQL

导入 MySQL 安装包到终端内

[root@JIRA ~]# yum -y install ncurses-compat-libs
[root@JIRA ~]# tar -xf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
[root@JIRA ~]# mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql
[root@JIRA ~]# mkdir -p /usr/local/mysql/{data,logs}
[root@JIRA ~]# useradd -r -s /sbin/nologin mysql
[root@JIRA ~]# cat > /etc/my.cnf << END
> [mysql]
> auto-rehash
> [mysqld]
> datadir=/usr/local/mysql/data
> socket=/usr/local/mysql/mysql.sock
> symbolic-links=0
> character_set_server=utf8
> init_connect='SET NAMES utf8'
> [mysqld_safe]
> log-error=/usr/local/mysql/logs/error.log
> pid-file=/usr/local/mysql/mysql.pid
> [client]
> socket=/usr/local/mysql/mysql.sock
> END
[root@JIRA ~]# touch /usr/local/mysql/logs/error.log
[root@JIRA ~]# chown -R mysql.mysql /usr/local/mysql/
[root@JIRA ~]# chown -R mysql.mysql /etc/my.cnf
[root@JIRA ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
[root@JIRA ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@JIRA ~]# sed -i '46c basedir=/usr/local/mysql' /etc/init.d/mysqld
[root@JIRA ~]# sed -i '47c datadir=/usr/local/mysql/data' /etc/init.d/mysqld
[root@JIRA ~]# sed -i '63c mysqld_pid_file_path=/usr/local/mysql/data/mysqld.pid' /etc/init.d/mysqld
[root@JIRA ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS! 
[root@JIRA ~]# ln -s /usr/local/mysql/bin/* /usr/local/sbin/
[root@JIRA ~]# mysqladmin -uroot password 123456
[root@JIRA ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database jira default character set utf8 collate utf8_bin;		# 创建jira数据库
Query OK, 1 row affected (0.01 sec)

mysql> grant all on `jira`.* to 'jira'@'%' identified by '123456';		# 创建jira账号
Query OK, 0 rows affected, 1 warning (0.01 sec)

1.2. 安装 JDK

[root@JIRA ~]# yum -y install java-17*

1.3. 安装 Jira

下载地址:https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.2.2-x64.bin

Jira 破解包下载:http://files.cnblogs.com/files/xugongyang/jira7.3破解包.rar

破解包需要先解压,然后将里面的三个破解包导入到终端

[root@JIRA ~]# ls
公共  音乐                                   initial-setup-ks.cfg
模板  桌面                                   ip.sh
视频  anaconda-ks.cfg                        JIRA_Core-7.2.1-language-pack-zh_CN.jar
图片  atlassian-extras-3.2.jar               mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
文档  atlassian-jira-software-7.2.2-x64.bin  mysql-connector-java-5.1.39-bin.jar
下载  hostname.sh
[root@JIRA ~]# chmod a+x atlassian-jira-software-7.2.2-x64.bin
[root@JIRA ~]# ./atlassian-jira-software-7.2.2-x64.bin
Unpacking JRE ...
Starting Installer ...
二月 26, 2024 9:22:10 上午 java.util.prefs.FileSystemPreferences$1 run
信息: Created user preferences directory.

This will install JIRA Software 7.2.2 on your computer.
OK [o, Enter], Cancel [c]
o		# 输入字母o
Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (use default settings) [1], Custom Install (recommended for advanced users) [2, Enter], Upgrade an existing JIRA installation [3]
2		# 输入2,选择自定义安装

Where should JIRA Software be installed?
[/opt/atlassian/jira]
/usr/local/jira		# 输入安装目录
Default location for JIRA Software data
[/var/atlassian/application-data/jira]
/var/atlassian/application-data/jira		# 将上行括号内容复制粘贴到此
Configure which ports JIRA Software will use.
JIRA requires two TCP ports that are not being used by any other
applications on this machine. The HTTP port is where you will access JIRA
through your browser. The Control port is used to startup and shutdown JIRA.
Use default ports (HTTP: 8080, Control: 8005) - Recommended [1, Enter], Set custom value for HTTP and Control ports [2]
1		# 输入1,使用默认端口,避免被占用也可输入2修改为自定义端口
JIRA can be run in the background.
You may choose to run JIRA as a service, which means it will start
automatically whenever the computer restarts.
Install JIRA as Service?
Yes [y, Enter], No [n]
y		# 输入y,安装Jira服务
Details on where JIRA Software will be installed and the settings that will be used.
Installation Directory: /usr/local/jira 
Home Directory: /var/atlassian/application-data/jira 
HTTP Port: 8080 
RMI Port: 8005 
Install as service: Yes 
Install [i, Enter], Exit [e]
i		# 输入i,开始安装

Extracting files ...
                                                                           

Please wait a few moments while JIRA Software starts up.
Launching JIRA Software ...
Installation of JIRA Software 7.2.2 is complete
Your installation of JIRA Software 7.2.2 is now ready and can be accessed
via your browser.
JIRA Software 7.2.2 can be accessed at http://localhost:8080
Finishing installation ...		# 安装完成
[root@JIRA ~]# vim /usr/local/jira/conf/server.xml
......省略部分内容......
113         <Engine name="Catalina" defaultHost="JIRA">		# 修改主机名
114             <Host name="JIRA" appBase="webapps" unpackWARs="true" autoDeploy="true">		# 修改主机名
......省略部分内容......
[root@JIRA ~]# /usr/local/jira/bin/stop-jira.sh		# 停止jira
[root@JIRA ~]# cp atlassian-extras-3.2.jar JIRA_Core-7.2.1-language-pack-zh_CN.jar mysql-connector-java-5.1.39-bin.jar /usr/local/jira/atlassian-jira/WEB-INF/lib/
[root@JIRA ~]# /usr/local/jira/bin/startup.sh 
                .....
          .... .NMMMD.  ...
        .8MMM.  $MMN,..~MMMO.
        .?MMM.         .MMM?.

     OMMMMZ.           .,NMMMN~
     .IMMMMMM. .NMMMN. .MMMMMN,
       ,MMMMMM$..3MD..ZMMMMMM.
        =NMMMMMM,. .,MMMMMMD.
         .MMMMMMMM8MMMMMMM,
           .ONMMMMMMMMMMZ.
             ,NMMMMMMM8.
            .:,.$MMMMMMM
          .IMMMM..NMMMMMD.
         .8MMMMM:  :NMMMMN.
         .MMMMMM.   .MMMMM~.
         .MMMMMN    .MMMMM?.

      Atlassian JIRA
      Version : 7.2.2
                  

If you encounter issues starting or stopping JIRA, please see the Troubleshooting guide at http://confluence.atlassian.com/display/JIRA/Installation+Troubleshooting+Guide


Server startup logs are located in /usr/local/jira/logs/catalina.out
Using CATALINA_BASE:   /usr/local/jira
Using CATALINA_HOME:   /usr/local/jira
Using CATALINA_TMPDIR: /usr/local/jira/temp
Using JRE_HOME:        /usr/local/jira/jre/
Using CLASSPATH:       /usr/local/jira/bin/bootstrap.jar:/usr/local/jira/bin/tomcat-juli.jar
Using CATALINA_PID:    /usr/local/jira/work/catalina.pid
Existing PID file found during start.
Removing/clearing stale PID file.
Tomcat started.

1.4. 访问 Jira

浏览器访问 IP+8080 端口

1.5. 配置 Jira

1.5.1. 连接数据库

方式一:选择内置,让其自动连接到已配置好的 MySQL 数据库

方式二:也可以选择其他数据库,手动连接现有的 MySQL 数据库

1.5.2. 绑定授权码

复制服务器 ID,点击 generate a JIRA trial license

转到 Atlassian 登录网站,选择创建账户,自行注册

转到新页面,选择 Jira Software (Data Center),新用户试用 30 天

复制框内授权码

回到 Jira 页面,粘贴到授权码

1.5.3. 设置管理员信息

点击完成,等待配置完成,后续步骤自行处理

2. 创建 Jira 项目

第一步:

第二步:

第三步:

第四步:

3. 安装插件

回到 Jenkins,在插件商店内找 jira,勾选第一个,然后再下滑勾选

等待安装即可

4. 配置 Jenkins 集成

回到 Jenkins 首页,点击 Dashboard > Manage Jenkins > System > JiraTestResultReporter

向下找到 JIRA Steps,按如下配置

5. 配置 Jira 连接 Jenkins

回到 Jira 页面,点击系统设置

点应用程序,再点 Application links

6. 设置网络钩子

按下图配置,最后下滑到底点击 Create

点击 URL

出现该页面表示通过测试

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值