Jenkins+docker实现应用发布和更新

Jenkins+docker实现应用发布

Jenkins:centos6.5 ip:192.168.83.84

Docker:centos7.2 ip:192.168.83.60

一、安装Jenkins

最新版:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

sudo yum install jenkins

稳定版

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo

sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

sudo yum install jenkins

根据需求在jenkins的服务器上(centos)执行其中一种命令,安装jenkins。

另:jenkins依赖java环境,需先安装好java

启动jenkins:

Service Jenkins start

二、安装jenkins插件

成功启动jenkins后,在浏览器中输入192.168.83.84:8080访问配置jenkins,根据提示找到密码并输入,选择默认插件自动安装。安装好了以后会提示创建第一个admin 用户,创建成功后进入jenkins界面。

选择系统管理—>插件管理—>可选插件

在右侧filter框中输入Docker plugin,找到Docker plugin后直接安装

安装完成后在系统管理à系统设置的最后可以找到新增一个云的选项

三、docker服务器配置

安装docker:sudo yum install docker

参考文档:https://docs.docker.com/engine/installation/linux/centos/

以前台方式启动docker:docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243

从dockerhub下一个新的centos镜像

docker pull centos:latest

构建基于docker的tomcat镜像

cd

mkdir docker

cd docker

传输

到该目录并解压

vim build.df

FROM centos:latest

MAINTAINER akjfit

#install jdk

ADD jdk1.8.0_91/opt/jdk1.8.0_91

ENV JAVA_HOME/opt/jdk1.8.0_91

ENV PATH$PATH:$JAVA_HOME/bin

RUN mkdir -p"$JAVA_HOME"

#install tomcat

ADDapache-tomcat-9.0.0.M4 /opt/apache-tomcat-9.0.0.M4

ENV CATALINA_HOME/opt/apache-tomcat-9.0.0.M4

ENV PATH$CATALINA_HOME/bin:$PATH

ENV JAVA_OPTS -Xmx512m-Duser.timezone=GMT+08

RUN mkdir -p"$CATALINA_HOME"

WORKDIR $CATALINA_HOME

ENV LANG en_US.UTF-8

RUN cp/usr/share/zoneinfo/Asia/Shanghai /etc/localtime

EXPOSE 8080

docker build -t centos:tomcat -f build.df/root/docker

四、配置docker云

登录jenkins的web管理端

点击系统管理-->系统设置

Name:docker云的名字,要唯一,等下有用

Docker URL:Docker服务器的地址和端口

其他参数可如图配置,连接测试成功后会显示docker的版本号

添加temple并配置

需要配置的项:

Docker Image:当前docker云里存在的,需要用到的dockerimage的名字

Docker Command:启动该docker时执行的命令

Volumes:将docker container内部的目录挂载至宿主机的目录

Port bindings:将docker container内部的端口映射至宿主机

Memory Limit in MB:限制dockercontainer的内存大小

Credentials:配置管理认证

点击新建(maven项目)

选中docker container

在Label Expression中填写master(即由master来执行该job)

在源码管理中选中git

Repository URL:需要打成war包的代码的位置

Credentials:输入可以登录git服务器的用户密码

勾选Build whenever a SNAPSHOT dependency is built(如果项目有依赖关系)

按照上图填写相关信息

在docker宿主机上部署2个脚本,stop.sh为判断当前项目的docker容器是否在运行,在运行就stop掉并删除该容器

deploy.sh为删除之前发布的包,并发布新生成的包

在jenkins主机上部署1个脚本,scp.sh为将在jenkins 主机上生成的war包传递到docker宿主机上

Action to choose:选择Provsion&StartContainer

Docker Cloud name:在系统设置中配置的唯一的docker云名

Template ID:该docker云下要使用的镜像名

点击应用保存

五、相关脚本

scp脚本:

#/bin/bash

if [ -e /opt/.jenkins/workspace/$1-master/$1-core/pom.xml];then

