您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

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

时间:2020-11-06 10:05:44  来源:  作者:

Jenkins是一款开源的CI&CD软件, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

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

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:lts
    ports:
      - 8080:8080
      - 50000:50000
    restart: "always"
    container_name: jenkins
    environment:
      JAVA_OPTS: -Duser.timezone=Asia/Shanghai
    volumes:
      - /opt/jenkins/home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
    privileged: true
    user: 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 。

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

解锁Jenkins


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

cat /opt/jenkins/home/secrets/initialAdminPassword

2.自定义插件

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

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

自定义插件

推荐安装插件界面

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

推荐安装插件

选择插件安装页面

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

选择插件安装

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

3.创建一个管理员用户

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

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

创建一个管理员用户

4.进入jenkins首页

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

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 $dir
echo "主机路径:"
real_dir="/opt/jenkins/home/"${dir#'/var/jenkins_home/'}
echo $real_dir

echo "开始构建"

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
EOF

echo "打包前端代码生成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.sh

echo "拷贝前端dist目录到后端项目的public目录,用于与后端公用端口,解决跨域问题"
mkdir -p ./src/main/resources/public
cp -r ./web/dist/* ./src/main/resources/public

echo "后端构建"
mkdir -p /root/.m2

echo "后端mvn打包jar文件"
docker run --rm -v /root/.m2:/root/.m2 -v ${real_dir}:/cmp -w /cmp maven mvn clean install -DskipTests

echo "复制jar文件到指定docker目录"
mkdir -p docker && cp target/cmp-0.0.1-SNAPSHOT.jar ./docker && cd docker

echo "在指定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"]
EOF

echo "清理已有容器及镜像资源"
container="Jenkins-project01"
image=${container}

if docker ps | grep ${container} ;then
    docker stop ${container}
fi

if docker ps -a | grep ${container};then
    docker rm ${container}
fi

if docker images | grep ${image};then
    docker rmi ${image}
fi

echo "镜像制作"
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.构建项目查看控制台信息

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

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

查看控制台输出


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

控制台内容

好了,以上就是Jenkins的全部内容了,希望本文对你有所帮助。



Tags:Jenkins   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
第一步、部署环境1、安装nodeJs1、下载nodewget https://nodejs.org/dist/v16.8.0/node-v16.8.0-linux-x64.tar.xz2、解压压缩包xz -d node-v8.11.2-linux-x64.tar.xztar -x...【详细内容】
2021-09-06  Tags: Jenkins  点击:(70)  评论:(0)  加入收藏
前提条件:已成功安装JDK。官网下载地址: https://www.jenkins.io/download 二、安装1、jenkins安装包安装(1)直接双击运行已经下载好的jenkins.msi安装包 (2)点击"运行" (3)点击"Nex...【详细内容】
2021-06-23  Tags: Jenkins  点击:(116)  评论:(0)  加入收藏
目前主流的开发采用的是devops模式(开发、测试、运维一体化)。随着互联网安全要求越来越高,对网络安全就越发变得重要了。传统的测试工程师主要是对功能、接口、性能方面做测试...【详细内容】
2021-06-23  Tags: Jenkins  点击:(112)  评论:(0)  加入收藏
Jenkins 是目前最常用的持续集成工具,拥有近50%的市场份额,他还是很多技术团队的第一个使用的自动化工具。由此可见他的重要性!这份Jenkins宝典从入门介绍到结合Docker+SpringC...【详细内容】
2021-06-09  Tags: Jenkins  点击:(145)  评论:(0)  加入收藏
在当今互联网行业乃至一些大厂,大部分公司都采用敏捷项目管理模式来管理项目,在敏捷十二条宣言中有一条是这样说:“我们的最高目标是,通过尽早和持续地交付有价值的软件来满足...【详细内容】
2021-04-30  Tags: Jenkins  点击:(165)  评论:(0)  加入收藏
以下是详细的步骤1. JDK \Jmeter \ Ant安装:1.1.安装JDK:双击jdk-7u80-windows-x64.exe安装,默认安装到C:\ProgramFiles\Java目录1.2.安装Jmeter:在我的电脑&mdash;E盘(建议与...【详细内容】
2021-04-16  Tags: Jenkins  点击:(224)  评论:(0)  加入收藏
在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git实...【详细内容】
2021-03-19  Tags: Jenkins  点击:(259)  评论:(0)  加入收藏
在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,通...【详细内容】
2021-02-19  Tags: Jenkins  点击:(230)  评论:(0)  加入收藏
Jenkins是一款开源的CI&CD软件, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。JenkinsJenkins基于Java环境,可以部署在windows/Mac OS/linux上,通过其网页...【详细内容】
2020-11-06  Tags: Jenkins  点击:(610)  评论:(0)  加入收藏
相信vue很多人都已经很熟悉了,利用脚手架很容易搭建一个vue项目 但项目多了以后每次部署测试环境就相当麻烦,还容易出错 所以趁这两天不忙,研究一下jenkins,也总算是入门了 jen...【详细内容】
2020-10-17  Tags: Jenkins  点击:(92)  评论:(0)  加入收藏
▌简易百科推荐
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(10)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(10)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(47)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(33)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(61)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(167)  评论:(0)  加入收藏
环境要求 ubuntu系统:20.04 docker版本:20.10.7 redis版本:6.0.6步骤由于我这里已经有相应的redis镜像,这里就不记录了,关于docker一些基础知识可以看我以前的笔记开启3台re...【详细内容】
2021-07-26  石老师小跟班    Tags:Redis主从复制   点击:(117)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条