介绍
为了提高项目迭代的速度加速交付产品给客户,我们通常会选择CICD工具来减少人力投入产生的成本,开源的工具比如有成熟的Jenkins,但是本文讲的是阿里云提高的解决方案云效平台,通过配置流水线的形式实现项目的快速部署到服务器或容器平台中
准备工作
01、编写Dockerfile文件可以根据不同的环境,新建不同的Dockerfile文件,比如Dockerfile-PROD
FROM openjdk:17.0.1-jdk
ENV LANG=C.UTF-8
ENV TZ=Asia/Shanghai
ADD target/test-service.jar app.jar
CMD ["sh","-c","java -Xmx512m -Xms256m -XX:SurvivorRatio=4 -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -jar -XX:InitiatingHeapOccupancyPercent=70 -Xlog:gc:/var/log/java_gc.log -XX:+PrintGCDetails app.jar --spring.profiles.active=prod"]
02.编写部署ack的yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-service
namespace: prod-service
labels:
app: test-service
spec:
replicas: 3
selector:
matchLabels:
app: test-service
template:
metadata:
labels:
app: test-service
spec:
containers:
- name: test-service
image: registry-vpc.cn-shanghai.aliyuncs.com/prod-acr/test-service:${IMAGE-TAG}
ports:
- containerPort: 8080
# resources:
# limits:
# cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
name: test-service
namespace: prod-service
labels:
app: test-service
spec:
selector:
app: test-service
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080
- name: https
protocol: TCP
port: 443
targetPort: 8080
type: NodePort
03.在已有的ACK集群中创建命名空间prod-service
04.在ACR中新建镜像仓库
新建流水线
在云效中新建流水线,如下图所示,主要有三个阶段,分别为拉取源代码(即配置代码仓库)、构建、部署
点击第一个阶段,如下图所示进行编辑代码源及拉取代码默认分支
点击【Java 构建Docker镜像并推送镜像仓库】进行第二个阶段的编辑
如上图所示编写构建命令:mvn -U clean package -pl order-service -am -Dmaven.test.skip=true
如下图所编辑镜像推送ACR的步骤
点击【Kubernetes 发布】进行最后一个阶段部署的操作
其中选择集群连接时,可以按照下图所示进行操作
增加变量标签用于上文中提到的拉取镜像的标签,如下图所示
以上就是所有从代码拉取到构建代码到发布镜像到ACK的过程
验证发布
点击【运行】,运行结果可通过如下图所示的流程图进行详细查看日志