scp/opt/.jenkins/workspace/$1-master/$1-core/target/*.war 192.168.83.60:/tmp/$1

else

scp/opt/.jenkins/workspace/$1-master/target/*.war 192.168.83.60:/tmp/$1

#sleep 20

fi

stop脚本

#/bin/bash

id=`dockerps -a |grep 0:$1 |awk ‘{print $1}‘`

if [ -n"$id" ];

then

dockerstop $id

docker rm$id

else

echo"no running docker container"

fi

deploy脚本:

#!/bin/bash

cd/workspace/$1-master

rm -rfROOT

cp/tmp/$1/$2.war /workspace/$1-master

unzip$2.war -d ROOT >/dev/null

rm -f$2.war

rm -rf/workspace/$1-master/ROOT/profiles

时间: 2024-08-06 16:06:19

Jenkins+docker实现应用发布和更新的相关文章

Solo博客系统--Jenkins/docker自动化构建发布系统

部署 git服务器 yum install git useradd git passwd git 创建仓库 su - git mkdir solo.git git --bare init ##初始化仓库 docker cat >> /etc/docker/daemon.json << EOF { "insecure-registries":["reg.hequan.xyz:5000"] } EOF Jenkins服务器 wget https:

Jenkins+docker实现应用发布

Jenkins:centos6.5 ip:192.168.83.84 Docker:centos7.2 ip:192.168.83.60 一.安装Jenkins 最新版: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key sudo

从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java 程序.Jenkins是一个广泛用于持续构建的可视化Web工具,持续构建就是将项目自动化编译.打包.部署.通过规范化来完成,简单,繁琐,浪费时间的重复工作. Jenkins名言:构建伟大,无所不能! Jenkins用户手册传送门:https://jenkins.io/zh/doc/ 二.发布流程 工作详细流程

jenkins+gitlab+微服务发布+k8s发布

背景:jenkins+gitlab+微服务发布+k8s发布实现自动更新1.配置jenkins pipeline pipeline语法`node {try {stage('代码拉取') {git credentialsId: 'xiongxj', url: '[email protected]:xinjiang.xiong/oam.git' } stage('项目构建') { sh " /opt/software/apache-maven-3.6.0/bin/mvn clean package&q

Gitlab+Jenkins+Docker实现net core持续集成

前言 在项目中使用这一套自动集成的体系之后,一直想找个时间总结出来,用于自己记录也打算将自己的所得分享给园友们,不经常写文章,可能会有错误的地方,希望各位不吝指正,我会及时的改正并表示感谢,希望大家能够一起进步. 前期准备 centos7.5系统环境,关闭防火墙 jenkins in docker 安装 yum install docker docker service start docker pull jenkins docker run -d -p 8080:8080 -p 50000:5

Linux文档整理之【Jenkins+Docker自动化部署.Net Core】

这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相关项目.在Java开发中我们经常能看到使用jenkins来部署,.Net core目前还是比较少见的,但是好的东西我们就应该要拿来使用.借鉴. 1. 安装JenKins 这里使用Docker来安装JenKins,当然也可以直接安装到Linux中. 创建jenkins工作目录 mkdir /usr/l

DICOM:Docker实现增量发布之前期准备

背景: 为了方便整体产品的发布,希望通过docker实现增量发布.大致的思路如下: is-there-a-way-to-add-only-changed-files-to-a-docker-image-as-a-new-layer-with.本博文对这种方式进行了尝试,与此同时简单介绍如何通过Dockerfile来创建Docker镜像. 前期准备: 解决centos的网络问题[can not find a valid baseurl for repo: base/7/x86_64],使用dhcl

使用Jenkins docker镜像运行Jenkins服务

需求 使用docker技术管理Jenkins服务器.避免多次部署需要重复安装的重复工作,且可以方便迁移到新的服务器. Jenkins docker镜像 https://hub.docker.com/_/jenkins/ Official Jenkins Docker image 拉取镜像: docker pull jenkins 使用镜像: docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home j

基于 Jenkins+Docker+Git 的CI流程初探

在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部署.交付(CD).在此,我们来以一个案例初步了解 CI 流程.那么什么是 CI 呢?简单来讲,CI 就是将传统的代码合并.构建.部署.测试都集成在一起,不断地执行这个过程,并对结果进行反馈. CI 流程设计图: 工作流程: 1. 开发人员提交代码到Git版本仓库:2. Jenkins人工/定时触发项