一。

pull jenkins镜像,官方建议

docker安装jenkins更改maven仓库 docker jenkins maven_jar包


二。运行jenkins容器(容器操作参考https://www.jenkins.io/zh/doc/book/installing/#%E5%9C%A8docker%E4%B8%AD%E4%B8%8B%E8%BD%BD%E5%B9%B6%E8%BF%90%E8%A1%8Cjenkins)。

docker run -d -p 8080:8080 jenkins镜像名

docker安装jenkins更改maven仓库 docker jenkins maven_maven_02


容器运行时建议将jenkins挂载本地目录到容器中作为工作目录:

docker run -d -p 8080:8080 -v /root/jenkins /var/jenkins_home 容器名称

通过上面方法启动的容器,只要定时打包备份/root/jenkins目录就可以了。升级Jenkins版本时,直接使用该目录,使用新镜像重新启动容器就可以了。三。下载ruoyi开放源码

https://gitee.com/y_project/RuoYi 电脑端登录gitee,下载到本地

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_03


下载git,并通过git上传,具体操作可以查看另一篇文章

gitee上传代码四。访问jenkins

docker安装jenkins更改maven仓库 docker jenkins maven_maven_04


进入jenkins容器,找到/var/jenkins_home上边的目录就可以查看密码

选择安装推荐的插件

docker安装jenkins更改maven仓库 docker jenkins maven_docker_05


可能会有插件安装报错,先跳过

docker安装jenkins更改maven仓库 docker jenkins maven_docker_06


开始使用jenkins,选择系统管理

docker安装jenkins更改maven仓库 docker jenkins maven_maven_07


找到插件管理

docker安装jenkins更改maven仓库 docker jenkins maven_docker_08


下载以下几种插件:

NodeJS Plugin

Maven Integration plugin

Publish Over SSH

Subversion Plug-in

输入插件名称搜索,插件勾选后点击“Install without restart”。

docker安装jenkins更改maven仓库 docker jenkins maven_docker_09


全局工具配置

docker安装jenkins更改maven仓库 docker jenkins maven_maven_10


新增jdk配置:复制java文件至jenkins容器中

docker安装jenkins更改maven仓库 docker jenkins maven_docker_11

maven配置

maven官网下载

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_12


下载

docker安装jenkins更改maven仓库 docker jenkins maven_maven_13


下载后解压缩:tar -zxvf apche-maven … 再上传至容器中

配置jenkins的maven

docker安装jenkins更改maven仓库 docker jenkins maven_git_14

之后保存。

docker安装jenkins更改maven仓库 docker jenkins maven_docker_15


配置maven本地仓库

找到maven的conf目录,修改setting.xml文件

#进入目录并创建本地仓库

cd apache-maven && mkdir repo

#修改Maven仓库位置为

/var/jenkins_home/apache-maven/repo

原配置文件

docker安装jenkins更改maven仓库 docker jenkins maven_docker_16


修改后:不知道apache-maven中的特殊符号有没有影响

docker安装jenkins更改maven仓库 docker jenkins maven_git_17


构建maven项目,报错,jenkins服务器没有安装git客户端

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_18


下载linux版本git安装至jenkins容器,依旧报错

在jenkins中添加credentials,点击下方的”添加“,配置gitee的用户名和密码和id

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_19


如果用户名和密码填错了

找到系统管理–manage credentials修改就可以了

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_20


docker安装jenkins更改maven仓库 docker jenkins maven_git_21


构建触发器,可根据需要自定义

Poll SCM

按照设定的时间规则,先比较一次源代码是否发生变更,如果发生变更,那么就按设定的时间规则(例如:每天晚上10:00)build。否则,不进行build,通常采用这种方式。

docker安装jenkins更改maven仓库 docker jenkins maven_docker_22


构建环境

在构建运行后通过SSH发送文件或执行命令

docker安装jenkins更改maven仓库 docker jenkins maven_docker_23


可以先保存再进行下一步

回到首页–系统管理–下拉找到publish over ssh

docker安装jenkins更改maven仓库 docker jenkins maven_docker_24


进入jenkins容器,输入:ssh-keygen 敲三次enter

Passphrase: 如果生成秘钥的时候输入了密码,就在这里输入,否则留空

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_25


把生成的id_rsa.pub(公钥)内容复制或者追加到要远程的机器的~/.ssh/authorized_keys(不存在可以自己创建),.ssh文件夹的权限为600,authorized_keys文件的权限为700;.ssh目录可以通过ls -a 查看到

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_26


追加命令:cat 源文件>> 目的文件

cat id_rsa.pub>>authorized_keys 这个命令可以追加多个公钥到authorized_keys 文件里。ssh自己会去读取这里面的每个服务器公钥

docker安装jenkins更改maven仓库 docker jenkins maven_docker_27

把id_rsa(私钥)的内容填写在Jenkins SSH Key -> Key 里面

或者指定Path to key(jenkins机器私钥的文件路径)也可以

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_28


填写名称、主机ip、ssh用户名、远程的目录(最好写/,后面就可以用绝对路径了)

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_29


不要勾选【Use password authentication, or use a different key】使用密码登录

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_30


点击【Test Configuration】,测试连接,显示Success即可;

我的点测师连接后报错:

docker安装jenkins更改maven仓库 docker jenkins maven_docker_31


测试是否可以通过ssh连接:ssh root@IP地址

docker安装jenkins更改maven仓库 docker jenkins maven_docker_32


可以连接,不过要输入密码才能连接

应该jenkins版本与ssh版本生成的密钥不兼容

这个时候可以在远程服务器通过 journalctl --unit=sshd查看日志

在jenkins登录后首页的右下角,可以看到当前的版本

生成之前版本的密钥:

ssh-keygen -m PEM -t rsa -b 4096

-m 参数指定密钥的格式,PEM是rsa之前使用的旧格式

-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。

重新设置公钥和密钥

测试连接后换了一种错误:

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [k8s]. Message [Auth fail]]
jenkins.plugins.publish_over。BapPublisherException:无法连接和初始化SSH连接。消息:[无法连接配置[k8s]的会话。消息[验证失败]]

