• Rancher流水线配置文档


    一、概述

        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

  • 相关阅读:
    软件测试:Homework 3
    软件测试:Lab 1
    软件测试:Homework 2
    软件测试:Homework 1
    JAVA的回忆
    Java 操作符
    Java 笔录
    经典C#编程理解,概要,经典
    网络精灵
    签到计时
  • 原文地址:https://www.cnblogs.com/twodog/p/12135283.html
Copyright © 2020-2023  润新知