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

Gitlab 之 结合 Docker 持续集成

思路:

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

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

sh:

1.打包 clone 的项目

2.创建 Dockerfile 文件生成镜像

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

4.创建 k8s 配置文件(如果没有用 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 xx.xx.xxx.xxx:xxxx/springboot .

#上传镜像
docker push xx.xx.xxx.xxx:xxxx/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: xx.xx.xxx.xxx:xxxx/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

结果:

相关文章:

  • Vue 新手学习笔记:动画效果
  • Gitlab 之 命令行提交代码到 git
  • Ant 安装,配置文件编写与使用
  • 关于 sql server 用 IDEA 一直连不上的问题
  • maven 手动导入 jar 包
  • linux下node的安装以及环境配置
  • linux 文件压缩与解压
  • Docker 上部署 Nginx
  • Vue 新手学习笔记:vue-element-admin 之入门开发教程(v4.0.0 之前)
  • Gitlab Root 密码忘记了,修改密码
  • 打开,关闭,查看端口情况
  • Vue table 点击按钮展开折叠面板
  • Vue table 表格中参数过长省略并且提示显示
  • SpringBoot 第三方 jar 包及 xml 扫描问题
  • Java redirect 后台带参重定向到另一个接口
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 5、React组件事件详解
  • Python_OOP
  • ReactNativeweexDeviceOne对比
  • spring + angular 实现导出excel
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 实现简单的正则表达式引擎
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 小试R空间处理新库sf
  • 新书推荐|Windows黑客编程技术详解
  • 中文输入法与React文本输入框的问题与解决方案
  • 仓管云——企业云erp功能有哪些?
  • 大数据全解:定义、价值及挑战
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • (差分)胡桃爱原石
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (一) storm的集群安装与配置
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ***测试-HTTP方法
  • .dwp和.webpart的区别
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net - 类的介绍
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net6使用WebSocket与前端进行通信
  • .net连接oracle数据库
  • .NET与 java通用的3DES加密解密方法
  • .net中应用SQL缓存(实例使用)
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [BJDCTF2020]The mystery of ip
  • [C#]winform部署yolov5-onnx模型
  • [C++]C++类基本语法
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包