docker安装jenkins更改maven仓库 docker jenkins maven_git_33


查看ssh日志:journalctl --unit=sshd

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_34


依旧不行,上边这种方法是jenkins容器和服务器在同一台3服务器,不知道是不是这个原因。换成windows服务器和linux虚拟机。

jenkins安装在windos服务器

1

配置jak环境1.8

2

配置maven环境:

下载maven压缩包

将maven压缩包解压到指定目录

配置MAVE_HOME环境变量

在PATH环境变量后面加上%MAVE_HOME%\bin

配置maven本地仓库

找到maven安装包—conf—setings.xml localrepository是本地仓库地址

docker安装jenkins更改maven仓库 docker jenkins maven_docker_35

3

安装tomcat运行环境。

docker安装jenkins更改maven仓库 docker jenkins maven_docker_36


4

下载jenkins war 包

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_37


5

解压缩后,将jenkins.war包放置在tomcat的wepapps目录下

启动tomcat, startup.bat

访问jenkins :localhost:8080/jenkins

6

安装以下几种插件,使用jenkins自带的插件搜索通过名称搜素即可

NodeJS Plugin

Maven Integration plugin

Publish Over SSH

Subversion Plug-in

输入插件名称搜索,插件勾选后点击“Install without restart”。

docker安装jenkins更改maven仓库 docker jenkins maven_maven_38


7

本地电脑要配置jdk和maven环境

首页–manage jenkins — 配置jdk和maven

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_39


docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_40


docker安装jenkins更改maven仓库 docker jenkins maven_git_41


点保存

8

首页–manage jenkins --Configure System

docker安装jenkins更改maven仓库 docker jenkins maven_maven_42


找到Publish over SSH点新增。remote derectory建议写成根目录/

docker安装jenkins更改maven仓库 docker jenkins maven_docker_43


remote directory :配置要远程的服务器地址(可随意)

