一、概述

Rancher流水线从逻辑上可以分为两部分,即CI和CD。

CI,可分化为克隆代码、代码打包、发布镜像三部分。

CD,可分为部署镜像。

二、配置

完整的流水线脚本,类似如下:

stages:
- name: build
steps:
- runScriptConfig:
image: maven:3.6.0-jdk-8-alpine
shellScript: mvn clean package
- name: push-image
steps:
- publishImageConfig:
dockerfilePath: ./Dockerfile
buildContext: .
tag: scc/hyperloop-baseapi:${CICD_EXECUTION_SEQUENCE}
pushRemote: true
registry: registry.cn-hangzhou.aliyuncs.com
- name: deploy
steps:
- applyYamlConfig:
path: ./deployment.yaml
timeout: 60

2.1克隆代码

此部分为Rancher强制默认,不可操作。

2.2代码打包

一般根据代码语言执行对应的脚本,比如java+maven是

mvn clean package

2.3发布镜像

在代码根路径下创建Dockerfile文件,内容如下:

# 基于java8
FROM openjdk:8-jdk-slim
# 切换到 /opt目录
WORKDIR /opt
# 将编译的jar拷贝的当前目录
ADD target/baseapi.jar .
# 配置启动命令(两种方式,一种是写死在dockerfile,一种是在rancher上配置,相比前者,后者更灵活)
#CMD java -Dlog.kafka.address=$kafka_address -Dlog.kafka.topic=$kafka_topic -Ddisconf.conf_server_host=$conf_server -Ddisconf.env=$Env -jar /opt/webapps/$jar_file
#CMD java -server -DlogRedisAddress=192.168.1.97 -Dpinpoint.applicationName=baseapi -Dspring.cloud.consul.enabled=true -Dspring.profiles.active=test -Xms512m -Xmx512m -jar /opt/apps/baseapi.jar

注意创建页面配置镜像版本号时,使用环境变量${CICD_EXECUTION_SEQUENCE}

2.4部署镜像

在代码根路径下创建deployment.yaml文件,内容如下:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: baseapi
namespace: myapps
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
workload.user.cattle.io/workloadselector: deployment-myapps-baseapi
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
annotations:
cattle.io/timestamp: 2019-01-08T10:18:34Z
creationTimestamp: null
labels:
workload.user.cattle.io/workloadselector: deployment-myapps-baseapi
spec:
containers:
- args:
- java
- -server
- -DlogRedisAddress=192.168.1.97
- -Dspring.cloud.consul.enabled=true
- -Dspring.profiles.active=test
- -jar
- baseapi.jar
image: ${CICD_IMAGE}:${CICD_EXECUTION_SEQUENCE}
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 9700
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 2
successThreshold: 1
timeoutSeconds: 2
name: baseapi
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 9700
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 2
successThreshold: 2
timeoutSeconds: 2
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
runAsNonRoot: false
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: ali
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30

一个快捷的方法就是先手动在Rancher上部署镜像,然后复制yml文件,最后把文件里不必要的信息剔除即可。

最后建议触发方式选择默认的手动,避免因触发导致的镜像更新引发的版本不一致问题(针对测试同学)。

转载于:https://my.oschina.net/shyloveliyi/blog/2999380

最新文章

  1. SharePoint 2013 设置网站集为”只读”
  2. C++ 用libcurl库进行http通讯网络编程
  3. fstat().stat()函数
  4. Android布局文件-错误
  5. 使用ownCloud搭建你的个人云服务(ubuntu 14.04 server)(ownCloud对文件不切片,Seafile对文件切片),owncloud没有存储的功能 只能同步 本地删除了服务器也会删除
  6. dp优化
  7. 【二叉树->链表】二叉树结构转双向线性链表结构(先序遍历)
  8. 【免费讲座IX算法第一阶段】转专业找CS工作“打狗棒法”
  9. Assembly
  10. LeetCode 650 - 2 Keys Keyboard
  11. Java历程-初学篇 Day07 循环结构2 for循环
  12. JavaScript基本知识点整理(超实用)
  13. 重构SP5中声明自定义扩展类为API调用
  14. jquery, jquery-ui, requirejs, bootstrap 的关系理解
  15. PHP设计模式系列 - 中介者模式
  16. Leetcode题库——26.删除排序数组中的重复项
  17. JS获取当前时间并格式化"yyyy-MM-dd HH:mm:ss"
  18. vscode 配置import @ 路径提示及代码智提
  19. LVS+keeplived+nginx+tomcat高可用、高性能jsp集群
  20. 解析C#彩色图像灰度化算法的实现代码详解

热门文章

  1. Emergency Evacuation(最短下车时间)———(思维)
  2. preg_replace突然感觉好强大啊
  3. orm层面的删除的注意事项
  4. CSS躬行记(5)——渐变
  5. springboot web项目创建及自动配置分析(thymeleaf+flyway)
  6. 一、Python3.8的安装
  7. 在Sping的配置文件中,关于dataSource的配置,就我们常用的方法大致可以有三种:
  8. 【python实现卷积神经网络】Flatten层实现
  9. AJ学IOS 之小知识之xcode6自动提示图片插件 KSImageNamed的安装
  10. AJ学IOS(01) UI之Hello World与加法计算器