jenkins+harbor+gitee



宿主机软件安装

jdk

1
2
[root@centos7cz tools]# whereis java
java: /usr/bin/java /carloz/tools/jdk1.8.0_231/bin/java

maven

  1. 下载解压
1
2
3
4
5
6
7
cd /carloz/tools/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 maven-3.6.3
cd maven-3.6.3/
pwd
/carloz/tools/maven-3.6.3
  1. 配置环境变量
1
2
3
4
5
vi /etc/profile
MAVEN_HOME=/carloz/tools/maven-3.6.3
export PATH=${MAVEN_HOME}/bin:${PATH}

source /etc/profile
  1. 查看结果
1
mvn -v
  1. 替换阿里源
1
vi /carloz/tools/maven-3.6.3/conf/settings.xml

找到<mirrors></mirrors>标签对,添加一下代码:

1
2
3
4
5
6
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
  1. 指定下载资源位置
1
2
3
mkdir -p /data/maven-repo
vi /carloz/tools/maven-3.6.3/conf/settings.xml
<localRepository>/data/maven-repo</localRepository>
  1. 指定jdk版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /carloz/tools/maven-3.6.3/conf/settings.xml

<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

git

1
2
3
4
5
6
[root@centos7cz ~]# yum install -y git
[root@centos7cz ~]# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
[root@centos7cz ~]# git --version
git version 1.8.3.1
[root@centos7cz ~]#

jenkins做常规配置

点击系统管理->插件管理,进行一些自定义的插件安装:

角色管理权限插件

Role-based Authorization Strategy

ssh

安装ssh插件

配置公钥凭证

在系统管理->系统配置中添加全局ssh的配置,这样Jenkins使用ssh就可以执行远程的linux脚本了:

jdk

路径: 系统管理 -> 全局工具配置 -> JDK

maven

通过系统管理->全局工具配置来进行全局工具的配置,比如maven的配置

git

安装插件:

  • Build With Parameters

  • Git Parameter

git可执行文件配置

gitee

在线安装

  • 前往 Manage Jenkins -> Manage Plugins -> Available
  • 右侧 Filter 输入: Gitee
  • 下方可选列表中勾选 Gitee(如列表中不存在 Gitee,则点击 Check now 更新插件列表)
  • 点击 Download now and install after restart

添加码云链接配置

  1. 前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections

  2. Connection name 中输入 Gitee 或者你想要的名字

  3. Gitee host URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)

  4. Credentials 中如还未配置码云 APIV5 私人令牌,点击Add- > Jenkins

    1. Domain 选择 Global credentials
    2. Kind 选择 Gitee API Token
    3. Scope 选择你需要的范围
    4. Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
    5. ID, Descripiton 中输入你想要的 ID 和描述即可。
  5. Credentials 选择配置好的 Gitee APIV5 Token

  6. 点击 Advanced ,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持),并可设置链接测超时时间(适您的网络环境而定)

  7. 点击 Test Connection 测试链接是否成功,如失败请检查以上 3,5,6 步骤。

配置成功后如图所示:

执行脚本准备

首先我们先把需要远程执行的脚本准备好。

脚本文件都存放在了mall-swarm项目的/document/sh目录下

上传脚本前在IDEA中修改所有脚本文件的换行符格式为LF,否则脚本会无法执行;

将所有脚本文件上传到指定目录,这里我们上传到/data/carloz/mall-swarm目录下;

1
2
3
4
5
mkdir -p /data/carloz/mall-swarm-sh
cd /data/carloz/mall-swarm-sh

# 将所有脚本文件都修改为可执行文件:
chmod +x ./mall-*

Jenkins中创建任务

接下来我们将通过在Jenkins中创建任务来实现自动化部署。由于我们的mall-swarm是个多模块的项目,部署上面和曾经的单模块项目还是有所区别的

创建gitee登录凭据

mall-admin

由于各个模块的执行任务的创建都大同小异,下面将详细讲解mall-admin模块任务的创建,其他模块将简略讲解。

  • 首先我们选择构建一个自由风格的软件项目,然后输入任务名称为mall-admin,配置其Git仓库地址,这里我直接使用了Gitee上面的地址:

  • 之后我们创建一个构建,构建mall-swarm项目中的依赖模块,否则当构建可运行的服务模块时会因为无法找到这些模块而构建失败;
1
2
# 只install mall-common,mall-mbg,mall-security三个模块
clean install -pl mall-common,mall-mbg,mall-security -am
  • 依赖项目构建示意图:

  • 再创建一个构建,单独构建并打包mall-admin模块:

  • 添加一个构建来通过SSH去执行远程任务,用于执行mall-admin的运行脚本:

  • 点击保存,完成mall-admin的执行任务创建

mall-registry

mall-registry和其他模块与mall-admin创建任务方式基本一致,只需修改构建模块时的pom.xml文件位置和执行脚本位置即可。

  • 我们可以直接从mall-admin模块的任务复制一个过来创建:

  • 修改第二个构建中的pom.xml文件位置,改为:${WORKSPACE}/mall-registry/pom.xml

  • 修改第三个构建中的SSH执行脚本文件位置,改为:/data/carloz/mall-swarm-sh/mall-registry.sh

  • 点击保存,完成mall-registry的执行任务创建。
  • 尝试构建 mall-registry 模块,如果构建成功,再创建其他模块的构建任务

其他模块

其他模块的执行任务创建,参考mall-admin和mall-registry的创建即可。

模块启动顺序问题

关于各个模块的启动顺序问题,mall-registry模块必须第一个启动,mall-config模块必须第二个启动,其他模块没有启动顺序限制。

推荐启动顺序:

  • mall-registry
  • mall-config
  • mall-monitor
  • mall-gateway
  • mall-admin
  • mall-portal
  • mall-search
  • mall-demo

总结

我们通过在Jenkins中创建任务,完成了微服务架构中服务的打包部署工作,这样当我们每次修改完代码后,只需点击启动任务,就可以实现一键打包部署,省去了频繁打包部署的麻烦。

项目地址

https://github.com/macrozheng/mall-swarm