本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料

Sentinel+Nacos 是微服务环境搭建必不可少的两个组件,这里给大家推荐一套微服务教程:

SpringCloud微服务电商项目教程 - 老炮说Java-程序员编程资料和编程经验分享平台​www.laopaojava.com

教程主要包含下面内容:

Jenkins

Jenkins基于Java环境,可以部署在windows/Mac OS/linux上,通过其网页可视化界面可以轻松操作Jenkins。

接下我们会分成三部分来讲解:

  • docker安装Jenkins
  • Jenkins首次登录配置
  • 构建一个项目完成自动部署

docker安装Jenkins

我们在linux环境使用Docker安装一个Jenkins,你需要事先安装Docker和Docker-compose,如果不知道怎么安装可以看我的安装教程文章。

1.远程连接linux服务器,创建docker在主机的jenkins数据映射目录

cd /opt
mkdir jenkins
cd jenkins
mkdir home

2.(可选)给数据映射目录授权docker用户访问权限,不然docker启动jenkins时会报权限的错。如果指定了容器内以root用户运行的话,可以不用执行授权命令。

sudo chown -R 1000 home

jenkins容器内部的用户id是1000,而主机上home目默认是root用户才能访问,需要授权给jenkins容器用户。-R 代表home目录及其子目录一起授权。

3.我们用docker-compose安装,当然你也可以用docker run的方式,创建一个docker-compose.yml文件。

version: "3"
services:jenkins:image: jenkins/jenkins:ltsports:- 8080:8080- 50000:50000restart: "always"container_name: jenkinsenvironment:JAVA_OPTS: -Duser.timezone=Asia/Shanghaivolumes:- /opt/jenkins/home:/var/jenkins_home- /var/run/docker.sock:/var/run/docker.sock- /usr/bin/docker:/usr/bin/dockerprivileged: trueuser: root

官网中文文档与英文文档不一致,不要使用中文文档中推荐的jenkinsci/blueocean镜像,使用它构建node程序会出现问题,因为我的项目需要同时构建前端vue项目和后端springboot项目,所以我这里使用jenkins/jenkins:lts版本镜像。

(可选)最后一行的user:root指的是指定容器内部使用root账号,如果加了这行可以把第二步省略。可以通过docker exec -t jenkins bash命令进入到容器内部然后运行whoami命令查看当前用户。

注意其中我们映射了一个容器内的/var/jenkins_home目录,这是作为Jenkins的主目录,里面会存放Jekins的各种配置和构建的项目工作空间,后面需要用到这个对应的主机映射路径。映射的端口可以自行修改。

4.启动Jenkins容器

userdocker-compose up -d

安装就成功了,你可能看着很简单,其实这一步是最多坑的地方,第二步中的映射目录授权很多人没做导致报错排查了很久,docker-compose配置文件里有映射了几个目录如果没有后面也会让你头疼的。

Jenkins首次登录配置

1.首次登陆,解锁jenkins,启动完成后打开浏览器 ip:8080 。

解锁Jenkins

获取密码,在服务器控制台运行以下命令查看密码,注意这里的目录是主机的目录/opt/jenkins/home,对应的是容器内的/var/jenkins_home目录。

cat /opt/jenkins/home/secrets/initialAdminPassword

2.自定义插件

不了解自己需要的插件的话选择安装推荐的插件,如果你是学习目的的话可以选择插件来安装。

自定义插件

推荐安装插件界面

推荐安装插件

选择插件安装页面

选择插件安装

安装插件的过程比较久,慢慢等待。

3.创建一个管理员用户

安装完插件会出现创建管理员用户的界面。填写用户名和密码以及邮件地址即可。

创建一个管理员用户

4.进入jenkins首页

默认有一些地方是英文的,你可以服务器重启下jenkins容器就可以变成中文了。

Jenkins首页

点击左侧的Manage Jenkins菜单,中文叫系统管理。下图红框中的三个分别是系统配置、全局工具管理、插件管理。Security部分可以管理凭据(新建项目时会讲到)。以后想装插件、配置用户、配置Jenkins的话都在这里操作。

系统管理

构建一个项目完成自动部署

1.新建项目

点击左侧新建Item菜单新建一个项目。

新建项目

输入任务(项目)名称,任务类型选择Freestrle project,中文的话叫自由风格的项目。

