gitlab 结合 docker,k8s 进行持续集成脚本编写

思路:

1.编写 .gitlab-ci.yml 文件

2.通过 yml 文件调用 sh 脚本

sh:

1.打包 clone 的项目

2.创建 Dockerfile 文件生成镜像

3.上传镜像到 docker 以便拉取镜像

4.创建 k8s 配置文件

5.删除 k8s 服务,然后启动

.gitlab-ci.yml :

stages:
- build
build-contain:
 stage: build
 script:
 - sh test.sh
 tags: 
 - test2

test.sh:

#!/bin/sh

#项目打包
mvn -Dmaven.test.skip=true package

#进入target文件夹
cd ./target

#创建Dockerfile文件
cat << EOF > Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/java-jdk/openjdk:jdk8
MAINTAINER LINJINP
VOLUME /tmp
LABEL app="test1" version="v1" by="linjinp"
COPY boot.jar boot.jar
EXPOSE 8088
CMD java -jar boot.jar
EOF

#创建镜像
docker build -t 10.10.111.117:31409/springboot .

#上传镜像
docker push 10.10.111.117:31409/springboot

#创建K8S配置文件
filename="test-1.yaml"
cat << EOF > $filename
apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
 app: test-1-depolyment
 name: test-1-depoyment
 namespace: default
spec:
 replicas: 1
 selector:
 matchLabels:
 app: test-1-depolyment
 template:
 metadata:
 labels:
 app: test-1-depolyment
 spec:
 containers:
 - name: test-1-depolyment
 image: 10.10.111.117:31409/springboot
 ports:
 - containerPort: 8080 #运行端口
 protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
 labels:
 app: test-1-depoyment
 name: test-1-depoyment
 namespace: default
spec:
 type: NodePort
 ports:
 - port: 8089 #内部开放端口
 targetPort: 8888 #项目端口
 nodePort: 32000 #外部开放端口
 selector:
 app: test-1-depoyment
EOF
#先删除服务,再启动
kubectl delete -f $filename
kubectl create -f $filename

结果:

猜你喜欢

转载自blog.csdn.net/qq_37143673/article/details/87076941