勾选

输入password输入服务器密码,和上图的username相匹配。其余默认

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_44


点test configuration 成功。最后保存

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_45


9

构建docker镜像

mkdir /usr/local/jenkins/jenkinscontain

cd /usr/local/jenkins/jenkinscontain

touch Dockerfilevim Dockerfile

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_46


每一个 RUN 都是启动一个容器、执行命令、然后提交存储层文件变更

Supervisor 是用 Python 实现的一款Linux/Unix系统下的一个进程管理工具,不支持Windows系统,它可以很容易监听、启动、停止、重启一个或多个进程,而且它管理的程序是非 daemon 程序;如果用Supervisor管理进程,当进程被杀死后,Supervisor监听到进程死后,会自动将被杀死的进程自动启动,进程就可以自动恢复了,不需要自己写shell脚本来控制。简单来说,就是用来管理进程的。
epel-release 也就是 EPEL源,安装完成之后你就可以直接使用yum来安装额外的软件包,有部分软件,是需要安装这个包之后,才能更方便快捷地进行安装的。如果已安装过,则可以跳过,否则,如果直接安装Supervisor,则可能会出现错误提示。验证是否成功supervisord --version

sed -i : 在 XX行的行前增加内容
sed -a: 在XX行的行后增加内容

workdir:用来指定当前工作目录(或者称为当前目录)使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。指定了WORKDIR后,容器启动时执行的命令会在该目录下执行
/tail 地址是在容器中的地址

Dockerfile中的ENV指令用以定义镜像的环境变量