创建成功后可以看到任务里有很多的配置,一般我们配置源码管理(你的项目git路径、分支和账号)、构建(写构建shell脚本)就可以了。

项目配置页面

2.源码管理配置

我的项目在gitlab上,使用的是git,所以我们选择Git,输入项目的git地址。

配置git地址

如果你的git仓库是私有的,会提示无法连接仓库,如下图。

私有git仓库

这时我们就需要添加一个凭据,可以直接点git地址输入框下方的添加按钮,选择Jenkins默认域添加一个凭据。这一步也可以在系统管理里事先设置好。

添加凭据

在添加凭据的地方输入你的git上的账户名和密码点击添加即可。

添加凭据

指定分支,默认是 */master,这里我改成 */develop 。

指定分支

源码管理部分就可以了,接下去是设置构建步骤,我们跳到构建步骤。

3.构建配置

我们滚动到构建步骤部分,点击增加构建步骤,在下拉框中选择执行shell脚本。

执行shell脚本

shell脚本根据你的项目情况而定,我这里给出一个我的项目的脚本参考,因为我是同时构建前后端项目,所以比较复杂一点。注意这个shell脚本运行的当前路径是主机上的 /opt/jenkins/home/workspace/项目名 目录, 注意/opt/jenkins/home 目录是我对应jenkins容器里的/var/jenkins_home 目录。可以通过在脚本里写个$(pwd)然后构建日志中查看具体是什么。需要一定的shell知识,当然如果你不用shell脚本也是可以使用其他方式构建可以自行查阅。

