西虹市网
标题:
了解下:CI&CD文件介绍
[打印本页]
作者:
xubin
时间:
2022-3-7 14:37
标题:
了解下:CI&CD文件介绍
概述
DevOps相关文件主要有Dockerfile、Jenkinsfile、deployment.yaml、kustomization.yaml、settings.xml。
开源软件治理
的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!
这些文件存放在CICD代码库中。
地址:https://gitlab.corp.yatsenglobal.com/ops/yatsen-cicd-pipeline.git
代码目录结构
其作用分别为:
文件 作用 详细
Dockerfile 用于构建镜像 构建镜像必须,API等不需要部署的项目无需此文件
Jenkinsfile 用于使用Jenkins控制整个构建部署过程 此文件必须
deployment.yaml 用于在k8s集群部署应用 需要自由控制在k8s中部署的应用时,可以编写此文件
kustomization.yaml 文件声明了kustomize程序提供的自定义 提供一种可以重复使用同一套配置的声明式应用管理
settings.xml 用于在Java Maven构建过程中的Maven setting设置 Java应用编译时,需要用到
基础JAVA镜像
基础Java镜像为Java应用的基础应用,是在centos7.6镜像之上构建的,其中步骤主要有:
源镜像、环境初始化、添加字体、添加nacos退出脚本、添加ssh免密登录、修改时区、更新系统、添加Java环境。
基础Java镜像包含了除可执行Jar包及特殊配置之外的所有设置,使Java应用在下层得到统一,具体脚本如下:
FROM centos:7.6.1810
LABEL maintainer yatsen@yatsenglobal.com
COPY nacos-logout.sh /
COPY eureka-logout.sh /
COPY simsun.ttf /usr/share/fonts/myfonts/simsun.ttf
COPY ip_guard.sh ip_guard.sh
COPY id_rsa /root/.ssh/
COPY id_rsa.pub /root/.ssh/
COPY known_hosts /root/.ssh/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& rm -rf /etc/yum.repos.d/*
&& curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
&& curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/*
&& yum makecache -y
&& yum upgrade -y
&& yum install -y java-1.8.0-openjdk-devel.x86_64 iproute kde-l10n-Chinese glibc-common mkfontscale fontconfig openssh openssh-clients rsync less
&& localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
&& yum clean all
&& chmod +x ip_guard.sh
&& chmod 600 /root/.ssh/id_rsa
&& chmod 777 nacos-logout.sh eureka-logout.sh
&& cd /usr/share/fonts/myfonts
&& mkfontscale
&& mkfontdir
&& fc-cache -fv
ENV LC_ALL=zh_CN.UTF-8 TIMEZONE=GMT+8 JAVA_OPTS=CONTAINER_CORE_LIMIT=
所需文件如下
基础Nginx镜像
目前前端代码编译为静态文件后放在nginx下提供服务,所以编写了基础nginx镜像,针对前端静态代码文件提供统一的基础镜像。
基础nginx镜像来源于系统nginx镜像,并修改了时区,添加了自定义nginx.conf。具体脚本如下:
【FROM nginx:latest】 表示要制作的镜像的源镜像
RUN命令做环境初始化,修改了时区。
【COPY base/base-nginx/nginx.conf /etc/nginx/nginx.conf】为添加了自定义nginx.conf
FROM nginx:latest
LABEL maintainer sheng.zhuang@yatsenglobal.com
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
COPY base/base-nginx/nginx.conf /etc/nginx/nginx.conf
Java应用镜像:
Java应用镜像为最终可执行的镜像,来源于基础Java镜像,包含同事们辛苦编写的Java代码编译的可执行Jar包,并最终运行在k8s容器管理工具中为客户提供服务。
Java应用镜像并不是必须来源于基础Java镜像,制作基础Java镜像是为了统一环境,简化开发。
Java应用镜像具体脚本如下:
ARG BASE_IMAGE=yatsen-registry-vpc.cn-shenzhen.cr.aliyuncs.com/base/base-java:centos7.6-jdk-8
FROM ${BASE_IMAGE}
LABEL maintainer=dang.wu@yatsenglobal.com
ENV spring_profiles_active=dev spring_cloud_nacos_discovery_namespace=${NACOS_NAMESPACE} spring_cloud_nacos_config_namespace=${NACOS_NAMESPACE} NACOS_HOST=${NACOS_HOST} NACOS_PORT=${NACOS_PORT} server_port=${SERVER_PORT}
COPY mall-activity-biz/target/mall-activity-biz.jar app.jar
ENV server_name mall-activity-biz
RUN mkdir -p /releases/releases/cert/
ENTRYPOINT java ${JAVA_OPTS} -Dfile.encoding=utf-8 -Dspring.security.strategy=MODE_INHERITABLETHREADLOCAL -Djava.security.egd=file:/dev/http://www.manongjc.com/detail/urandom -XX:ActiveProcessorCount=${CONTAINER_CORE_LIMIT} -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:MinRAMPercentage=70.0 -jar app.jar --spring.profiles.active=${spring_profiles_active} --NACOS-HOST=${NACOS_HOST} --NACOS-PORT=${NACOS_PORT}
前端nginx应用镜像:
前端nginx应用镜像为可执行的nginx镜像加上前端代码及配置所构建的镜像。包含前端同事们辛苦编写的前端代码编译的静态文件,并最终运行在k8s容器管理工具中为客户提供服务。
前端镜像具体脚本如下(目前前端镜像分两次构建,后期会优化为一次构建):
ARG BASE_IMAGE=yatsen-registry-vpc.cn-shenzhen.cr.aliyuncs.com/base/nginx:latest
FROM ${BASE_IMAGE}
LABEL maintainer sheng.zhuang@yatsenglobal.com
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
COPY base/base-admin-nginx/default.conf /etc/nginx/conf.d/default.conf
RUN mkdir -p /var/log/nginx/
COPY dist/ /data/www/mall-web-admin
Jenkinsfile:
Jenkinsfile是Jenkins流水线Pipeline的构建代码脚本。将Jenkins构建任务用代码的形式进行管理和维护。下方构建权限给开发者。
Jenkinsfile常用方式将流水线分按照功能分为逻辑上的四段:流水线检查、初始化、拉取代码(Git)、编译构建(Package)、制作镜像(Build) 、部署(Deploy),如下所示:
后端:
@Library('yatsen-cicd-pipeline') _
pipeline {
agent {
kubernetes {
#在jenkins Configure Clouds中配置的名字
cloud 'kubernetes'
}
前端:
普通前端
@Library('yatsen-cicd-pipeline') _
pipeline {
agent {
kubernetes {
#在jenkins Configure Clouds中配置的名字
cloud 'kubernetes'
}
共享前端
@Library('yatsen-cicd-pipeline') _
pipeline {
agent {
kubernetes {
#在jenkins Configure Clouds中配置的名字
cloud 'kubernetes'
}
}
上述Jenkins使用的工具解析:
打包镜像并且推送镜像到镜像仓库用的命令是:
kaniko
参看文档:https://github.com/GoogleContainerTools/kaniko#using-kaniko
部署使用的命令是
kustomize
参考文档:
https://www.qikqiak.com/post/kustomize-101/
https://github.com/kubernetes-sigs/kustomize
https://kustomize.io/
原文地址:https://www.cnblogs.com/Mr-Axin/p/14744653.html
作者:
会飞的牛牛
时间:
2022-3-13 16:48
相当不错,感谢楼主无私分享精神!
作者:
非一般的男人
时间:
2022-3-21 10:14
有道理。。。
作者:
善才
时间:
2022-3-27 12:00
相当不错,感谢楼主无私分享精神!
作者:
苏强
时间:
2022-4-4 12:10
帮帮顶顶!!
作者:
青色的六月
时间:
2022-4-13 09:06
学习了,谢谢分享、、、
作者:
斯柯法
时间:
2022-4-23 20:44
学习了,谢谢分享、、、
欢迎光临 西虹市网 (http://bbs.xihong021.cn/)
Powered by Discuz! X3