当前位置:   article > 正文

Jenkins 搭建与 Maven 项目自动化部署(Docker & Git篇)_docker: jenkins +git+mvn环境搭建

docker: jenkins +git+mvn环境搭建

1. 安装 Jenkins (版本: 2.175)

# 下载 jenkins 镜像
docker pull jenkins/jenkins

# 查看镜像对应的 Jenkins 版本
docker image inspect jenkins/jenkins:latest | grep JENKINS_VERSION

# 启动 jenkins 容器实例
docker run -d -p 7050:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins

# 查看容器实例是否启动成功
docker ps

# 进入 jenkins 容器
docker exec -it jenkins bash

# 获取 admin 账户的初始化密码(在容器内执行)
cat /var/jenkins_home/secrets/initialAdminPassword

# 浏览器端访问, 输入 admin 账户的初始化密码
http://119.29.XXX.XXX:7050/login?from=%2Fjenkins

# 输入密码后, 进入 [安装推荐的插件] & [选择插件来安装], 初学者建议[安装推荐的插件]

# 创建第一个管理员用户, 可跳过此步骤, 继续使用默认的admin账户 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • -d 后台运行镜像
  • -p 7050:8080 将镜像的8080端口映射到服务器的7050端口
  • -p 50000:50000 将镜像的50000端口映射到服务器的50000端口
  • -v jenkins:/var/jenkins_home /var/jenkins_home目录为jenkins工作目录,将容器内的 /var/jenkins_home 目录挂载到宿主机上的 jenkins 目录下, jenkins 目录在宿主机上的实际目录为/var/lib/docker/volumes/jenkins
  • -v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置。
  • --name jenkins 给容器起一个别名

 

2. 插件安装

# jenkins - 系统管理 - 插件管理 - 可选插件 - 勾选对应的复选框 - 点击左下角[直接安装]

# 在[新建任务]中找不到[构建一个 maven 项目]栏目
Maven Integration

# 将成功编译的War/Jar包部署到远程的应用服务器上
Deploy to container

# 在[系统管理-系统设置]中找不到配置SSH
Publish Over SSH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

 

3. 系统设置

  • [系统管理] -> [系统设置]
  1. Jenkins Location
    在这里插入图片描述
  2. 邮件通知[Jenkins自带的邮箱功能]
    在这里插入图片描述
  3. Publish over SSH

Jenkins 容器内免密登录到 服务器B(192.168.170.1)

# 进入 Jenkins 容器内部
docker exec -it jenkins bash

# 生成密钥(在 Jenkins 容器内执行)
ssh-keygen -t rsa -P ''

# 复制生成的公钥(在 Jenkins 容器内执行)
cat ~/.ssh/id_rsa.pub

# 将上一步复制的公钥粘贴到 authorized_keys 文件中(在 B 服务器上执行)
vim ~/.ssh/authorized_keys

# 测试免密登录到服务器B, 登录账户 ubuntu(在 Jenkins 容器内执行)
ssh ubuntu@192.168.170.1

# 公共密钥(id_rsa.pub 文件内容)填充到一个远程机器上(10.XXX.XXX.XXX)的 authorized_keys 文件中
# sudo ssh-copy-id -i ~/.ssh/id_rsa.pub 10.XXX.XXX.XXX
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述
 

4. 全局工具配置

  • [系统管理] -> [全局工具配置]
    在这里插入图片描述

容器内部已经安装了的工具直接找到对应的安装路径填写即可, 未安装的工具填写工具名称并在自动安装复选框上勾选, 最后保存即可.

 

5. 创建新任务

  1. 创建任务
    在这里插入图片描述

以下子步骤 2-7 进入方法: [我的视图] -> [任务名称, eg: xn-sub-interface] -> [配置]

  1. General
    在这里插入图片描述> 项目 URL 填写 SSH 地址http 地址均可

  2. 源码管理
    在这里插入图片描述

Responsitory URL 填写 SSH 地址http 地址均可

3.1 添加凭证提供者
在这里插入图片描述
4. Build
在这里插入图片描述
5. Post Steps
在这里插入图片描述
6. 构建设置
在这里插入图片描述
7. 构建后操作
在这里插入图片描述
8. 项目构建情况
在这里插入图片描述
 

6. 全局安全配置

在这里插入图片描述

6.1 允许用户注册

在这里插入图片描述

 