dir=$(pwd)
echo "jenkins容器项目所在路径:"
echo $dir
echo "主机路径:"
real_dir="/opt/jenkins/home/"${dir#'/var/jenkins_home/'}
echo $real_direcho "开始构建"echo "创建前端代码打包脚本install.sh"
cat>web/install.sh<<EOF
sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositories
apk update
apk add yarn
yarn config set registry https://registry.npm.taobao.org/
yarn && yarn build:dev
EOFecho "打包前端代码生成dist目录"
docker run --rm --net=host -v ${real_dir}/web:/web -v /root/.cache/yarn/cmp:/usr/local/share/.cache/yarn -w /web node:10-alpine3.11 sh install.shecho "拷贝前端dist目录到后端项目的public目录,用于与后端公用端口,解决跨域问题"
mkdir -p ./src/main/resources/public
cp -r ./web/dist/* ./src/main/resources/publicecho "后端构建"
mkdir -p /root/.m2echo "后端mvn打包jar文件"
docker run --rm -v /root/.m2:/root/.m2 -v ${real_dir}:/cmp -w /cmp maven mvn clean install -DskipTestsecho "复制jar文件到指定docker目录"
mkdir -p docker && cp target/cmp-0.0.1-SNAPSHOT.jar ./docker && cd dockerecho "在指定docker目录创建Dockerfile文件用于生成docker容器"
cat>Dockerfile<<EOF
FROM openjdk:8u242-jdk
COPY cmp-0.0.1-SNAPSHOT.jar /
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENTRYPOINT ["java", "-jar", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008", "/cmp-0.0.1-SNAPSHOT.jar"]
EOFecho "清理已有容器及镜像资源"
container="Jenkins-project01"
image=${container}if docker ps | grep ${container} ;thendocker stop ${container}
fiif docker ps -a | grep ${container};thendocker rm ${container}
fiif docker images | grep ${image};thendocker rmi ${image}
fiecho "镜像制作"
docker build -t ${image} .
echo "容器运行"
docker run -d --restart=always --name ${container} -v /var/logs:/var/logs -p 8888:8888  ${image} --spring.profiles.active=dev -Duser.timezone=GMT+8

4.构建项目查看控制台信息

在任务页面点击立即构建,然后可以在下方的构建历史中点击右侧时间位置的小箭头打开控制台输出信息。

查看控制台输出

控制台内容

好了,以上就是Jenkins的全部内容了。

作者:程序员柳大侠http://toutiao.com/i6891617717334475271

docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目相关推荐

  1. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash#export PATH=$PATH:/export/maven/binrun_flag_dir="/data0/shell/deploy_wo ...

  2. SHELL脚本自动化部署MFS分布式文件系统

    前言:在我们运维中,最常见的文件存储系统大概就是NFS了,但是随着网站压力不断增加,NFS渐渐不能满足企业数据增长需求,有木有自动扩展.高效.部署.实施方便快捷的分布式存储供我们使用呢?那我们来看一下 ...

  3. jenkins+gitee 实现自动化部署项目到centos上

    目录 一 原理说明 1 流程说明 2 流程图 二 环境部署说明 三 Jenkins基本配置 1 Configure System (系统设置) 2 Configure  Global Security ...

  4. Docker、Jenkins、Rancher自动化部署项目

    技术前提 在阿里云服务器centOS7.3版本虚拟机安装开发环境,也可以自己本机装虚拟机尝试.也有一定技术基 础前提,需要了解linux基础命令.Docker的运用,如:编写Dockerfile文件. ...

  5. Centos7系统下部署Gitlab+Jenkins+Docker 实现自动化部署项目

    流程:本地->Gitlab->Jenkins->Docker ps:这一套组件蛮吃内存的,我虚拟机分配6G几乎占满 1.安装Docker yum install -y docker ...

  6. Shell脚本-自动化部署反向代理、WEB、nfs

    部署nginx反向代理三个web服务,调度算法使用加权轮询(由于物理原因只开启两台服务器) AutoNginxNfsService.sh #/bin/bash systemctl status ngi ...

  7. Docker中安装Jenkins实时发布.net core 项目(二)

    Docker中安装Jenkins实时发布.net core 项目 防坑点 升级docker jenkins运行 运行命令 jenkins拉取git并构建项目 其他 查看发布文件 防坑点 升级docke ...

  8. shell脚本自动化创建虚拟机的基本配置--tomcat--mysql--jdk--maven---妈妈再也不用担心我不会配置虚拟机了!

    文章目录 自动化shell脚本 一:虚拟机初始化 二:jdk自动化安装 三:maven自动化安装 四:tomcat自动化安装 五:mysql自动化安装 自动化shell脚本 ps:此处安装的jdk,m ...

  9. shell脚本 一键部署 Lnmp 及社区论坛 服务架构

    shell脚本 一键部署 Lnmp 一键部署 Lnmp 一键部署 注:亲,记得把所需要的软件包,先放到/opt目录中:以及该机子的内存大小.核数先设置好! #!/bin/bash #先配置好yum e ...

最新文章

  1. select的5中子句where,group by, havaing, order by, limit的使用顺序及实例
  2. 2021年度人工智能产品TOP10,百度飞桨EasyDL再获业界认可
  3. java下发报文_java报文的发送和接收 | 学步园
  4. 信息学奥赛课课通VS中学生计算机,数学奥赛VS信息学奥赛 孩子们该如何选择
  5. vue 拖拽(笔记)
  6. Banner中利用Jquery隐藏显示下方DIV块
  7. C#接口。 隐式实现与显式实现
  8. 无约束最优化(五) 最小二乘法问题的解法
  9. centos mysql 二进制_CentOS 7.6 安装二进制Mysql
  10. 功能强大的pdf控件,用户无需安装任何软件即可使用
  11. nxlog收集windows事件方案
  12. 电力软件系统测试报告,电力巡检系统测试报告-软件工程
  13. 行业认证标准:IEC 61508电气/电子产品功能安全“通用”国际标准
  14. RC延时电路计算方法
  15. 绩效考核|绩效管理|绩效面谈|绩效述职|绩效汇报PPT模板
  16. 快书编标让标书制作更高效、更规范、更轻松
  17. 外卖行业现状分析_简要分析外卖运营行业的发展现状
  18. spring tx:advice事务配置
  19. 国科大数据挖掘课程总结
  20. 【日常】纪录一个愚蠢的问题

热门文章

  1. javafx响应式布局_JavaFX的响应式设计
  2. 使用Java更新DynamoDB项
  3. JavaFX实际应用程序:SkedPal
  4. mockito_Mockito和Hamcrest的试驾制造商
  5. jOOQ星期二:拉斐尔·温特豪德(Rafael Winterhalter)正在与字节好友搏斗字节码
  6. 拆卸invokedynamic
  7. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分
  8. Spring MVC控制器的单元测试:配置
  9. Spring MVC,Ajax和JSON第2部分–服务器端代码
  10. 您好GroovyFX