Jenkins 微服务持续集成之前后端组合(SpringCloud微服务)(五)

您所在的位置:网站首页 后端服务 Jenkins 微服务持续集成之前后端组合(SpringCloud微服务)(五)

Jenkins 微服务持续集成之前后端组合(SpringCloud微服务)(五)

#Jenkins 微服务持续集成之前后端组合(SpringCloud微服务)(五)| 来源: 网络整理| 查看: 265

文章目录

一、拉取镜像和发布应用1.安装 Publish Over SSH 插件2. 配置远程部署服务器3.在Jenkins 系统配置中添加远程服务器3. 修改Jenkinsfile 构建脚本生成远程调用模板代码4. 在生产服务器部署脚本deploy.sh中的内容5.查看结果

二、通过微服务访问后端数据库1. idea中修改微服务配置文件2. 在jenkins服务器的数据库进行授权远程登录3.使用postman测试后台数据连接

三、部署前端静态web网站1.安装nginx服务2. 在Jenkins上安装NodeJS插件3. 在Jenkins上配置Nginx服务器4. 修改前端代码文件并用小乌龟提交

一、拉取镜像和发布应用

1.安装 Publish Over SSH 插件

Publish Over SSH 插件可以实现远程发送Shell命令,安装完需要重启 Jenkins

2. 配置远程部署服务器

拷贝公钥,在Jenkins服务器上拷贝到生产服务器上

[root@jenkins ~]# cd .ssh/ [root@jenkins .ssh]# ls id_rsa id_rsa.pub known_hosts [root@jenkins .ssh]# ssh-copy-id 192.168.74.12 #上述地址是web生产服务器地址

查看生产服务器的凭证

[root@web1 ~]# cd .ssh/ [root@web1 .ssh]# ls authorized_keys [root@web1 .ssh]# cat authorized_keys

3.在Jenkins 系统配置中添加远程服务器

Dashboard——>Configure System

3. 修改Jenkinsfile 构建脚本生成远程调用模板代码

粘贴到jenkinsfile脚本中

目前Jenkinsfile脚本内容

//git的凭证 def git_auth="0aa6d8b5-b2c8-4a66-8b76-a9d7d16c5bd5" //git的URL def git_url="[email protected]:kgc/tensquare_back.git" //镜像标签 def tag="latest" //harbor的url地址 def harbor_url="192.168.74.7:85" //镜像仓库名 def harbor_name="tensquare" //定义harbor的凭证 def harbor_auth="49a8e73a-5c5f-483f-b6f1-78c15a1adf7f" node { stage('pull code') { //切换成变量,字符串符号使用双引号 checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]]) } stage('check code') { //定义SonarQubeScanner工具 def scannerHome = tool 'sonar-scanner' //引用SonarQube系统环境 withSonarQubeEnv('sonarqube') { sh """ cd ${project_name} ${scannerHome}/bin/sonar-scanner """ } } stage('make install public sub project') { sh "mvn -f tensquare_common clean install" } //打包微服务项目,制作镜像 stage('make package') { sh "mvn -f ${project_name} clean package dockerfile:build" //定义镜像名称 def imageName="${project_name}:${tag}" //对镜像打标签 sh "docker tag ${imageName} ${harbor_url}/${harbor_name}/${imageName}" //上传镜像 withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { //登录harbor仓库 sh "docker login -u ${username} -p ${password} ${harbor_url}" //镜像上传 sh "docker push ${harbor_url}/${harbor_name}/${imageName}" sh "echo 镜像上传成功" } //应用部署 sshPublisher(publishers: [sshPublisherDesc(configName: 'web1', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "/opt/jenkins_shell/deploy.sh ${harbor_url} ${harbor_name} ${project_name} ${tag} ${port}", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } }

添加端口新参数

4. 在生产服务器部署脚本deploy.sh中的内容

先创建目录和文件,给与权限

mkdir /opt/jenkins_shell cd /opt/jenkins_shell/ vim deploy.sh chmod +x deploy.sh

添加脚本内容

#! /bin/sh #接收外部参数 harbor_url=$1 harbor_project_name=$2 project_name=$3 tag=$4 port=$5 imageName=$harbor_url/$harbor_project_name/$project_name:$tag echo "$imageName" #查询容器是否存在,存在则删除 containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'` if [ "$containerId" != "" ] ; then #停掉容器 docker stop $containerId #删除容器 docker rm $containerId echo "成功删除容器" fi #查询镜像是否存在,存在则删除 imageId=`docker images | grep -w $project_name | awk '{print $3}'` if [ "$imageId" != "" ] ; then #删除镜像 docker rmi -f $imageId echo "成功删除镜像" fi # 登录Harbor docker login -u tom -p Abcd1234 $harbor_url # 下载镜像 docker pull $imageName # 启动容器 docker run -di -p $port:$port $imageName echo "容器启动成功"

脚本中harbor用户和密码要改下自己设的

Jenkinsfile更改提交进行构建测试

开始构建

5.查看结果

二、通过微服务访问后端数据库

1. idea中修改微服务配置文件

tensquare_admin_service文件修改

tensquare_eureka_server文件修改

tensquare_gathering文件修改

tensquare_zuul文件修改

修改完以后进行提交代码仓库

进行4次构建

生产服务器上查看结果

2. 在jenkins服务器的数据库进行授权远程登录

把2个脚本文件放入/root/目录下

mysql -uroot -pabc123 grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option; create database tensquare_gathering; create database tensquare_user; #导入脚本文件 use tensquare_gathering; source /root/tensquare_gathering.sql; use tensquare_user; source /root/tensquare_user.sql;

3.使用postman测试后台数据连接

三、部署前端静态web网站

在192.168.74.6这台服务器上部署nginx

1.安装nginx服务

yum install -y epel-release yum -y install nginx #安装nginx

修改配置文件

#修改nginx的端口,默认80,改为9090 vim /etc/nginx/nginx.conf server { listen 9090; listen [::]:9090; server_name _; root /usr/share/nginx/html;

#关闭selinux,将SELINUX=disabled setenforce 0 #先临时关闭 vim /etc/selinux/config #编辑文件,永久关闭 SELINUX=disabled #第7行 SELINUX=disabled

启动Nginx

systemctl enable nginx 设置开机启动 systemctl start nginx 启动 systemctl stop nginx 停止 systemctl restart nginx 重启

访问:http://192.168.74.12:9090/

2. 在Jenkins上安装NodeJS插件

3. 在Jenkins上配置Nginx服务器

Manage Jenkins->Global Tool Configuration

创建前端流水线项目

添加参数化构建

脚本

//harbor的凭证 def git_auth="49a8e73a-5c5f-483f-b6f1-78c15a1adf7f" node { stage('pull code') { //切换成变量,字符串符号使用双引号 checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: '[email protected]:kgc/tensquare_front.git']]]) } stage('make package,deploy') { //使用nodejs的npm打包 nodejs('nodejs12'){ sh ''' npm install npm run build ''' } //远程部署 sshPublisher(publishers: [sshPublisherDesc(configName: 'master_server', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/share/nginx/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } }

4. 修改前端代码文件并用小乌龟提交

中间可能要登录 gitlab 正常账号密码登录就行了

构建完成以后重新登录192.168.74.12:9090

网站成功部署

生产服务器验证查看/usr/share/nginx/html根目录



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3