A. 附录 - 帮助命令

# 清理掉没有容器使用的挂载目录
docker volume prune

# 进入 Jenkins 容器内部
docker exec -it jenkins bash

# 打印 Jenkins 内部 JAVA_HOME 环境变量
echo $JAVA_HOME

# Jenkins 容器内部自动安装的 maven 的仓库路径, 项目中需要的jar包都会下载到此目录下
ls ~/.m2/repository/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

 

B. 附录 - MySQL 安装(Docker 方式)

# vim docker-compose.yaml
version: '2'

services:
  # MySQL 服务
  com.answer.mysql:
    container_name: mysql.aal
    hostname: mysql
    image: mysql
    environment:
      - HOSTNAME=mysql
      - MYSQL_ROOT_PASSWORD=answer123456
    working_dir: /home/answer
    # MySQL 在容器启动时会自动执行 /usr/local/bin/docker-entrypoint.sh 该脚本, 并自动执行 /docker-entrypoint-initdb.d 目录下的脚本
#    command: /bin/bash -c './script.sh;'
    volumes:
      - ./data/datadir:/usr/data
      - ./data/conf:/etc/mysql
      - ./auto-script/mysql:/docker-entrypoint-initdb.d
      - ./data/mysql-files:/var/lib/mysql-files/
    ports:
      - 3301:3306
    logging:
      driver: "json-file"
      options:
        max-size: "200M"
        max-file: "5"
  • 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

初始化脚本存放在 docker-compose.yaml 文件同级目录下的 auto-script/mysql/***.sql

  1. 初始化MySQL用户脚本: init_account.sql
  2. 初始化项目表结构脚本: init_table.sql

启动 MySQL 容器实例: docker-compose -f docker-compose.yaml up -d

init_account.sql

use mysql;
create user 'answer'@'%' identified by 'answer123456';
grant all privileges on xsi.* to 'answer'@'%';
flush privileges;
  • 1
  • 2
  • 3
  • 4

init_table.sql

SET FOREIGN_KEY_CHECKS=0;
CREATE DATABASE IF NOT EXISTS xsi default charset utf8 COLLATE utf8_general_ci;
use xsi;

CREATE TABLE `tm_user` (
  `id` bigint(18) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

 

C. 附录 - Jenkins 配置参数说明

############################################################
#		构建后操作 - Send build artifacts over SSH
############################################################
# 选个一个你在系统设置里配置的配置的名字. 如: SERVER_B
SSH Server Name

# 需要上传的文件(注意:相对于工作区的路径. 看后面的配置可以填写多个, 默认用,分隔). 如: target/***.jar
Transfer Set Source files

# 移除目录(只能指定Transfer Set Source files中的目录). 如: target
Remove prefix

# 远程目录, 默认会继承系统配置. 如: xn-sub-interface/ 
# 由于[系统设置 - Publish over SSH - Remote Directory] 设置了值 `/home/ubuntu`
# 所以最终的路径是 `/home/ubuntu/xn-sub-interface/`
Remote directory



############################################################
# 		系统管理 - 系统设置 - Publish over SSH
############################################################
# 密码(key的密码,如果你设置了), 没设置填空即可
Passphrase

# ssh 证书私钥文件存放路径. 如: /var/jenkins_home/.ssh/id_rsa(Jenkins 容器内部)
Path to key

# ssh服务名称. 如: SERVER_B
SSH Servers - SSH Server Name

# 部署服务器地址. 如: 10.XXX.XXX.XXX
SSH Servers - HostName

# 部署服务器(B)的登录用户
SSH Servers - Username

# 部署服务器(B)的目录
SSH Servers - Remote Directory 
  • 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

 

首次启动Jenkins加载很慢的解决办法

出现这个情况时,是因为Jenkins的默认更新镜像用的国外的镜像,把更新镜像改成国内的即可。

vim $JENKINS_HOME/hudson.model.UpdateCenter.xml

# 将
<url>https://updates.jenkins.io/update-center.json</url> 
# 修改成
<url>http://mirror.xmission.com/jenkins/updates/update-center.json</url> 

# 重启jenkins即可

# 由于docker容器内没有vim命令, 在宿主机映射目录下修改即可
sudo vim /var/lib/docker/volumes/jenkins/_data/hudson.model.UpdateCenter.xml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/849689
推荐阅读
相关标签
  

闽ICP备14008679号