当前位置: 首页 > wzjs >正文

常熟市做网站公司今日新闻头条新闻今天

常熟市做网站公司,今日新闻头条新闻今天,个人备案可以做门户网站吗,不动产登记网站建设在企业级的架构中,CI/CD是必不可少的一个环节,它可以让开发人员只关注于开发,而不必去关注项目的构建和部署,从而提高开发人员的效率。 本文我们来介绍一下使用jenkins 的pipeline来进行java项目的自动构建以及部署。我们通过脚本…

在企业级的架构中,CI/CD是必不可少的一个环节,它可以让开发人员只关注于开发,而不必去关注项目的构建和部署,从而提高开发人员的效率。

本文我们来介绍一下使用jenkins 的pipeline来进行java项目的自动构建以及部署。我们通过脚本来生成docker镜像,并推送到镜像仓库,供k8s使用。

整体思路是先通过maven构建项目,然后通过build_docker.sh脚本来打包生成镜像,该脚本接收3个参数,-j 需要执行的jar包的名字,-F 项目文件名 -p ,镜像需要推送的环境

根据参数会打包成相应的镜像,并且推送到镜像仓库。

一 基础镜像环境

1 因为是基于springboot的java项目启动项目需要java环境,我们构建一个自己的jdk环境,使用jdk8。

Dockerfile 如下

FROM ubuntu
WORKDIR /usr/local/jdk1.8.0_301
ADD jdk-8u301-linux-x64.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/jdk1.8.0_301
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["java","-version"]

构建自己的jdk8镜像

docker build -f Dockerfile -t jdk8img .

2 Jenkins我们也通过docker的方式来运行,基于官方jenkins镜像我们加进去自己的jdk版本(因为目前项目大部分使用jdk8,而最新jenkins官方镜像为jdk11),以及使用宿主机的maven,docker环境,来制作一个jenkins镜像。

这里基于官方镜像,这里安装libltdl7是为了运行宿主机docker环境需要。

FROM jenkins/jenkins
ADD jdk-8u301-linux-x64.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/jdk1.8.0_301
ENV PATH=/usr/local/maven/bin:$JAVA_HOME/bin:$PATH
USER root
RUN apt-get update && apt-get install -y libltdl7

    

这里的前提是宿主机提前安装好maven和docker环境,具体安装方式这里就不详细讲述了。

启动jenkins

这里启动命令挂载了宿主机的docker,以及maven目录

docker run --name jenkins -d -v /etc/localtime:/etc/localtime:ro -v /data1/services/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /usr/local/maven:/usr/local/maven  -p 8080:8080 -p 50000:50000 --dns=8.8.8.8 jenkins

二 脚本编写

前面我们制作好了各个基础镜像,现在需要编写脚本来将镜像编译打包以及镜像生成,并推送到镜像仓库

我们有4个脚本要编写

1 jenkins pipeline的配置文件Jenkinsfile,这个是jenkins多分支流水线作业必须的配置文件

2 Dockerfile:构建应用镜像的描述文件

3 build_docker.sh:打包镜像的脚本,我们的项目通过maven打包以后,需要按一定规范存放文件,并且执行启动应用的脚本

4 start.sh项目启动的脚本,用于在镜像启动时执行

Jenkinsfile

pipeline {agent anystages {stage('package') {steps {sh 'mvn -Dmaven.test.skip=true -Dmaven.source.skip=true  -am clean package -U'}}stage('Test') {steps {sh './build_docker.sh -j smart4-api-1.0-SNAPSHOT.jar -F smart4-api'sh './build_docker.sh -j smart4-web-1.0-SNAPSHOT.jar -F smart4-web'}}}
}

   Dockerfile

FROM jdk8img
ARG jarfile
RUN rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezoneWORKDIR /data/app/smart4ENV DWPROJECTNO=smart4
ENV EXECJAR=$jarfileADD workspace /data/app/smart4EXPOSE 8081CMD ["sh","-c","shell/start.sh $EXECJAR"]

    build_docker.sh

