docker安装jenkins,部署springcloud服务And坑坑坑。

1.首先在服务器上装好这三个东西: jdk,git,maven,并且配置好全局变量。

输入查看当前环境变量,并记住路径,下面需要用到

export

35169c9825a44e2c9fe96e818732fe27.png

 2.开始整活,安装jenkins

1.拉取镜像 查看镜像

#查看镜像包

docker search jenkins

#安装镜像包
docker pull jenkins


#查看是否安装成功(查看镜像包)
docker images

2. 新建文件夹,用来挂载docker目录

mkdir -pv /opt/docker/jenkins

 3.添加修改权限 不然掉坑

chown -R 1000 /opt/docker/jenkins

 4.启动Jenkins,这里有坑

刚才查看的maven和jdk环境变量的路径,也放在这里进行文件挂载

不然启动构建出现找不到maven和jdk

docker run -d  -p 9595:8080 -p 50000:50000

#让容器有root权限,方便进入容器操作

--privileged=true

--restart=always

--name jenkins  

#容器/var/jenkins_home路径映射到宿主机/opt/docker/jenkins/

-v /opt/docker/jenkins:/var/jenkins_home

-v /etc/localtime:/etc/localtime  

#jdk环境挂载

-v /usr/local/src/jdk/jdk1.8:/usr/local/src/jdk/jdk1.8

#maven环境挂载

-v /usr/local/src/maven/apache-maven-3.5.3:/usr/local/src/maven/apache-maven-3.5.3 jenkins/jenkins

5.查看密码:

刚才设置的宿主机路径是哪里,就在哪里查看

cat opt/docker/jenkins/secrets/initialAdminPassword

6.浏览器输入http://ip:9595/访问jenkins首页

输入刚才查看的密码

3e65415893e445bab7e66e8105543729.png

 接下来进入到下载插件页面,安装推荐插件即可

dffaa75cd79d885907e1e9998bf18ec6.png

 7.可创建或者使用admin用户继续,这里选择admin账户继续

进来后点击这里往下滑,找到修改密码选项,修改密码

6b8299622b0e4f4d967cd637037e200f.png

 8.下载插件 Publish Over SSH 

5ccc488ee31845c9933456b302378d33.png

 下载安装后,建议docker容器内进行重启Jenkins

9.全局工具配置

这里配置maven,也就是刚开始查看系统环境变量maven路径

2f35bf4f96e240379f3f78c70cc6ee79.png

 安装jdk,也就是开始查看系统环境变量jdk路径66bd9b19b371483a812f07a8c02fdf2d.png

 下滑,配置maven 同上bee8a19a45ed4f73a7281e0a6b8b7bf3.png

 10.系统配置-环境变量,不配置就掉坑

这里键的配置就是服务器环境变量的名称,服务器环境变量名称是什么就填什么!!!

4195bd2b9fcd4e78a64ccf73cfaf95e4.png

 af6ea9fe04944d28be6a5b94ad4503a9.png

 11.配置完在回到服务器,进入Jenkins容器

 docker exec -it jenkins bas

 12.配置SSH-KEY,在容器内执行:

ssh-keygen

#三次回车 生成 ssh key 

c5017b6dadb048f5a24c24b3c92e33dd.png

13.查看公钥,且复制

cat ~/.ssh/id_rsa.pub

0172260416b74b0585139de1d3577ea9.png

14.进入你的github或者gitee或者gitlab配置ssh key

我这里采用gitlab配置,将刚才的Ctrl+V在这里

4b5d855fe4844c1ea540eb21e0c62c19.png

 15.测试一下呗

在容器内执行一下命令,出现该界面则配置成功,输入yes回车表示认证完成

git clone [email protected]:xxxx.git

f0ece14e74fa43da8360097712e27a77.png

16.开始搞项目咯

创建一个流水线工程

b38c0a45303f412a8c928bfc67aedbca.png

 17.配置