yum clean all :是通过yum安装的rpm和header都缓存在系统硬盘中,占用空间,可以清除。yum clean header 清除header包文件
yum clean rpm 清除rpm安装包
yum clean all 清除所有
如果执行yum clean all 报错,执行yum repolist all,结果为0。执行yum list正常。就是/etc/yum.repos.d/*.repo 的原因,接着执行yum makecache 然后再执行yum update。

supervisord 作用:启动supervisor程序自身,启动supervisor管理的子进程

10

创建supervisord配置文件

vim supervisord.conf

docker安装jenkins更改maven仓库 docker jenkins maven_maven_47


nodaemnotallow=false ;是否在前台启动,默认是false,即以 daemon 的方式启动

docker安装jenkins更改maven仓库 docker jenkins maven_git_48


11

构建镜像(注意后边有一个点)

docker build -t tale:latest .

构建完成可以docker image list 查看tale 镜像。

为镜像打上tag
docker tag tale:latest 服务器ip:5000/tale:latest

要创建一个目录/data下面一个tale目录,因为后面配置Jenkins的时候会把项目传到/data目录下,然后把/data/tale这个目录映射到docker容器里面的工作目录下

mkdir -p /data/tale

docker安装jenkins更改maven仓库 docker jenkins maven_jar包_49

12

构建一个maven项目

docker安装jenkins更改maven仓库 docker jenkins maven_maven_50


配置git项目源码报错

Failed to connect to repository : Error performing git command: git.exe ls-remote -h https://gitee.com/on-the-way-to-study-xx/ruoyi.git HEAD原因:找不到git.exe

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_51


只须要拷贝一份本地的git.exe的绝对路径到 Path to Git executable 下,就能够了

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_52


在晚上的八点运行,如果没有变动则不运行

docker安装jenkins更改maven仓库 docker jenkins maven_docker_53


docker安装jenkins更改maven仓库 docker jenkins maven_jar包_54


remote directory 在前面配置的ssh server中配置的基础目录上生成放资源的目录

docker安装jenkins更改maven仓库 docker jenkins maven_git_55

构建环境选择 Send files or execute commands over SSH after the build runs
5.1 SSH Server Name选择3.2步骤配置好的选项
5.2 Source files 是需要上传的源文件路径,注意此处需要填写相对路径,即路径的起始是以工程目录根目录开始的
5.3 Remove prefix是需要去除的前缀,这里把target去掉
5.4 Remote directory是上传服务器中的文件夹名称这里要上传到的文件夹是tale
5.5 这几个配置项配置完成之后就是将工程目录下target文件夹下所有jar包上传到远程服务器指定目录的tale文件夹当中去

Exec command 上传完成之后执行的命令,以下面为准

docker安装jenkins更改maven仓库 docker jenkins maven_docker_56


修改jenkins默认的jar包构建路径(每个jenkins版本可能都不一样)

docker安装jenkins更改maven仓库 docker jenkins maven_docker_57

点击项目

docker安装jenkins更改maven仓库 docker jenkins maven_docker_58


开始构建,第一次构建时间可能久,build history 可以看到进程

docker安装jenkins更改maven仓库 docker jenkins maven_git_59


13

可以将build的jar包放在本地测试运行一下,也可以忽略这步。

将代码包的sql文件(ry_20210924.sql,quartz.sql)导入root用户,database选择新增的ry。

docker安装jenkins更改maven仓库 docker jenkins maven_git_60


启动若依程序包,就可以访问了

docker安装jenkins更改maven仓库 docker jenkins maven_jenkins_61


说明程序包没问题。

14

检查supervisor的状态

查看进程是否启动成功

pgrep supervisord

15

ruoyi-admin.jar包传输不成功的原因:

Transfer Set Source files 这里用的是相对工作区的路径,比如你这个jenkins的工作目录为/xcdata/docker-jenkins/jenkins/jenkins_home/workspace/tj,那这的目录只能是相对于这个目录下的(不要填绝对路径,要写相对路径)

jar包所在全路径为C:\Users\86137.jenkins\workspace\ruoyi1028\ruoyi-admin\target\ruoyi-admin.jar,

其中C:\Users\86137.jenkins为主目录,\workspace\ruoyi1028为所建视图位置,

\ruoyi-admin\target\ruoyi-admin.jar为source file

查看jenkins的工作目录:

docker安装jenkins更改maven仓库 docker jenkins maven_git_62


把自定义工作空间取消。

查看jenkins的构建历史–控制台输出–查看jenkins build的jar包存放地址

C:\Users\86137.jenkins\workspace\ruoyi1028\ruoyi-admin\target\ruoyi-admin.jar

docker安装jenkins更改maven仓库 docker jenkins maven_maven_63

修改成source file地址

docker安装jenkins更改maven仓库 docker jenkins maven_docker_64


测试用:

C:\Users\86137.jenkins\workspace\ruoyi1028\ruoyi-admin\target\ruoyi-admin.jar

\workspace\ruoyi1028\ruoyi-admin\target\ruoyi-admin.jar

/target/ruoyi-admin.jar

/target/.jar

/target/*.jar

正常配置:

docker安装jenkins更改maven仓库 docker jenkins maven_git_65


可以在远程目标服务器看到传输的文件。

16
在jar包当前目录下创建可执行文件startry.sh
意思:先kill掉运行的jar包进程,再重新启动

ruoyi.log指将内容保存
0 指标准输入(一般指键盘)
1 指标准输出(一般指显示输出的信息,用户终端控制台)
2 指标准错误(错误信息输出)
&1 指继续输出到标准输出(让系统识别)最后一个&是后台运行

docker安装jenkins更改maven仓库 docker jenkins maven_git_66


构建程序前需要先在远程服务器启动一下jar包服务。

在jenkins中添加构建后的执行程序(以下是我的可执行文件地址)。

sh /data/tale/startry.sh

源码编译构建成功
使用ssh免密传输服务器需要先配置ssh key (已配置可忽略)
1、Jenkins机器生成 私钥ssh-keygen默认在~ssh下生成id_rsa和id_rsa.pub
2、复制id_rsa.pub内容到部署机器~ssh下authorized_keys
3、Jenkins机器ssh root@部署机器IP测试是否成功
4、Jenkins > 系统管理 >全局设置,往下翻到 ssh server
name:随便写
hostname:部署机器IP
Private Key: Jenkins 的 id_rsa
directory: / 根目录
user:root
5、点击 test ,显示 Success 即可