Docker安装Jenkins+Shell脚本自动化部署项目( 二 )


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

Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
系统管理
构建一个项目完成自动部署1.新建项目
点击左侧新建Item菜单新建一个项目 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
新建项目
输入任务(项目)名称,任务类型选择Freestrle project,中文的话叫自由风格的项目 。
创建成功后可以看到任务里有很多的配置,一般我们配置源码管理(你的项目git路径、分支和账号)、构建(写构建shell脚本)就可以了 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
项目配置页面
2.源码管理配置
我的项目在gitlab上,使用的是git,所以我们选择Git,输入项目的git地址 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
配置git地址
如果你的git仓库是私有的,会提示无法连接仓库,如下图 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
私有git仓库
这时我们就需要添加一个凭据,可以直接点git地址输入框下方的添加按钮,选择Jenkins默认域添加一个凭据 。这一步也可以在系统管理里事先设置好 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
添加凭据
在添加凭据的地方输入你的git上的账户名和密码点击添加即可 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
添加凭据
指定分支,默认是 */master,这里我改成 */develop。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
指定分支
源码管理部分就可以了,接下去是设置构建步骤,我们跳到构建步骤 。
3.构建配置
我们滚动到构建步骤部分,点击增加构建步骤,在下拉框中选择执行shell脚本 。
Docker安装Jenkins+Shell脚本自动化部署项目

文章插图
执行shell脚本
shell脚本根据你的项目情况而定,我这里给出一个我的项目的脚本参考,因为我是同时构建前后端项目,所以比较复杂一点 。注意这个shell脚本运行的当前路径是主机上的 /opt/jenkins/home/workspace/项目名 目录, 注意/opt/jenkins/home 目录是我对应jenkins容器里的/var/jenkins_home 目录 。可以通过在脚本里写个$(pwd)然后构建日志中查看具体是什么 。需要一定的shell知识,当然如果你不用shell脚本也是可以使用其他方式构建可以自行查阅 。
dir=$(pwd)echo "jenkins容器项目所在路径:"echo $direcho "主机路径:"real_dir="/opt/jenkins/home/"${dir#'/var/jenkins_home/'}echo $real_direcho "开始构建"echo "创建前端代码打包脚本install.sh"cat>web/install.sh<<EOFsed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositoriesapk updateapk add yarnyarn config set registry https://registry.npm.taobao.org/yarn && yarn build:devEOFecho "打包前端代码生成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/publiccp -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<<EOFFROM openjdk:8u242-jdkCOPY cmp-0.0.1-SNAPSHOT.jar /RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeENTRYPOINT ["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} ;then    docker stop ${container}fiif docker ps -a | grep ${container};then    docker rm ${container}fiif docker images | grep ${image};then    docker 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


推荐阅读