选择参数化构建过程-选择字符串参数

REPOSITORY_VERSION 

#代表当前代码分支 这里默认test

da1577f503d94b3a8438feda6eb7b3f0.png

 18.下滑找到流水线,写pipeline脚本

e086396d43154fcd9e2e43bdc50ebc37.png

 参考脚本, REPOSITORY 填写项目的ssh地址,REPOSITORY_VERSION是刚刚配置的构建参数

pipeline {
    agent any
    
    environment {
        REPOSITORY="[email protected]:xxxxxx/cloud-test.git"
    }
    
    stages {
        stage('拉取代码') {
            steps {
                echo "start fetch code from git:${REPOSITORY}"
                deleteDir()
                git branch: "${REPOSITORY_VERSION}", url: "${REPOSITORY}"
            }
        }
    }
}

19.测试拉取代码

返回首页,选择刚刚创建的项目,点击按钮运行

708692c378a44230aeb78d1372ff6d8c.png

 点击开始构建94836d5128fd4dbfb80731ecfb1f42f5.png

 构建成功则会出现这样1bfa92284e414bdcb999a70e8dfbc541.png

 20.通过maven构建代码,并通过ssh上传到指定文件夹,并执行运行

先设置一下ssh

dbc87f1de8cc43c092da5a5c4525d16a.png

 4b4bedb0385b4192ac8580ea3cba10c2.png

 点击高级 输入用户名密码7891aed3c02745f9ac60a7fe198e8b9a.png

 最后可以点击 Test Conflguation进行测试 如果弹出 Success 则代表链接成功dea28a89331a4c659e4ba14380d13320.png

 21.修改刚才的流水线

(这里通过直接上传到指定的docker jar包文件夹,更新替换旧版本,执行重启容器命令,加载最新jar包)

pipeline {
    agent any
    
    environment {
        REPOSITORY="[email protected]:xxxxxx/cloud-demo.git"
        MODULE="testsystemserver"
    }
    
    
    stages {
        stage('拉代码') {
            steps {
                echo "start fetch code from git:${REPOSITORY}"
                deleteDir()
                git branch: "${REPOSITORY_VERSION}", url: "${REPOSITORY}"
            }
        }
        
        stage('编译代码') {
            steps {
                echo "start compile"
                sh "cd common && mvn -U clean install package"
                echo "compile project ................................"
                sh "cd systemserver && mvn -U clean install package"
				echo "compile testsystemserver................................"
            }
        }
		
		
		stage('构建部署') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: '31', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'docker restart testsystemserver', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'opt/docker/jar', remoteDirectorySDF: false, removePrefix: 'systemserver/target/', sourceFiles: 'systemserver/target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

stage('构建部署') 下的可以参考流水线语法进行生成,不然会有坑坑坑坑坑坑!!!

error:Jenkins SSH: Transferred 0 file(s)

点击流水线语法

7eb6667d19d543e7bde788e11360073e.png

 ffff6991678b4c83bab1f887f37e4ff3.png4a8295fc6b6d49239363784ef17009c9.png

例子:

例子

如果jenkins中项目构建时控制台输出构建的地址是

/var/lib/jenkins/workspace/test
而查看部署jenkins的服务起中,构建对应项目后,生成的target包的目录是:

/var/lib/jenkins/workspace/test/test-demo/target

所以 Source files(表示传输时匹配什么文件)应该填

test-demo/target/*.jar

Remove prefix ( 该操作是针对上面的source files目录)应该填

test-demo/target/

Remote directory (该操作是基于设定的服务器目录进行)。这里我的服务器配置是/. 因此这里应该写 ./

Exec command(该操作是文件传输完毕后执行什么命令) 我这里重启该服务就行所以填写

docker restart testsystemserver

然后点击生成流水脚本,可进行替换;


散会!!!!

猜你喜欢

转载自blog.csdn.net/qq_42990433/article/details/130755080