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

常熟市做网站公司seo技术优化服务

常熟市做网站公司,seo技术优化服务,建筑劳务资质代办一般多少钱,洛可可设计公司地址在企业级的架构中,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/5766.html

相关文章:

  • 广东品牌网站建设服务网站推广方案
  • 合肥做网站推荐 晨飞网络怎么创造自己的网站
  • 爱站关键词挖掘网络营销与直播电商就业前景
  • 国外网站做盗版怎么让百度搜出自己
  • 北京建网站哪家公司好自己怎么注册网站
  • 那个网站做车险分期小说推文万能关键词
  • 河北石家庄最新数据消息系统优化大师官方下载
  • 无为网站定制百度手机助手最新版下载
  • 一键制作自己的app软件关键词seo优化软件
  • 电商网站界面规范广州推动优化防控措施落地
  • 阿里巴巴怎样做网站中国万网域名注册官网
  • 网站制作和推广网络营销的八大职能
  • 网站建设 政府深圳网络营销策划
  • 如何做淘宝客独立网站成都seo技术经理
  • 如何建设wap网站外贸推广网站
  • 湖南省住房和城乡建设厅门户网站搜索引擎优化的基本内容
  • 网站是用什么做的吗合肥网站排名提升
  • 荥阳做公司网站的公司四川网站seo
  • 网站设计的流程seopeix
  • 重庆网站供奉智谋网站优化公司
  • 日产一区一区三区不卡seo长沙
  • 土巴兔这种网站怎么做百度网站排名怎么提高
  • 做自行车车队网站的名字seo专员工资待遇
  • 做网站域名自己弄广州百度网站排名优化
  • 郑州网站建设 app开发产品推销
  • 安能物流网站国际新闻今天最新消息
  • 上地网站建设淘宝关键词排名怎么查
  • 企业网站建设流程及费用地推放单平台
  • 密云青岛网站建设自己怎么做一个网页
  • crm厂商湖南专业seo公司