#!/bin/bash
DOCKER_REGISTRY="harbor.udblogin.87yy.com:4443"
NAMESPACE="yygame"
BASEDIR=$(pwd)
PRONAME=`basename $BASEDIR`
DIRNAME=`dirname  $BASEDIR`
folder=`basename $DIRNAME`
dockerfile="Dockerfile"
product="test"
jarfile=""while getopts "f:F:p:j:" option
docase "$option" inf)dockerfile="$OPTARG";;F)folder="$OPTARG";;p)product="$OPTARG";;j)jarfile="$OPTARG";;\?)usageexit 1;;esac
doneecho "begin copy workspace"
rm -rf $BASEDIR/workspace
mkdir -p $BASEDIR/workspace/web
mkdir -p $BASEDIR/workspace/lib
mkdir -p $BASEDIR/workspace/shell
mkdir -p $BASEDIR/workspace/configfind . -maxdepth 4 -regex ".*/target/[^\/]*.war"  -exec cp -f {} $BASEDIR/workspace/web/ \;
find . -maxdepth 4 -regex ".*/target/[^\/]*.jar"  -exec cp -f {} $BASEDIR/workspace/lib/ \;
cp -Rf  config/* $BASEDIR/workspace/config/
cp ./start.sh $BASEDIR/workspace/shellecho "workspace is ready"echo "begin build docker"timestamp=$(date "+%Y%m%d%H%M%S")echo "build -f $dockerfile -t ${DOCKER_REGISTRY}/${NAMESPACE}/${folder}:$timestamp . --build-arg jarfile=$jarfile"docker build -f $dockerfile -t ${DOCKER_REGISTRY}/${NAMESPACE}/${folder}:$timestamp . --build-arg jarfile=$jarfileecho "docker build done"echo "start push to registry"
docker login --username=yygame harbor.udblogin.87yy.com:4443 -p xxxxxx
if [[ $product == "test" ]];thendocker push ${DOCKER_REGISTRY}/${NAMESPACE}/${folder}:$timestamp
fi
echo "folder $folder"
echo "product $product"
echo "exec jarfile $jarfile"

start.sh 

#!/bin/bash
jarfile=$1
echo "exec $jarfile"
echo "start app"
echo "java -Xss1m -server -d64 -XX:MaxGCPauseMillis=200 -Dnetworkaddress.cache.ttl=600  -Xms256m -Xmx2048m -cp /data/app/smart4/lib/$jarfile org.springframework.boot.loader.JarLauncher"
java -Xss1m -server -d64 -XX:MaxGCPauseMillis=200 -Dnetworkaddress.cache.ttl=600  -Xms256m -Xmx2048m -cp /data/app/smart4/lib/$jarfile org.springframework.boot.loader.JarLauncher

   

三 jenkins新建多分支流水线

新建任务,选择多分支流水线。主要配置git地址,凭据。配置发现分支策略,这里可以按项目代码规范来配置,比如开发版本就过滤掉,因为每次构建都会去打包生成镜像,如果不过滤会构建所有分支的镜像,比较耗时,耗费资源。配置好以后,运行构建,会自动打包并推送镜像到镜像仓库了。

四 构建

我们在jenkins后台选择smart4项目的master分支,点击构建

然后查看构建日志

待构建完成以后,去镜像仓库后台查看镜像仓库是否生成

我们看到已经生成了新的镜像了。整个流程完成。  

http://www.dtcms.com/wzjs/242380.html

相关文章:

  • dw代码做网站百度数据指数
  • 婺源做网站淘宝宝贝排名查询
  • 常州外贸集团 网站建设seo1域名查询
  • 专业网站建设制网站推广的营销策划方案
  • win10建设本地网站公司网站制作流程
  • 发布页全部页面设计seo搜索引擎优化主要做什么
  • 网站如何管理批量关键词排名查询工具
  • 怎么建设一个淘宝客网站谁知道企业网站建设方案论文
  • 什么网站做一手项目好网页制作成品
  • 河南化工厂福州排名seo公司
  • 电脑网站滚动字幕怎么做如何做线上营销
  • 做网站后端信息发布推广平台
  • 专业郑州做网站百度统计数据分析
  • 单仁网站建设成都seo正规优化
  • 广东东莞发布最新消息seo精灵
  • 网站客户端ip做爬虫技术优化seo
  • 普通网站 用多说培训心得体会300字
  • 怎样做网站网络推广专家
  • 网站设计团队百度推广400客服电话
  • python做网站好不好vi设计
  • 企业融资需求北京网站优化托管
  • 黑群晖wordpress建站抖音推广运营公司
  • 做网页价格日照网站优化公司
  • 随州网站建设有限公司设计网页
  • 上传图片做网站维护免费做网站软件
  • 免费手机h5模板网站模板下载网络代运营推广
  • 阳江网站制作建设百度快快速排名
  • 网站开发策划网页设计网站
  • 阿里云 万网 网站抖音自动推广引流app
  • 网站开发服务转包合同范本北京网络营销推广